public List <DijkstraElement> dijkstra(int opc, char origin, char destiny) { //vector dijkstra var VD = inicialzaVectorDijkstra(); // arbol de expansion minimo var AEM = new List <DijkstraElement>(); VD.Find(DE => DE.getNode().getCiudad().getName().Equals(origin)).setIsDefinitive(true); // nodo inicial //var n = listaNodos.Find( nodo => nodo.getCiudad().getName().Equals(origin)); var n = VD.Find(DE => DE.getNode().getCiudad().getName().Equals(origin)); // peso var p = 0; while (!allDefinitives(VD)) { actualizarPesos(ref VD, n.getNode(), p, opc); //var definitivo = sigDefinitivo(VD); n = sigDefinitivo(VD); n.setIsDefinitive(true); Console.WriteLine("Nodo: " + n.getNode().getCiudad().getName() + " Peso " + n.getWeigth()); p = n.getWeigth(); AEM.Add(n); // Descomentar para hacer que dijkstra se detenga en el destino //if (n.getNode().getCiudad().getName().Equals(destiny)) //{ // break; //} } /* * foreach(var ED in VD) * { * if(ED.getComming() != null) * { * * Console.Write(ED.getNode().getCiudad().getName() + " <- "); * Console.Write(ED.getComming().getCiudad().getName() + "\t"); * Console.Write(ED.getWeigth() + "\n"); * } * } */ makeARM(AEM, origin); return(AEM); }
public string makeARM(List <DijkstraElement> AEM, char origin) { for (int i = 0; i < AEM.Count; i++) { Console.Write(AEM[i].getNode().getCiudad().getName() + " <- "); if (AEM[i].getComming() != null) { var current = AEM[i].getComming(); while (current != null) { var data = AEM.Find(DE => DE.getNode().getCiudad().getName().Equals(current.getCiudad().getName())); Console.Write(current.getCiudad().getName() + " <- "); current = null; if (data != null) { current = data.getComming(); } } } Console.Write(AEM[i].getWeigth() + "\n"); } return(""); }
private DijkstraElement buscarElementoDijkstra(List <DijkstraElement> VD, Ady a) { //DE = DijkstraElement return(VD.Find(DE => DE.getNode().getCiudad().getName().Equals(a.getNodo().getCiudad().getName()))); }