Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
        public void NoDeberiaAgregarEnlaceSiNoExisteElNodo()
        {
            Grafo g = new Grafo();
            Nodo n = new Nodo("colo");
            Nodo b = new Nodo("colo");

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

            bool cargo = g.AgregarEnlace(e);
            Assert.IsFalse(cargo);
        }
Ejemplo n.º 4
0
        public void NoDeberiaAgregarEnlaceSiNoExisteElNodo()
        {
            Grafo g = new Grafo();
            Nodo  n = new Nodo("colo");
            Nodo  b = new Nodo("colo");

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

            bool cargo = g.AgregarEnlace(e);

            Assert.IsFalse(cargo);
        }
Ejemplo 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);
 }
Ejemplo n.º 6
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);
        }
Ejemplo n.º 7
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);
        }
Ejemplo n.º 8
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);
        }
Ejemplo n.º 9
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));
        }
Ejemplo n.º 10
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);
        }
Ejemplo n.º 11
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);
        }
Ejemplo n.º 12
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]);
        }
Ejemplo n.º 13
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]);
        }
Ejemplo n.º 14
0
        private void abrirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    this.Reset();
                    if (File.Exists(openFileDialog1.FileName))
                    {
                        rutaArchivo = openFileDialog1.FileName;
                        using (var read = new StreamReader(openFileDialog1.FileName, Encoding.Default))
                        {
                            // 0-> nodo 1-> enlace 2-> imagen
                            byte   tipoTag = 0;
                            string linea;
                            while ((linea = read.ReadLine()) != null)
                            {
                                if (linea.StartsWith("["))
                                {
                                    if (linea.Equals(tagNodos))
                                    {
                                        tipoTag = 0;
                                    }
                                    else if (linea.Equals(tagEnlaces))
                                    {
                                        tipoTag = 1;
                                    }
                                    else if (linea.Equals(tagImagen))
                                    {
                                        tipoTag = 2;
                                    }
                                    continue;
                                }
                                if (tipoTag == 0)
                                {
                                    var n1 = new NodoVisual(linea);
                                    AgregaNodo(n1);
                                }
                                else if (tipoTag == 1)
                                {
                                    var e1 = new EnlaceVisual(linea, this.nodos);
                                    g.AgregarEnlace(e1);
                                    this.enlaces.Add(e1);
                                }
                                else if (tipoTag == 2)
                                {
                                    AsignarImagen(Path.Combine(Path.GetDirectoryName(openFileDialog1.FileName), linea));
                                }
                            }
                        }

                        salvado            = true;
                        tlabelArchivo.Text = rutaArchivo;
                        tlabelGrabado.Text = " ";
                        this.Dibujar(false);
                    }
                    else
                    {
                        throw new Exception("No existe el archivo " + openFileDialog1.FileName);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                var eclosed = e as FormClosingEventArgs;
                if (eclosed != null)
                {
                    eclosed.Cancel = true;
                }
            }
        }
Ejemplo 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));
        }
Ejemplo n.º 16
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();
        }
Ejemplo n.º 17
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);
        }
Ejemplo n.º 18
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);
        }