예제 #1
0
        public int[,] construyeC()
        {
            int[,] c = new int[n, n];

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    if (i == j)
                    {
                        c[i, j] = 0;
                    }
                    else
                    {
                        c[i, j] = INFINITO;
                    }
                }
            }

            foreach (CArista a in G.getListaAristas())
            {
                c[V.IndexOf(G.buscaNodoVertice(a.getVOrigen())), V.IndexOf(G.buscaNodoVertice(a.getVDestino()))] = a.getPeso();
            }

            return(c);
        }
예제 #2
0
        //Submenu Algoritmos para Digrafos
        private void dijkstraToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (grafos != null && grafo_activo != null && grafo_activo.getTipo() == DIRIGIDO && grafo_activo.getNumeroAristas() > 0)
            {
                if (!grafo_activo.tienePeso())
                {
                    DAddPeso dap = new DAddPeso(grafo_activo.getListaAristas());
                    grafo_activo.showHideIdAristas(true, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]);
                    if (dap.ShowDialog() == DialogResult.OK)
                    {
                        grafo_activo.setPesos(dap.getPesos());
                        grafo_activo.showHideIdAristas(false, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]);
                        grafo_activo.showHidePesos(true, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]);
                        DPideVert pdv = new DPideVert(grafo_activo.getNumeroVertices());
                        if (pdv.ShowDialog() == DialogResult.OK)
                        {
                            CDijkstra djk = new CDijkstra(grafo_activo);
                            djk.calculaCaminoMasCorto(grafo_activo.buscaNodoVertice(pdv.getIdVert()));
                            grafo_activo.showHidePesos(false, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]);

                            /*foreach (CArista a in grafo_activo.getListaAristas())
                             *  a.setPeso(0);*/
                        }
                    }
                    else
                    {
                        grafo_activo.showHideIdAristas(false, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]);
                    }
                }
                else
                {
                    grafo_activo.showHidePesos(true, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]);
                    DPideVert pdv = new DPideVert(grafo_activo.getNumeroVertices());
                    if (pdv.ShowDialog() == DialogResult.OK)
                    {
                        CDijkstra djk = new CDijkstra(grafo_activo);
                        djk.calculaCaminoMasCorto(grafo_activo.buscaNodoVertice(pdv.getIdVert()));
                        grafo_activo.showHidePesos(false, (TabPage)Pestanas.Controls[Pestanas.SelectedIndex]);

                        /*foreach (CArista a in grafo_activo.getListaAristas())
                         *  a.setPeso(0);*/
                    }
                }
            }
        }
예제 #3
0
 public bool esXDescendienteDeY(CVertice X, CVertice Y)
 {
     if (Y.getNumero() <= X.getNumero() &&
         X.getNumero() <= (Y.getNumero() + descendientes[G.getListaAdyacencia().IndexOf(G.buscaNodoVertice(Y))]))
     {
         return(true);
     }
     return(false);
 }