Example #1
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());
        }
        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;
        }
        }//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
Example #4
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());
        }