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 ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
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 />
//////////////////////////////////////////////////////////////////////////////////////<br />
//se_agrega_"el_mejor"_al_arbol///////////////////////////////////////////////////////<br />
//////////////////////////////////////////////////////////////////////////////////////<br />
No<strong>de</strong> *ndBC = no<strong>de</strong>Of(elmejor);<br />
//printf("El MEJOR <strong>en</strong> esta ronda = %d\n", elmejor);<br />
No<strong>de</strong> *fromBCNd = no<strong>de</strong>Of(fromBC);<br />
//printf("DESDE = %d <strong>en</strong> el Arbol parcial\n", fromBC);<br />
Entra1 = new No<strong>de</strong>ListEntry;<br />
Entra1->no<strong>de</strong>Ptr(ndBC);<br />
Entra1->next(Entra0);<br />
Entra0 = Entra1; //Entra0 es ahora la <strong>en</strong>trada reci<strong>en</strong> agegada<br />
UltEntra = Entra0; //UltEntra es ahora la ultima <strong>en</strong>trada <strong>en</strong> la lista <strong>en</strong>lazada<br />
CostAdy = 0;<br />
ndBC->addRoutingEntry(addr, source); //<strong>de</strong>fine al mejor nodo <strong>de</strong> esta ronda como una<br />
<strong>en</strong>trada a la tabla <strong>de</strong> ruta <strong>de</strong>l arbol<br />
//update the link cost: dado que el mejor fue agregado a la ruta <strong>de</strong>l arbol<br />
Adjac<strong>en</strong>cyListEntry *adja = fromBCNd->adjac<strong>en</strong>tNo<strong>de</strong>s();<br />
while (adja->no<strong>de</strong>Ptr() != ndBC) adja = adja->next();<br />
if (adja == NULL)<br />
assert(0);<br />
double wght = adja->peak() + pk;<br />
adja->peak(wght); //ocupa el link reci<strong>en</strong> agregado con el ancho <strong>de</strong> banda <strong>de</strong> la<br />
fu<strong>en</strong>te<br />
double average = adja->average() + avg;<br />
adja->average(average);<br />
//and add it to the routing table<br />
//agrega al mejor adyac<strong>en</strong>te a la tabla <strong>de</strong> ruta <strong>de</strong>s<strong>de</strong> fromBC<br />
fromBCNd->addChild(addr, source, ndBC);<br />
//////////////////////////////////////////////////////////////////////////////////////<br />
////////fin_agregar_mejor_nodo_adyac<strong>en</strong>te//////////////////////////////////////////////<br />
//////////////////////////////////////////////////////////////////////////////////////<br />
//si "el mejor" es un <strong>de</strong>stino, se marca este <strong>de</strong>stino como agregado al Arbol<br />
//e increm<strong>en</strong>ta contador <strong>de</strong> miembros <strong>en</strong> el arbol<br />
if ((flagDestin[elmejor]) == 1) {<br />
pAgreg[elmejor] = 1;<br />
//printf("DESTINO ---> %d %d