Ejemplo n.º 1
0
        public CGrafo construyeK5()
        {
            CGrafo k5 = new CGrafo(1, 0);

            for (int i = 0; i < 5; i++)
            {
                CVertice v = new CVertice(i + 1, 0, 0, Color.White, Color.Black);
                v.setGrado(4);
                CNodoVertice cnv = new CNodoVertice(v);
                k5.getListaAdyacencia().Add(cnv);
            }

            foreach (CNodoVertice nv in k5.getListaAdyacencia())
            {
                foreach (CNodoVertice nv2 in k5.getListaAdyacencia())
                {
                    if (nv.getVertice().getId() != nv2.getVertice().getId())
                    {
                        nv.getRelaciones().Add(nv2);
                        nv.getVertice().getVecinos().Add(nv2.getVertice());
                        if (!k5.aristaRepetida(nv.getVertice(), nv2.getVertice()))
                        {
                            CArista ar = new CArista(nv.getVertice(), nv2.getVertice(), new Point(0, 0), new Point(0, 0), 0);
                            k5.getListaAristas().Add(ar);
                        }
                    }
                }
            }

            k5.setNumeroAristas(10);
            k5.setNumeroVertices(5);

            return(k5);
        }
Ejemplo n.º 2
0
        public CGrafo construyeK33()
        {
            CGrafo k33 = new CGrafo(1, 0);

            for (int i = 0; i < 6; i++)
            {
                CVertice v = new CVertice(i + 1, 0, 0, Color.White, Color.Black);
                v.setGrado(3);
                CNodoVertice cnv = new CNodoVertice(v);
                k33.getListaAdyacencia().Add(cnv);
            }

            for (int i = 0; i < 3; i++)
            {
                for (int j = 3; j < 6; j++)
                {
                    k33.getListaAdyacencia()[i].getRelaciones().Add(k33.getListaAdyacencia()[j]);
                    k33.getListaAdyacencia()[i].getVertice().getVecinos().Add(k33.getListaAdyacencia()[j].getVertice());
                    k33.getListaAdyacencia()[j].getRelaciones().Add(k33.getListaAdyacencia()[i]);
                    k33.getListaAdyacencia()[j].getVertice().getVecinos().Add(k33.getListaAdyacencia()[i].getVertice());
                    CArista ar = new CArista(k33.getListaAdyacencia()[i].getVertice(), k33.getListaAdyacencia()[j].getVertice(), new Point(0, 0), new Point(0, 0), 0);
                    k33.getListaAristas().Add(ar);
                }
            }

            k33.setNumeroAristas(9);
            k33.setNumeroVertices(6);

            return(k33);
        }
Ejemplo n.º 3
0
        public void prim()
        {
            Graphics g = Graphics.FromImage(G.getBMP());

            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            List <CArista> T  = new List <CArista>();
            CArista        uv = null;

            U.Add(V[0].getVertice());
            while (!UigualaV())
            {
                uv = buscaAristaCostoMin();
                T.Add(uv);
                U.Add(uv.getVDestino());
            }

            T.Sort(comparaAristas);
            string cad = " Conjunto de Aristas\n\n T : {";

            foreach (CArista a in T)
            {
                a.dibujateAACM(g, G.getBMP(), tp);
                cad += " (" + a.getVOrigen().getId().ToString() + "," + a.getVDestino().getId().ToString() + ") ";
            }
            cad += "}.    ";

            MessageBox.Show(cad, "Árbol Abarcador de Costo Mínimo (Algoritmo de PRIM)", MessageBoxButtons.OK, MessageBoxIcon.Information);

            g.Clear(Color.White);
            G.dibujate(tp, G.getBMP());
        }
Ejemplo n.º 4
0
        public CArista buscaAristaCostoMin()
        {
            List <CArista>  posibles = new List <CArista>();
            List <CVertice> umv      = VmenosU();

            foreach (CArista ar in E)
            {
                if ((U.Contains(ar.getVOrigen()) && umv.Contains(ar.getVDestino())) /*||
                                                                                     * (U.Contains(ar.getVDestino()) && umv.Contains(ar.getVOrigen()))*/)
                {
                    posibles.Add(ar);
                }
            }

            posibles.Sort(comparaAristas);
            CArista amc = posibles[0];

            foreach (CArista ar in posibles)
            {
                if (ar.getPeso() < amc.getPeso())
                {
                    amc = ar;
                }
            }

            return(amc);
        }
Ejemplo n.º 5
0
        public CGrafo construyeK33()
        {
            CGrafo k33 = new CGrafo(1, 0);

            for (int i = 0; i < 6; i++)
            {
                CVertice v = new CVertice(i + 1, 0, 0, Color.White, Color.Black);
                v.setGrado(3);
                CNodoVertice cnv = new CNodoVertice(v);
                k33.getListaAdyacencia().Add(cnv);
            }

            for (int i = 0; i < 3; i++)
            {
                for (int j = 3; j < 6; j++)
                {
                    k33.getListaAdyacencia()[i].getRelaciones().Add(k33.getListaAdyacencia()[j]);
                    k33.getListaAdyacencia()[i].getVertice().getVecinos().Add(k33.getListaAdyacencia()[j].getVertice());
                    k33.getListaAdyacencia()[j].getRelaciones().Add(k33.getListaAdyacencia()[i]);
                    k33.getListaAdyacencia()[j].getVertice().getVecinos().Add(k33.getListaAdyacencia()[i].getVertice());
                    CArista ar = new CArista(k33.getListaAdyacencia()[i].getVertice(), k33.getListaAdyacencia()[j].getVertice(), new Point(0, 0), new Point(0, 0), 0);
                    k33.getListaAristas().Add(ar);
                }
            }

            k33.setNumeroAristas(9);
            k33.setNumeroVertices(6);

            return k33;
        }
Ejemplo n.º 6
0
        public bool esIncidenteCon(CArista ari, CNodoVertice nodo_od)
        {
            bool encontrado = false;
            if (ari.getVOrigen().getId() == nodo_od.getVertice().getId() || ari.getVDestino().getId() == nodo_od.getVertice().getId())
                encontrado = true;

            return encontrado;
        }
Ejemplo n.º 7
0
        }//Construye la matriz a partir de la lista de adyacencia del grafo

        public bool esIncidenteCon(CArista ari, CNodoVertice nodo_od)
        {
            bool encontrado = false;

            if (ari.getVOrigen().getId() == nodo_od.getVertice().getId() || ari.getVDestino().getId() == nodo_od.getVertice().getId())
            {
                encontrado = true;
            }

            return(encontrado);
        } //Verifica que existe incidencia en lista de adyacencia
Ejemplo n.º 8
0
        public void kruskal()
        {
            Graphics g = Graphics.FromImage(G.getBMP());

            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            int             n  = G.getNumeroVertices();
            CArista         uv = null;
            List <CVertice> cv = null;
            List <CVertice> cu = null;

            foreach (CNodoVertice cnv in V)
            {
                List <CVertice> C = new List <CVertice>();
                C.Add(cnv.getVertice());
                componentes.Add(C);
            }

            while (T.Count <= (n - 1) && Q.Count != 0)
            {
                uv = Q[0];
                Q.RemoveAt(0);
                cv = componenteQueContiene(uv.getVDestino());
                cu = componenteQueContiene(uv.getVOrigen());
                if (!cvIgualcu(cv, cu))
                {
                    T.Add(uv);
                    foreach (CVertice v in cu)
                    {
                        cv.Add(v);
                    }
                    cu.Clear();
                }
            }

            T.Sort(comparaArista);
            string cad = " Conjunto de Aristas\n\n T : {";

            foreach (CArista a in T)
            {
                a.dibujateAACM(g, G.getBMP(), tp);
                cad += " (" + a.getVOrigen().getId().ToString() + "," + a.getVDestino().getId().ToString() + ") ";
            }
            cad += "}.    ";

            MessageBox.Show(cad, "Árbol Abarcador de Costo Mínimo (Algoritmo de KRUSKAL)", MessageBoxButtons.OK, MessageBoxIcon.Information);

            g.Clear(Color.White);
            G.dibujate(tp, G.getBMP());
        }
Ejemplo n.º 9
0
 public int comparaArista(CArista a,CArista b)
 {
     return a.getPeso().CompareTo(b.getPeso());
 }
Ejemplo n.º 10
0
 public int comparaArista(CArista a, CArista b)
 {
     return(a.getPeso().CompareTo(b.getPeso()));
 }
Ejemplo n.º 11
0
 public int comparaAristas(CArista a1, CArista a2)
 {
     return(a1.getPeso().CompareTo(a2.getPeso()));
 }
Ejemplo n.º 12
0
        public CGrafo construyeK5()
        {
            CGrafo k5 = new CGrafo(1, 0);

            for (int i = 0; i < 5; i++)
            {
                CVertice v = new CVertice(i+1,0,0,Color.White,Color.Black);
                v.setGrado(4);
                CNodoVertice cnv = new CNodoVertice(v);
                k5.getListaAdyacencia().Add(cnv);
            }

            foreach (CNodoVertice nv in k5.getListaAdyacencia())
            {
                foreach (CNodoVertice nv2 in k5.getListaAdyacencia())
                {
                    if (nv.getVertice().getId() != nv2.getVertice().getId())
                    {
                        nv.getRelaciones().Add(nv2);
                        nv.getVertice().getVecinos().Add(nv2.getVertice());
                        if (!k5.aristaRepetida(nv.getVertice(), nv2.getVertice()))
                        {
                            CArista ar = new CArista(nv.getVertice(), nv2.getVertice(),new Point(0,0),new Point(0,0),0);
                            k5.getListaAristas().Add(ar);
                        }
                    }
                }
            }

            k5.setNumeroAristas(10);
            k5.setNumeroVertices(5);

            return k5;
        }
Ejemplo n.º 13
0
 public int comparaAristas(CArista a1, CArista a2)
 {
     return a1.getPeso().CompareTo(a2.getPeso());
 }