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.

nLinkCount ++;<br />

avgLkCost += adjac->peak();<br />

adjac = adjac->next();<br />

};<br />

if (fn == AVERAGE) {<br />

*(CostMatrixBC + (i * num) + j) = adjac->average();<br />

nLinkCount ++;<br />

avgLkCost += adjac->average();<br />

adjac = adjac->next();<br />

};<br />

break;<br />

case ALCANCE:<br />

*(CostMatrixBC + (i * num) + j) = adjac-><strong>de</strong>lay();<br />

nLinkCount ++;<br />

avgLkCost += adjac-><strong>de</strong>lay();<br />

adjac = adjac->next();<br />

break;<br />

case SALTOS:<br />

*(CostMatrixBC + (i * num) + j) = 1;<br />

nLinkCount ++;<br />

avgLkCost += 1;<br />

adjac = adjac->next();<br />

break;<br />

case DISTVIRTUAL:<br />

*(CostMatrixBC + (i * num) + j) = 1;<br />

nLinkCount ++;<br />

avgLkCost += adjac->peak();<br />

adjac = adjac->next();<br />

break;<br />

}; //fin case heurisitca<br />

};<br />

tmpp = tmpp->next();<br />

};<br />

assert(nLinkCount);<br />

avgLkCost = (double)avgLkCost / nLinkCount;<br />

//Fin costo promedio y ll<strong>en</strong>ado matriz <strong>de</strong> costos <strong>de</strong> <strong>en</strong>lace<br />

////////// Se computa el arbol <strong>de</strong> minimo costo con Dijkstra<br />

*(CostLCMatrix + fu<strong>en</strong>teDKS) = 0; //dijkstra <strong>de</strong>s<strong>de</strong> fu<strong>en</strong>teDKS<br />

//= adyac<strong>en</strong>te <strong>de</strong>l arbol parcial<br />

evaluandoce<br />

//printf("ADJ evaluandose : %d <strong>de</strong>s<strong>de</strong> : %d\n", fu<strong>en</strong>teDKS, Entra0->no<strong>de</strong>Ptr()-<br />

>name());<br />

int numOnTreeGroupMembers = 0;<br />

double minCost;<br />

int min, u, v;<br />

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

// El loop <strong>de</strong>l for se ejecuta exactam<strong>en</strong>te |V| veces;<br />

// Extrae el nodo con el minimo costo<br />

//En la primera iteracion parte <strong>de</strong> fu<strong>en</strong>teDKS (porque ti<strong>en</strong>e costo cero)<br />

minCost = DBL_MAX;<br />

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

if (pVisitedBC[u] == 0) { //UNVISITED<br />

if (CostLCMatrix[u] < minCost) {<br />

minCost = CostLCMatrix[u];<br />

min = u;<br />

};<br />

};<br />

};<br />

u = min;<br />

pVisitedBC[u] = 1; //VISITED<br />

if (flagDestin2[u] == 1) numOnTreeGroupMembers ++;<br />

if (numOnTreeGroupMembers == group->count()) break;<br />

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

if (pVisitedBC[v] == 0) { //UNVISITED<br />

if (CostLCMatrix[v] > CostLCMatrix[u] + CostMatrixBC[u *<br />

num + v]) {<br />

No<strong>de</strong> *ndd = no<strong>de</strong>Of(v);<br />

107

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

Saved successfully!

Ooh no, something went wrong!