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 ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
fu<strong>en</strong>teDKS<br />
suma = (1 + 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 />
case DISTVIRTUAL:<br />
suma = adjace->peak()*(1 + CostLCMatrix[vv]);<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 />
}; //fin case heuristica<br />
};<br />
//printf("Contribucion parcial = %.5e\n", Contribucion[fu<strong>en</strong>teDKS]);<br />
};<br />
////Fin Asignacion //////<br />
//Borrado Memoria<br />
/*<br />
<strong>de</strong>lete [] <strong>de</strong>s<strong>de</strong>;<br />
<strong>de</strong>lete [] CostMatrixBC;<br />
<strong>de</strong>lete [] flagDestin2;<br />
<strong>de</strong>lete [] CostLCMatrix;<br />
<strong>de</strong>lete [] pVisitedBC;<br />
*/<br />
////////////////////////////////////FIN--DIJKSTRA--A--ADJ////////////////////////////<br />
CostAdj[adj->no<strong>de</strong>Ptr()->name()] = Contribucion[fu<strong>en</strong>teDKS];<br />
//printf("Contribucion <strong>de</strong> ADJ: %d = %.5e \n", fu<strong>en</strong>teDKS,<br />
Contribucion[fu<strong>en</strong>teDKS]);<br />
//printf("Mayor Aporte hasta este Mom<strong>en</strong>to -> %.4e // y //<br />
Contribucion <strong>de</strong> %d evaluandose ahora -> %.4e\n", CostAdy, adj->no<strong>de</strong>Ptr()->name(),<br />
CostAdj[adj->no<strong>de</strong>Ptr()->name()]);<br />
if (CostAdy no<strong>de</strong>Ptr()->name()]) {<br />
//se manti<strong>en</strong>e la mayor contribucion <strong>en</strong> CostAdy<br />
CostAdy = CostAdj[adj->no<strong>de</strong>Ptr()->name()];<br />
elmejor = adj->no<strong>de</strong>Ptr()->name(); //e.d. qui<strong>en</strong> va si<strong>en</strong>do<br />
"el mejor"<br />
fromBC = Entra0->no<strong>de</strong>Ptr()->name(); // <strong>de</strong> don<strong>de</strong> vi<strong>en</strong>e el<br />
adyac<strong>en</strong>te "mejor"<br />
//printf("RESUMEN: Desce %d al Mejor Parcial %d >><br />
CONTRIBUCION(%d) = %.5e \n", fromBC, elmejor, elmejor, CostAdy);<br />
};<br />
//if ((adj->next()) == NULL) break;<br />
adj=adj->next();<br />
}<br />
else return(9999); //Esto no <strong>de</strong>biera pasar<br />
}; //<strong>en</strong>d loop [while] <strong>de</strong> todos los adyac<strong>en</strong>tes a cada miembro <strong>de</strong>l arbol parcial<br />
Entra0 = Entra0 -> next();<br />
//if (Entra0->next()==NULL) break;<br />
} while (Entra0 != NULL); //<strong>en</strong>d loop [do] <strong>de</strong> todos los miembros <strong>de</strong>l arbol parcial<br />
//Una vez elegido el nodo adyac<strong>en</strong>te que mejor contribuye a la expacion <strong>de</strong>l arbol<br />
parcial<br />
//se agrega tal nodo al arbol<br />
Entra0 = UltEntra; //para recorrer la lista <strong>de</strong>s<strong>de</strong> la ultima <strong>en</strong>trada <strong>de</strong> el mejor<br />
nodo adj al arbol parcial<br />
////////////////////PREVIENE CREACION DE ARBOL CON ENLACES SATURADOS //////////////<br />
if ( CostAdj[elmejor] == 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 />
110