public List <Arista> generarCamino(Vertice objetivo) { caminoString = ""; List <Arista> camino = new List <Arista>(); ElementoDijkstra aux = candidatos[objetivo.getID() - 1]; while (aux.getActual().getID() != origen.getID()) { if (aux.getActual() == null || aux.getProveniente() == null) { camino.Clear(); return(camino); } camino.Add(encontrarVertice(aux.getActual(), aux.getProveniente())); aux = candidatos[aux.getProveniente().getID() - 1]; } camino.Reverse(); for (int i = 0; i < camino.Count; i++) { caminoString += camino[i].getOrigen().getID() + " ->"; } caminoString += " " + objetivo.getID(); return(camino); }
private Arista encontrarVertice(Vertice v_1, Vertice v_2) { for (int i = 0; i < v_2.getLista().Count; i++) { if (v_1.getID() == v_2.getLista()[i].getDestino().getID()) { return(v_2.getLista()[i]); } } MessageBox.Show("Regresando null"); return(null); }
public Dijkstra(Grafo grafo, Vertice origen) { this.grafo = grafo; this.origen = origen; candidatos = new List <ElementoDijkstra>(); infinito = sumarValores(); caminoString = ""; for (int i = 0; i < grafo.getVertices().Count; i++) { ElementoDijkstra dks; if (i != origen.getID() - 1) { dks = new ElementoDijkstra(infinito, grafo.getVertices()[i]); } else { dks = new ElementoDijkstra(0, origen, grafo.getVertices()[i]); } candidatos.Add(dks); } }