Professional Documents
Culture Documents
DJK
DJK
if(permanente != nfinal){
jPanel1.paint(jPanel1.getGraphics());
R_repaint(tope, arbol);
Pintar.clickSobreNodo(jPanel1.getGraphics(),
arbol.getCordeX(permanente), arbol.getCordeY(permanente), null,Color.GREEN); //
pinta de color GREEN los nodos
nodo[permanente].setVisitado(true);
nodo[permanente].setNombre(permanente);
do{
subAcomulado=0;
auxAumulado = Integer.MAX_VALUE; // lo igualamos a esta cifra ya q el
acomulado de los nodos, supuestamente nunca sera mayor
nodo[permanente].setEtiqueta(true);
for (int j = 0; j < tope; j++) {
if(arbol.getmAdyacencia(j, permanente)==1){
subAcomulado= nodo[permanente].getAcumulado()
+arbol.getmCoeficiente(j, permanente);
if(subAcomulado <= nodo[j].getAcumulado() &&
nodo[j].isVisitado()==true && nodo[j].isEtiqueta()== false){
nodo[j].setAcumulado(subAcomulado);
nodo[j].setVisitado(true);
nodo[j].setNombre(j);
nodo[j].setPredecesor(nodo[permanente]);
}
else if( nodo[j].isVisitado()==false){
nodo[j].setAcumulado(subAcomulado);
nodo[j].setVisitado(true);
nodo[j].setNombre(j);
nodo[j].setPredecesor(nodo[permanente]);
}
}
}
for (int i = 0; i <tope; i++) { // buscamos cual de los nodos
visitado tiene el acomulado menor par escogerlo como permanente
if(nodo[i].isVisitado()== true && nodo[i].isEtiqueta()== false){
if(nodo[i].getAcumulado()<=auxAumulado){
permanente= nodo[i].getNombre();
auxAumulado= nodo[i].getAcumulado();
}
}
}
subTope++;
}while(subTope<tope+1);
auxi= nodo[nfinal];
if(auxi.getPredecesor() == null )
JOptionPane.showMessageDialog(null,"No se Pudo LLegar Al Nodo
"+nfinal);
while(auxi.getPredecesor() != null){
Pintar.pintarCamino(jPanel1.getGraphics(),
arbol.getCordeX(auxi.getNombre()), arbol.getCordeY(auxi.getNombre()),
arbol.getCordeX(auxi.getPredecesor().getNombre()),
arbol.getCordeY(auxi.getPredecesor().getNombre()),Color.GREEN);
Pintar.clickSobreNodo(jPanel1.getGraphics(),
arbol.getCordeX(auxi.getNombre()), arbol.getCordeY(auxi.getNombre()),
null,Color.GREEN);
auxi=auxi.getPredecesor();
}
Pintar.clickSobreNodo(jPanel1.getGraphics(), arbol.getCordeX(nfinal),
arbol.getCordeY(nfinal), null,Color.GREEN);
}
else Pintar.clickSobreNodo(jPanel1.getGraphics(), arbol.getCordeX(nfinal),
arbol.getCordeY(nfinal), null,Color.GREEN);
}