private void BtnARMporKruskal_Click(object sender, EventArgs e)
        {
            Kruskal kruskal = new Kruskal(G);

            AristasKruskal = kruskal.getCamino();
            ArbolKruskal   = new Grafo();
            List <Vertice> listaVertices;

            listaVertices = ArbolKruskal.getLv();
            TamAristasKruskal.Items.Clear();
            foreach (Vertice v in G.getLv())
            {
                Vertice copia = new Vertice(v.getX(), v.getY(), v.getR(), v.getId());
                listaVertices.Add(copia);
            }
            foreach (Arista a in AristasKruskal)
            {
                foreach (Vertice v in listaVertices)
                {
                    if (a.getVertexOrigen().getId() == v.getId())
                    {
                        Arista copia1 = new Arista(a.getVertex(), a.getPond(), a.getVertexOrigen(), a.getLinea());
                        v.getLa().Add(copia1);
                    }
                    if (a.getVertex().getId() == v.getId())
                    {
                        Arista copia2 = new Arista(a.getVertexOrigen(), a.getPond(), a.getVertex(), a.getLinea());
                        v.getLa().Add(copia2);
                    }
                }
            }
            Double Acumulado = 0;

            foreach (Arista a in AristasKruskal)
            {
                TamAristasKruskal.Items.Add(a.getVertexOrigen().getId().ToString() + " - " + a.getVertex().getId().ToString() + " Peso: " + Math.Round(a.getPond()).ToString());
                Acumulado = Acumulado + Math.Round(a.getPond());
            }
            TamAristasKruskal.Items.Add("Peso Acumulado= " + Math.Round(Acumulado).ToString());
            Graphics graphics = Graphics.FromImage(ARM);

            pictureBox1.Image = ARM;
            Pen pluma = new Pen(Color.Purple, 10);

            foreach (Arista a in AristasKruskal)
            {
                graphics.DrawLine(pluma, a.getVertexOrigen().getX(), a.getVertexOrigen().getY(), a.getVertex().getX(), a.getVertex().getY());
            }
            pictureBox1.Refresh();
            Rectangle Rectangulo = new Rectangle(0, 0, ARM.Width, ARM.Height);

            System.Drawing.Imaging.PixelFormat Format = ARM.PixelFormat;
            copia = ARM.Clone(Rectangulo, Format);
            this.lblNumeroSubgrafos.Text  = kruskal.getSubgrafos().ToString();
            this.BtnAgenteKruskal.Enabled = true;
        }
        Arista Seleccion(List <Arista> Candidatos)
        {
            double Menor       = 0;
            Arista AristaMenor = null;
            bool   Primero     = false;

            foreach (Arista a in Candidatos)
            {
                if (Primero == false)
                {
                    Menor       = a.getPond();
                    AristaMenor = a;
                    Primero     = true;
                }
                if (a.getPond() < Menor)
                {
                    Menor       = a.getPond();
                    AristaMenor = a;
                }
            }
            Candidatos.Remove(AristaMenor);
            return(AristaMenor);
        }
        private void BtnARMporPrim_Click(object sender, EventArgs e)
        {
            Rectangle Dimensiones = new Rectangle(0, 0, Grafo.Width, Grafo.Height);

            System.Drawing.Imaging.PixelFormat formato = Grafo.PixelFormat;
            ARM = Grafo.Clone(Dimensiones, formato);
            TamAristasPrim.Items.Clear();
            pictureBox1.Image = Grafo;
            Vertice Elegido = null;
            int     Buscado = comboBox1.SelectedIndex + 1;

            foreach (Vertice v in G.getLv())
            {
                if (Buscado == v.getId())
                {
                    Elegido = v;
                }
            }
            Prim          prim    = new Prim(Elegido, G);
            List <Arista> Aristas = prim.getAristas();

            ArbolPrim = new Grafo();
            List <Vertice> listaVertices;

            listaVertices = ArbolPrim.getLv();
            foreach (Vertice v in G.getLv())
            {
                Vertice copia = new Vertice(v.getX(), v.getY(), v.getR(), v.getId());
                listaVertices.Add(copia);
            }
            Double Peso = 0;

            foreach (Arista a in Aristas)
            {
                foreach (Vertice v in listaVertices)
                {
                    if (a.getVertexOrigen().getId() == v.getId())
                    {
                        Arista copia1 = new Arista(a.getVertex(), a.getPond(), a.getVertexOrigen(), a.getLinea());
                        v.getLa().Add(copia1);
                    }
                    if (a.getVertex().getId() == v.getId())
                    {
                        Arista copia2 = new Arista(a.getVertexOrigen(), a.getPond(), a.getVertex(), a.getLinea());
                        v.getLa().Add(copia2);
                    }
                }
                TamAristasPrim.Items.Add(a.getVertexOrigen().getId().ToString() + " - " + a.getVertex().getId().ToString() + " Peso: " + Math.Round(a.getPond()).ToString());
                Peso = Peso + a.getPond();
            }
            TamAristasPrim.Items.Add("Peso Acumulado= " + Math.Round(Peso).ToString());
            Graphics graphics = Graphics.FromImage(ARM);
            Pen      pluma    = new Pen(Color.Green, 10);

            foreach (Arista a in Aristas)
            {
                graphics.DrawLine(pluma, a.getVertexOrigen().getX(), a.getVertexOrigen().getY(), a.getVertex().getX(), a.getVertex().getY());
            }
            pictureBox1.Image = ARM;
            pictureBox1.Refresh();
            this.lblNumeroSubgrafos.Text = prim.getSubgrafos().ToString();
            this.BtnAgentePrim.Enabled   = true;
            Rectangle Rectangulo = new Rectangle(0, 0, ARM.Width, ARM.Height);

            System.Drawing.Imaging.PixelFormat Format = ARM.PixelFormat;
            copia = ARM.Clone(Rectangulo, Format);
        }
Esempio n. 4
0
        public void addArista(Vertice vDest, double pond, Vertice vOrigen, List <Point> Lista)
        {
            Arista e = new Arista(vDest, pond, vOrigen, Lista);

            la.Add(e);
        }