Exemplo n.º 1
1
        public void DeberiaAgregarEnlace()
        {
            Grafo g = new Grafo();
            Nodo n = new Nodo("colo");
            Nodo b = new Nodo("pepe");

            Enlace e = new Enlace(55, n, b);
            g.AgregarNodo(n);
            g.AgregarNodo(b);

            bool cargo = g.AgregarEnlace(e);
            Assert.IsTrue(cargo);
        }
Exemplo n.º 2
1
        public void DeberiaBorrarEnlace()
        {
            Grafo g = new Grafo();
            Nodo n = new Nodo("colo");
            Nodo b = new Nodo("colo1");

            Enlace e = new Enlace(55, n, b);
            g.AgregarNodo(n);
            g.AgregarNodo(b);
             g.AgregarEnlace(e);
             bool borro = g.BorrarEnlace(e);
             Assert.IsTrue(borro);
        }
Exemplo n.º 3
0
 public void NoDeberiaAgregarNodosConElMismoNombre()
 {
     Grafo g = new Grafo();
     Nodo n = new Nodo("colo");
     Nodo b = new Nodo("colo");
     bool cargo = g.AgregarNodo(n);
     cargo = g.AgregarNodo(b);
     Assert.IsFalse(cargo);
 }
Exemplo n.º 4
0
        public void NoDeberiaAgregarNodosConElMismoNombre()
        {
            Grafo g     = new Grafo();
            Nodo  n     = new Nodo("colo");
            Nodo  b     = new Nodo("colo");
            bool  cargo = g.AgregarNodo(n);

            cargo = g.AgregarNodo(b);
            Assert.IsFalse(cargo);
        }
Exemplo n.º 5
0
 public void DeberiaRetornarListaCon1NodoSiElGrafoTiene1Nodo()
 {
     var g = new Grafo();
     var n1 = new Nodo("N1");
     var n2 = new Nodo("N2");
     g.AgregarNodo(n1);
     g.AgregarNodo(n2);
     var e1 = new Enlace(2, n1, n2);
     g.AgregarEnlace(e1);
     
     var l = Kruskal.Ejecutar(g);
     Assert.IsNotNull(l);
     Assert.AreEqual(1, l.Count);
 }
Exemplo n.º 6
0
        public void DeberiaAgregarEnlace()
        {
            Grafo g = new Grafo();
            Nodo  n = new Nodo("colo");
            Nodo  b = new Nodo("pepe");

            Enlace e = new Enlace(55, n, b);

            g.AgregarNodo(n);
            g.AgregarNodo(b);

            bool cargo = g.AgregarEnlace(e);

            Assert.IsTrue(cargo);
        }
Exemplo n.º 7
0
        public void DeberiaBorrarEnlace()
        {
            Grafo g = new Grafo();
            Nodo  n = new Nodo("colo");
            Nodo  b = new Nodo("colo1");

            Enlace e = new Enlace(55, n, b);

            g.AgregarNodo(n);
            g.AgregarNodo(b);
            g.AgregarEnlace(e);
            bool borro = g.BorrarEnlace(e);

            Assert.IsTrue(borro);
        }
Exemplo n.º 8
0
        public void DeberiaRetornarTruePorqueTodosLosNodosFueronVisitados()
        {
            Grafo g  = new Grafo();
            Nodo  n1 = new Nodo("n1");
            Nodo  n2 = new Nodo("n2");

            Enlace e = new Enlace(55, n1, n2);

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            n1.visitado = true;
            n2.visitado = true;
            bool visitados = g.TodosVisitados();

            Assert.IsTrue(visitados);
        }
Exemplo n.º 9
0
 public void DeberiaAgregarNodo()
 {
     Grafo g = new Grafo();
     Nodo n = new Nodo("colo");
     bool cargo = g.AgregarNodo(n);
     Assert.IsTrue(cargo);
 }
Exemplo n.º 10
0
 private void AgregaNodo(NodoVisual n)
 {
     g.AgregarNodo(n);
     this.nodos.Add(n);
     Desde.Items.Add(n.nombre);
     Hasta.Items.Add(n.nombre);
 }
Exemplo n.º 11
0
        public void DeberiaRetornarListaCon1NodoSiElGrafoTiene1Nodo()
        {
            var g  = new Grafo();
            var n1 = new Nodo("N1");
            var n2 = new Nodo("N2");

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            var e1 = new Enlace(2, n1, n2);

            g.AgregarEnlace(e1);

            var l = Kruskal.Ejecutar(g);

            Assert.IsNotNull(l);
            Assert.AreEqual(1, l.Count);
        }
Exemplo n.º 12
0
        // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
        // Agregar nodo
        // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
        private void btnNewNodo_Click(object sender, EventArgs e)
        {
            string cadena = txtNewNodo.Text;

            if (cadena.Trim() == "")
            {
                MessageBox.Show("El nodo no puede tener un nombre vacío.");
                return;
            }
            if (grafo.Buscar(cadena) != null)
            {
                MessageBox.Show("Ya existe un nodo con ese nombre.");
                return;
            }
            grafo.AgregarNodo(new Nodo(cadena));
            ActualizarListasNodos();
        }
Exemplo n.º 13
0
        public void DeberiaAgregarNodo()
        {
            Grafo g     = new Grafo();
            Nodo  n     = new Nodo("colo");
            bool  cargo = g.AgregarNodo(n);

            Assert.IsTrue(cargo);
        }
Exemplo n.º 14
0
        public void DeberiaRetornarELEnlaceDeMenorPeso()
        {
            var g  = new Grafo();
            var n1 = new Nodo("N1");
            var n2 = new Nodo("N2");
            var n3 = new Nodo("N3");
            var n4 = new Nodo("N4");
            var n5 = new Nodo("N5");
            var n6 = new Nodo("N6");


            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);

            var e1 = new Enlace(2, n1, n2);
            var e2 = new Enlace(7, n2, n3);
            var e3 = new Enlace(3, n1, n3);
            var e4 = new Enlace(20, n1, n6);
            var e5 = new Enlace(5, n3, n6);
            var e6 = new Enlace(9, n1, n5);
            var e7 = new Enlace(3, n5, n4);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);

            n1.visitado = true;
            n2.visitado = true;
            var enlaces = g.GetEnlaces(n1);


            Enlace eMenor = Prim.EnlaceMenorPeso(enlaces);

            Assert.IsNotNull(eMenor);
            Assert.AreNotEqual(eMenor, e1);
            Assert.AreEqual(eMenor, e3);
        }
Exemplo n.º 15
0
        public void DeberiaDevolverLaListaDeEnlacesDe1NodoSiNoSeVisitoElOtroNodo()
        {
            Grafo g = new Grafo();

            var n1 = new Nodo("N1");
            var n2 = new Nodo("N2");
            var n3 = new Nodo("N3");
            var n4 = new Nodo("N4");
            var n5 = new Nodo("N5");
            var n6 = new Nodo("N6");

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);

            var e1 = new Enlace(2, n1, n2);
            var e2 = new Enlace(7, n2, n3);
            var e3 = new Enlace(3, n1, n3);
            var e4 = new Enlace(20, n1, n6);
            var e5 = new Enlace(5, n3, n6);
            var e6 = new Enlace(9, n1, n5);
            var e7 = new Enlace(3, n5, n4);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);
            n1.visitado = true;
            n2.visitado = true;
            List <Enlace> enlaces = g.GetEnlaces(n1);

            Assert.IsFalse(enlaces.Contains(e1)); // Esta visitado
            Assert.IsTrue(enlaces.Contains(e3));
            Assert.IsTrue(enlaces.Contains(e4));
            Assert.IsTrue(enlaces.Contains(e6));
            Assert.IsFalse(enlaces.Contains(e7));
            Assert.IsFalse(enlaces.Contains(e2));
            Assert.IsFalse(enlaces.Contains(e5));
        }
Exemplo n.º 16
0
        public void DeberiaDevolverLaListaDeEnlacesOrdenada()
        {
            Grafo g = new Grafo();

            var n1 = new Nodo("N1");
            var n2 = new Nodo("N2");
            var n3 = new Nodo("N3");
            var n4 = new Nodo("N4");
            var n5 = new Nodo("N5");
            var n6 = new Nodo("N6");

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);

            var e1 = new Enlace(2, n1, n2);
            var e2 = new Enlace(7, n2, n3);
            var e3 = new Enlace(3, n1, n3);
            var e4 = new Enlace(20, n1, n6);
            var e5 = new Enlace(5, n3, n6);
            var e6 = new Enlace(9, n1, n5);
            var e7 = new Enlace(3, n5, n4);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);

            List <Enlace> enlaces = g.GetEnlacesDeMenorAMayor();

            Assert.AreEqual(2, enlaces[0].Peso);
            Assert.AreEqual(3, enlaces[1].Peso);
            Assert.AreEqual(3, enlaces[2].Peso);
            Assert.AreEqual(5, enlaces[3].Peso);
            Assert.AreEqual(7, enlaces[4].Peso);
            Assert.AreEqual(9, enlaces[5].Peso);
            Assert.AreEqual(20, enlaces[6].Peso);
        }
Exemplo n.º 17
0
        public void DeberiaRetornarARMGrafo()
        {
            var g  = new Grafo();
            var n1 = new Nodo("N1");
            var n2 = new Nodo("N2");
            var n3 = new Nodo("N3");
            var n4 = new Nodo("N4");
            var n5 = new Nodo("N5");
            var n6 = new Nodo("N6");

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);

            var e1 = new Enlace(2, n1, n2);
            var e2 = new Enlace(7, n2, n3);
            var e3 = new Enlace(3, n1, n3);
            var e4 = new Enlace(20, n1, n6);
            var e5 = new Enlace(5, n3, n6);
            var e6 = new Enlace(9, n1, n5);
            var e7 = new Enlace(3, n5, n4);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);

            var l = Kruskal.Ejecutar(g);

            Assert.IsNotNull(l);
            Assert.AreEqual(5, l.Count);
            Assert.AreEqual(e1, l[0]);
            Assert.AreEqual(e3, l[1]);
            Assert.AreEqual(e7, l[2]);
            Assert.AreEqual(e5, l[3]);
            Assert.AreEqual(e6, l[4]);
        }
Exemplo n.º 18
0
        public void DeberiaRetornarARMGrafo()
        {
            var g = new Grafo();
            var n1 = new Nodo("N1");
            var n2 = new Nodo("N2");
            var n3 = new Nodo("N3");
            var n4 = new Nodo("N4");
            var n5 = new Nodo("N5");
            var n6 = new Nodo("N6");

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);

            var e1 = new Enlace(2, n1, n2);
            var e2 = new Enlace(7, n2, n3);
            var e3 = new Enlace(3, n1, n3);
            var e4 = new Enlace(20, n1, n6);
            var e5 = new Enlace(5, n3, n6);
            var e6 = new Enlace(9, n1, n5);
            var e7 = new Enlace(3, n5, n4);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);

            var l = Kruskal.Ejecutar(g);
            Assert.IsNotNull(l);
            Assert.AreEqual(5, l.Count);
            Assert.AreEqual(e1, l[0]);
            Assert.AreEqual(e3, l[1]);
            Assert.AreEqual(e7, l[2]);
            Assert.AreEqual(e5, l[3]);
            Assert.AreEqual(e6, l[4]);
        }
Exemplo n.º 19
0
        public void DeberiaRetornarELEnlaceDeMenorPeso()
        {
            var g = new Grafo();
            var n1 = new Nodo("N1");
            var n2 = new Nodo("N2");
            var n3 = new Nodo("N3");
            var n4 = new Nodo("N4");
            var n5 = new Nodo("N5");
            var n6 = new Nodo("N6");
            

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);

            var e1 = new Enlace(2, n1, n2);
            var e2 = new Enlace(7, n2, n3);
            var e3 = new Enlace(3, n1, n3);
            var e4 = new Enlace(20, n1, n6);
            var e5 = new Enlace(5, n3, n6);
            var e6 = new Enlace(9, n1, n5);
            var e7 = new Enlace(3, n5, n4);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);
            
            n1.visitado = true;
            n2.visitado = true;
            var enlaces = g.GetEnlaces(n1);
            

            Enlace eMenor = Prim.EnlaceMenorPeso(enlaces);
            Assert.IsNotNull(eMenor);
            Assert.AreNotEqual(eMenor, e1);
            Assert.AreEqual(eMenor, e3);
        }
Exemplo n.º 20
0
        public void DeberiaDevolverLaListaDeEnlacesOrdenada()
        {
            Grafo g = new Grafo();

            var n1 = new Nodo("N1");
            var n2 = new Nodo("N2");
            var n3 = new Nodo("N3");
            var n4 = new Nodo("N4");
            var n5 = new Nodo("N5");
            var n6 = new Nodo("N6");

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);

            var e1 = new Enlace(2, n1, n2);
            var e2 = new Enlace(7, n2, n3);
            var e3 = new Enlace(3, n1, n3);
            var e4 = new Enlace(20, n1, n6);
            var e5 = new Enlace(5, n3, n6);
            var e6 = new Enlace(9, n1, n5);
            var e7 = new Enlace(3, n5, n4);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);

            List<Enlace> enlaces = g.GetEnlacesDeMenorAMayor();

            Assert.AreEqual(2, enlaces[0].Peso);
            Assert.AreEqual(3, enlaces[1].Peso);
            Assert.AreEqual(3, enlaces[2].Peso);
            Assert.AreEqual(5, enlaces[3].Peso);
            Assert.AreEqual(7, enlaces[4].Peso);
            Assert.AreEqual(9, enlaces[5].Peso);
            Assert.AreEqual(20, enlaces[6].Peso);
        }
Exemplo n.º 21
0
        private void btnGrafo3_Click(object sender, EventArgs e)  // crea grafo de 3 nodos
        {
            this.Reset();
            var n1 = new NodoVisual();

            n1.Center = new Point(13, 13);
            n1.nombre = "N1";
            var n2 = new NodoVisual();

            n2.Center = new Point(300, 200);
            n2.nombre = "N2";
            var n3 = new NodoVisual();

            n3.Center = new Point(450, 13);
            n3.nombre = "N3";

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);

            this.nodos.Add(n1);
            this.nodos.Add(n2);
            this.nodos.Add(n3);

            var e1 = new EnlaceVisual(2, n1, n2);
            var e2 = new EnlaceVisual(7, n2, n3);
            var e3 = new EnlaceVisual(3, n1, n3);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);

            this.enlaces.Add(e1);
            this.enlaces.Add(e2);
            this.enlaces.Add(e3);

            this.Dibujar();
        }
Exemplo n.º 22
0
        public void DeberiaDevolverLaListaDeEnlacesDe1NodoSiNoSeVisitoElOtroNodo()
        {
            Grafo g = new Grafo();

            var n1 = new Nodo("N1");
            var n2 = new Nodo("N2");
            var n3 = new Nodo("N3");
            var n4 = new Nodo("N4");
            var n5 = new Nodo("N5");
            var n6 = new Nodo("N6");

            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            g.AgregarNodo(n3);
            g.AgregarNodo(n4);
            g.AgregarNodo(n5);
            g.AgregarNodo(n6);

            var e1 = new Enlace(2, n1, n2);
            var e2 = new Enlace(7, n2, n3);
            var e3 = new Enlace(3, n1, n3);
            var e4 = new Enlace(20, n1, n6);
            var e5 = new Enlace(5, n3, n6);
            var e6 = new Enlace(9, n1, n5);
            var e7 = new Enlace(3, n5, n4);

            g.AgregarEnlace(e1);
            g.AgregarEnlace(e2);
            g.AgregarEnlace(e3);
            g.AgregarEnlace(e4);
            g.AgregarEnlace(e5);
            g.AgregarEnlace(e6);
            g.AgregarEnlace(e7);
            n1.visitado = true;
            n2.visitado = true;
            List<Enlace> enlaces = g.GetEnlaces(n1);
            Assert.IsFalse(enlaces.Contains(e1)); // Esta visitado
            Assert.IsTrue(enlaces.Contains(e3));
            Assert.IsTrue(enlaces.Contains(e4));
            Assert.IsTrue(enlaces.Contains(e6));
            Assert.IsFalse(enlaces.Contains(e7));
            Assert.IsFalse(enlaces.Contains(e2));
            Assert.IsFalse(enlaces.Contains(e5));
        }
Exemplo n.º 23
0
        public void DeberiaRetornarTruePorqueTodosLosNodosFueronVisitados()
        {
            Grafo g = new Grafo();
            Nodo n1 = new Nodo("n1");
            Nodo n2 = new Nodo("n2");

            Enlace e = new Enlace(55, n1, n2);
            g.AgregarNodo(n1);
            g.AgregarNodo(n2);
            n1.visitado = true;
            n2.visitado = true;
            bool visitados = g.TodosVisitados();
            Assert.IsTrue(visitados);
        }