コード例 #1
0
        private void generarDijkstra()
        {
            bool bandera = true;

            while (bandera)
            {
                ElementoDijkstra e = seleccionaVD();
                e.setDefinitivo();
                pesoDefi = e.getPeso();
                actualizarPesos(e);
                bandera = checarBandera();
            }
        }
コード例 #2
0
        private void actualizarPesos(ElementoDijkstra e)
        {
            Nodo nID = e.getn();

            for (int i = 0; i < nID.getListaAdyacencia().Count(); i++)
            {
                Nodo nAdy = nID.getAdy(i).getNodo();
                if (nAdy.getElementoD().getDefinitivo() == false)
                {
                    int indexAdy = g.getListaNodos().IndexOf(nAdy);
                    if (nID.getAdy(i).getPonderacionCosto() + pesoDefi < vD[indexAdy].getPeso())
                    {
                        vD[indexAdy].setProveniente(nID, nID.getAdy(i).getPonderacionCosto() + pesoDefi);
                    }
                }
            }
        }
コード例 #3
0
        private ElementoDijkstra seleccionaVD()
        {
            ElementoDijkstra posible = vD[0];
            int pesoM = infinito;

            foreach (ElementoDijkstra e in vD)
            {
                if (e.getDefinitivo() == false)
                {
                    if (e.getPeso() < pesoM)
                    {
                        pesoM   = e.getPeso();
                        posible = e;
                    }
                }
            }
            return(posible);
        }
コード例 #4
0
 private void resFinal()
 {
     for (int i = 0; i < vD.Count(); i++)
     {
         if (vD[i].getPeso() != infinito)
         {
             string           nueFinal = Convert.ToString(vD[i].getPeso()) + "<-" + vD[i].getn().getCiudad().getNom();
             ElementoDijkstra x        = vD[i];
             while (x.getProveniente() != null)
             {
                 for (int k = 0; k < vD.Count(); k++)
                 {
                     if (x.getProveniente() == vD[k].getn())
                     {
                         nueFinal += "<-" + vD[k].getn().getCiudad().getNom();
                         x         = vD[k];
                         break;
                     }
                 }
             }
             vDFinal.Add(nueFinal);
         }
     }
 }