示例#1
0
        //----------------------------------------------------------------------------------------------//
        public List <String> AEstrella(Nodo nodoInicio, Nodo nodoFinal)
        {
            ObjetoCamino objetoPivote = null;

            Console.WriteLine(listaRecorrido.Count);
            MeteVecinosOrig(nodoInicio);

            while (true)
            {
                objetoPivote = listaRecorrido[0];
                foreach (ObjetoCamino obj in listaRecorrido)
                {
                    if (obj.value < objetoPivote.value)
                    {
                        objetoPivote = obj;
                    }
                }
                if (objetoPivote.nombre == nodoFinal.Nombre)
                {
                    objetoPivote.ruta.Add(nodoFinal.Nombre);
                    foreach (string nodo in objetoPivote.ruta)
                    {
                        Console.Write(nodo + "-");
                    }
                    return(objetoPivote.ruta);
                }
                listaRecorrido.Remove(objetoPivote);
                MeteVecinosEnLista(objetoPivote);
            }
        }
示例#2
0
        public void MeteVecinosOrig(Nodo nodo)
        {
            ObjetoCamino temp = null;

            foreach (Arista arista in nodo.Aristas)
            {
                temp        = new ObjetoCamino();
                temp.nombre = arista.destino.Nombre;
                temp.value  = arista.peso + Heuristica[arista.destino.Nombre];
                temp.ruta.Add(arista.partida.Nombre);
                listaRecorrido.Add(temp);
            }
        }
示例#3
0
        public void MeteVecinosEnLista(ObjetoCamino ObjCamino)
        {
            ObjetoCamino temp = null;

            foreach (Arista arista in BuscaNodo(ObjCamino.nombre).Aristas)
            {
                temp        = new ObjetoCamino();
                temp.nombre = arista.destino.Nombre;
                temp.value  = arista.peso + Heuristica[arista.destino.Nombre] + ObjCamino.value;
                temp.ruta.AddRange(ObjCamino.ruta);
                temp.ruta.Add(arista.partida.Nombre);
                listaRecorrido.Add(temp);
            }
        }