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);
            }
        }