public NodoCosto ObtenerVecinoMenorCosto(string estado, int acum, List <string> explorados) { List <NodoCosto> costos = getVecinosCosto(estado, acum, explorados); NodoCosto minimo = new NodoCosto(); minimo.Costo = costos[0].Costo; foreach (var costo in costos) { if (costo.Costo < minimo.Costo) { minimo = costo; } } return(minimo); }
public string BusquedaHeuristica(string eOrigen, string eDestino, Grafoheurustico grafo) { List <string> conocidos = new List <string>(); List <Nodoh> vecinos = new List <Nodoh>(); string direccion = ""; // Direcciones int costoAcum = 0; // Acumula el costo de camino string solucion = ""; int costoCamino = 0; string nodo = eOrigen;// Origen direccion = nodo; if (nodo == eDestino) { solucion = direccion + nodo; } else { do { vecinos = grafo.ObtenerVecinos(nodo, conocidos);//sin explorar foreach (var vecino in vecinos) { if (vecino.Estado == eDestino) { solucion += direccion + "," + vecino.Estado + "\nCosto: " + costoCamino.ToString(); break; } } if (solucion == "") { NodoCosto menor = grafo.ObtenerVecinoMenorCosto(nodo, costoAcum, conocidos); costoAcum += menor.ArcCosto; direccion += "," + menor.Nodo; conocidos.Add(nodo); costoCamino = menor.Costo; nodo = menor.Nodo; vecinos = grafo.ObtenerVecinos(nodo, conocidos); } }while (solucion == ""); } return(solucion); }