private void conteoDeCaminosToolStripMenuItem_Click(object sender, EventArgs e) { if (grafos != null && grafo_activo != null) { if (grafo_activo.getNumeroVertices() >= 2) { DConteo dc = new DConteo(grafo_activo.getNumeroVertices()); if (dc.ShowDialog() == DialogResult.OK) { CNodoVertice cnv1 = grafo_activo.getListaAdyacencia()[(dc.na) - 1], cnv2 = grafo_activo.getListaAdyacencia()[(dc.nb) - 1]; int num_cam = grafo_activo.calculaCaminosREntre(cnv1, cnv2, dc.r), ncam = dc.r; if (cnv1.getVertice().getId() != cnv2.getVertice().getId()) { MessageBox.Show(" Existen " + num_cam.ToString() + " caminos de longitud " + ncam.ToString() + " entre el vértice " + cnv1.getVertice().getId().ToString() + " al vértice " + cnv2.getVertice().getId().ToString() + " ", "Conteo de caminos", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show(" Existen " + num_cam.ToString() + " circuitos de longitud " + ncam.ToString() + " para el vértice " + cnv1.getVertice().getId().ToString() + " ", "Conteo de circuitos", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } else { MessageBox.Show(" Deben existir por lo menos 2 vertices en el grafo! ", "Error...", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
public CWarshall(CGrafo grafo) { G = grafo; n = grafo.getNumeroVertices(); C = G.getMatrizAdyacencia().getMatriz(); D = new bool[n, n]; }
public CDijkstra(CGrafo grafo) { G = grafo; n = grafo.getNumeroVertices(); V = grafo.getListaAdyacencia(); C = construyeC(); }
public CFloyd(CGrafo grafo) { G = grafo; n = grafo.getNumeroVertices(); V = grafo.getListaAdyacencia(); C = construyeC(); P = new int[n, n]; D = new int[n, n]; }
public bool mismosNVyNA(CGrafo G, CGrafo H) { bool iguales = false; if (G.getNumeroAristas() == H.getNumeroAristas() && G.getNumeroVertices() == H.getNumeroVertices()) { iguales = true; } return(iguales); }
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 void coloreoDeGrafo4Colores(TabPage tp) { if (hayNodoSinPintar() && !band) { CVertice vert_mge = getNodoDeMayorGradoDeErrorSinPintar(); if (vert_mge != null) { int color = -1; if (hayColorDisponibe(vert_mge, ref color) && color != -1) { pintaNodo4Colores(vert_mge, color); } else { if (vert_mge.getVecinos().Count != G.getNumeroVertices() - 1) { vert_mge.aumentaGE(); despintarNodosAdyacentesA(vert_mge); } else { band = true; } } coloreoDeGrafo4Colores(tp); } } else { if (hayNodoSinPintar()) { coloreoDeGrafoNColores(tp); } G.dibujate(tp, G.getBMP()); } }
public bool mismosNVyNA(CGrafo G,CGrafo H) { bool iguales = false; if (G.getNumeroAristas() == H.getNumeroAristas() && G.getNumeroVertices() == H.getNumeroVertices()) iguales = true; return iguales; }