private void resultados(List <DijkstraObject> listaDijkstra, Node inicial) { foreach (DijkstraObject dijkstraObj in listaDijkstra) { if (dijkstraObj.getPeso() != 1000000000 && dijkstraObj.getPeso() != 0) { //origen, destino, peso, recorrido string recorrido = ""; string agregar = ""; DijkstraObject proveniente = dijkstraObj; string[] arrString = new string[4]; arrString[0] = inicial.getCity().getName(); arrString[1] = dijkstraObj.getNodo().getCity().getName(); arrString[2] = dijkstraObj.getPeso().ToString(); while (proveniente.getNodo() != inicial) { agregar = proveniente.getNodo().getCity().getName(); recorrido += agregar; recorrido += "<-"; //recorrido.Insert(0, agregar); //recorrido.Insert(0, "->"); proveniente = proveniente.getProveniente(); } recorrido += inicial.getCity().getName(); arrString[3] = recorrido; ListViewItem items = new ListViewItem(arrString); listViewDijkstra.Items.Add(items); } } }
private DijkstraObject getProveniente(List <DijkstraObject> listaDijkstra, Node seleccionado) { foreach (DijkstraObject dijkstraObj in listaDijkstra) { if (dijkstraObj.getNodo() == seleccionado) { return(dijkstraObj); } } DijkstraObject nulo = new DijkstraObject(); return(nulo); }
private void iniciaListaDijkstra(List <DijkstraObject> listaDijkstra, Node inicial) { foreach (Node node in graph.getNodeList()) { DijkstraObject dijkstraObject = new DijkstraObject(); dijkstraObject.setNodo(node); if (node == inicial) { dijkstraObject.setPeso(0); dijkstraObject.setDefinitivo(true); } listaDijkstra.Add(dijkstraObject); } }
private void actualizaPeso(List <DijkstraObject> listaDijkstra, Node selec, Graph grafo, int pesoAct, int op) { DijkstraObject proveniente = getProveniente(listaDijkstra, selec); foreach (Node node in grafo.getNodeList()) { if (node == selec) { foreach (Adjacent adj in node.getAdjacentList()) { foreach (DijkstraObject dijkstraObj in listaDijkstra) { if (dijkstraObj.getNodo() == selec) { proveniente = dijkstraObj; } if (!dijkstraObj.getDefinitivo()) { if (dijkstraObj.getNodo() == adj.getNode()) { if (op == 1) { if ((pesoAct + adj.getTime()) < dijkstraObj.getPeso()) { dijkstraObj.setPeso((pesoAct + adj.getTime())); dijkstraObj.setProveniente(proveniente); } } else if (op == 2) { if ((pesoAct + adj.getCost()) < dijkstraObj.getPeso()) { dijkstraObj.setPeso((pesoAct + adj.getCost())); dijkstraObj.setProveniente(proveniente); } } } } } } } } }
private void resultados(List <DijkstraObject> listaDijkstra, Node inicial, string final) { foreach (DijkstraObject dijkstraObj in listaDijkstra) { if (dijkstraObj.getPeso() != 1000000000 && dijkstraObj.getPeso() != 0) { //origen, destino, peso, recorrido string recorrido = ""; string agregar = ""; DijkstraObject proveniente = dijkstraObj; string[] arrString = new string[4]; arrString[0] = inicial.getCity().getName(); arrString[1] = dijkstraObj.getNodo().getCity().getName(); arrString[2] = dijkstraObj.getPeso().ToString(); while (proveniente.getNodo() != inicial) { agregar = proveniente.getNodo().getCity().getName(); recorrido += agregar; recorrido += "<-"; proveniente = proveniente.getProveniente(); } recorrido += inicial.getCity().getName(); arrString[3] = recorrido; ListViewItem items = new ListViewItem(arrString); if (recorrido.Contains(final)) { listViewDijkstra.Items.Add(items); recorridoOD = recorrido; break; } } } if (listViewDijkstra.Items.Count == 0) { MessageBox.Show("No existe ruta", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
public void setProveniente(DijkstraObject proveniente) { this.proveniente = proveniente; }