private void generarDijkstra() { bool bandera = true; while (bandera) { ElementoDijkstra e = seleccionaVD(); e.setDefinitivo(); pesoDefi = e.getPeso(); actualizarPesos(e); bandera = checarBandera(); } }
private void actualizarPesos(ElementoDijkstra e) { Nodo nID = e.getn(); for (int i = 0; i < nID.getListaAdyacencia().Count(); i++) { Nodo nAdy = nID.getAdy(i).getNodo(); if (nAdy.getElementoD().getDefinitivo() == false) { int indexAdy = g.getListaNodos().IndexOf(nAdy); if (nID.getAdy(i).getPonderacionCosto() + pesoDefi < vD[indexAdy].getPeso()) { vD[indexAdy].setProveniente(nID, nID.getAdy(i).getPonderacionCosto() + pesoDefi); } } } }
private ElementoDijkstra seleccionaVD() { ElementoDijkstra posible = vD[0]; int pesoM = infinito; foreach (ElementoDijkstra e in vD) { if (e.getDefinitivo() == false) { if (e.getPeso() < pesoM) { pesoM = e.getPeso(); posible = e; } } } return(posible); }
private void resFinal() { for (int i = 0; i < vD.Count(); i++) { if (vD[i].getPeso() != infinito) { string nueFinal = Convert.ToString(vD[i].getPeso()) + "<-" + vD[i].getn().getCiudad().getNom(); ElementoDijkstra x = vD[i]; while (x.getProveniente() != null) { for (int k = 0; k < vD.Count(); k++) { if (x.getProveniente() == vD[k].getn()) { nueFinal += "<-" + vD[k].getn().getCiudad().getNom(); x = vD[k]; break; } } } vDFinal.Add(nueFinal); } } }