Beispiel #1
0
        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);
        }
Beispiel #2
0
 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("");
 }
Beispiel #3
0
 private DijkstraElement buscarElementoDijkstra(List <DijkstraElement> VD, Ady a)
 {
     //DE = DijkstraElement
     return(VD.Find(DE => DE.getNode().getCiudad().getName().Equals(a.getNodo().getCiudad().getName())));
 }