示例#1
0
        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);
                }
            }
        }
示例#2
0
        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);
        }
示例#3
0
 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);
     }
 }
示例#4
0
        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);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
示例#5
0
        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;
 }