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

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

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

Saved successfully!

Ooh no, something went wrong!