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); }
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); }
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 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); }
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; }
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
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()); }
public int comparaArista(CArista a,CArista b) { return a.getPeso().CompareTo(b.getPeso()); }
public int comparaArista(CArista a, CArista b) { return(a.getPeso().CompareTo(b.getPeso())); }
public int comparaAristas(CArista a1, CArista a2) { return(a1.getPeso().CompareTo(a2.getPeso())); }
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; }
public int comparaAristas(CArista a1, CArista a2) { return a1.getPeso().CompareTo(a2.getPeso()); }