11.05.2013 Views

Evaluación de Algoritmos de Ruteamiento Multipunto en Redes de ...

Evaluación de Algoritmos de Ruteamiento Multipunto en Redes de ...

Evaluación de Algoritmos de Ruteamiento Multipunto en Redes de ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

FIN/////////CASO ALCANCE//////////////// (Steiner restringido a retardo)<br />

///////////////////Fin Dijkstra /////////////////////////////<br />

//Asignacion <strong>de</strong> Contribucion <strong>de</strong>l nodo Adjac<strong>en</strong>te evaluandose /////<br />

Contribucion[fu<strong>en</strong>teDKS] = 0.0;<br />

double m<strong>en</strong>or<strong>de</strong>lay = DBL_MAX;<br />

double factor2 = 0.0;<br />

//printf("ADJ <strong>en</strong> asignacion <strong>de</strong> contribucion = %d\n", adj->no<strong>de</strong>Ptr()->name());<br />

//fu<strong>en</strong>te DKS<br />

for (int vv = 0; vv < num; vv ++) {<br />

if (flagDestin2[vv] == 1) {<br />

(padre fu<strong>en</strong>teDKS)<br />

//adjace = fu<strong>en</strong>teDKS<br />

miembros<br />

al miembro con m<strong>en</strong>or retardo<br />

los nodos <strong>de</strong>l arbol<br />

contribucion<br />

miembros (medido <strong>en</strong> saltos)<br />

//test para succ 22 <strong>de</strong> spt 03<br />

if (CostLCMatrix[vv] >= DBL_MAX) {<br />

if (pAgreg != NULL) <strong>de</strong>lete [] pAgreg;<br />

//if (Entra0 != NULL) <strong>de</strong>lete [] Entra0;<br />

//if (Entra1 != NULL) <strong>de</strong>lete [] Entra1;<br />

//if (UltEntra != NULL) <strong>de</strong>lete [] UltEntra;<br />

if (flagDestin != NULL) <strong>de</strong>lete [] flagDestin;<br />

if (CostAdj != NULL) <strong>de</strong>lete [] CostAdj;<br />

//if (Contribucion != NULL) <strong>de</strong>lete [] Contribucion;<br />

if (<strong>de</strong>s<strong>de</strong> != NULL) <strong>de</strong>lete [] <strong>de</strong>s<strong>de</strong>;<br />

if (CostMatrixBC != NULL) <strong>de</strong>lete [] CostMatrixBC;<br />

if (flagDestin2 != NULL) <strong>de</strong>lete [] flagDestin2;<br />

if (CostLCMatrix != NULL) <strong>de</strong>lete [] CostLCMatrix;<br />

if (pVisitedBC != NULL) <strong>de</strong>lete [] pVisitedBC;<br />

return(LINKSAT);<br />

}<br />

ArbolParcialId = Entra0->no<strong>de</strong>Ptr()->name(); //<strong>de</strong>s<strong>de</strong> Arb. parc.<br />

AdjEvalId = adj->no<strong>de</strong>Ptr()->name(); //fu<strong>en</strong>teDKS<br />

No<strong>de</strong> *AdjEval = no<strong>de</strong>Of(AdjEvalId);<br />

No<strong>de</strong> *<strong>de</strong>ArbolParcial = no<strong>de</strong>Of(ArbolParcialId);<br />

Adjac<strong>en</strong>cyListEntry *adjace = <strong>de</strong>ArbolParcial->adjac<strong>en</strong>tNo<strong>de</strong>s();<br />

while (adjace->no<strong>de</strong>Ptr() != AdjEval) adjace = adjace->next();<br />

switch (heuristica) {<br />

//<strong>en</strong>lace que mejor contribuye a acercar a todos los<br />

//(medido <strong>en</strong> costo <strong>de</strong>l <strong>en</strong>lace = BW ocupado)<br />

case ANCHOBANDA:<br />

suma = adjace->peak() + CostLCMatrix[vv]; //fu<strong>en</strong>teDKS<br />

//printf("Aporte [%d] = %.5e\n", vv, suma);<br />

invsuma = 1/suma;<br />

//printf("Invsuma = %.5e\n", invsuma);<br />

Contribucion[fu<strong>en</strong>teDKS] += invsuma;<br />

break;<br />

//Esrategia Greeddy MinDelay{miembros}, agrega primero<br />

//es util <strong>en</strong> caso <strong>de</strong> requerir info rapida <strong>de</strong>s<strong>de</strong> todos<br />

case ALCANCE:<br />

suma = adjace-><strong>de</strong>lay() + CostLCMatrix[vv]; //fu<strong>en</strong>teDKS<br />

//printf("Aporte [%d] = %.5e\n", vv, suma);<br />

if ( m<strong>en</strong>or<strong>de</strong>lay >= suma) {<br />

m<strong>en</strong>or<strong>de</strong>lay = suma;<br />

invsuma = 1/suma; //m<strong>en</strong>or <strong>de</strong>lay -> mayor<br />

//printf("Invsuma = %.5e\n", invsuma);<br />

Contribucion[fu<strong>en</strong>teDKS] = invsuma;<br />

}<br />

break;<br />

//<strong>en</strong>lace que mejor contribuye a acercar a todos los<br />

case SALTOS:<br />

109

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!