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); }
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); }
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); }
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); }
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)); }
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); }
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); }
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]); }
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; } } }
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)); }
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(); }
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); }