private void seleccionKruskal(Arista candidato, List <string> componentes, ListaArista arbolRM) { int borrar = -1; string origen, destino; origen = candidato.getOrigin().getCity().getName(); destino = candidato.getDestination().getCity().getName(); for (int i = 0; i < componentes.Count; i++) { if (componentes[i].Contains(origen)) { for (int j = 0; j < componentes.Count; j++) { if (componentes[j].Contains(destino)) { if (i != j) { borrar = j; componentes[i] += componentes[j]; arbolRM.Add(candidato); } } } } } if (borrar > -1) { componentes.RemoveAt(borrar); } }
private void inicializaCandidatos(ListaArista candidatos, int option) { foreach (Node node in graph.getNodeList()) { foreach (Adjacent ady in node.getAdjacentList()) { Arista arista = new Arista(); arista.setOrigin(node); arista.setDestination(ady.getNode()); if (option == 1) { arista.setCost(ady.getTime()); } else if (option == 2) { arista.setCost(ady.getCost()); } candidatos.Add(arista); } } }
private void seleccionPrim(ListaArista candidatos, string origenPrim, ListaArista arbolRM) { bool repetir; string origen, destino; while (origenPrim.Length < graph.getNodeList().Count) { repetir = false; for (int i = 0; i < candidatos.Count; i++) { origen = candidatos[i].getOrigin().getCity().getName(); destino = candidatos[i].getDestination().getCity().getName(); if (origenPrim.Contains(origen)) { if (!origenPrim.Contains(destino)) { arbolRM.Add(candidatos[i]); int cost = candidatos[i].getCost(); Console.WriteLine(origen + "->" + destino + " " + cost.ToString() + " SI"); origenPrim += destino; candidatos.RemoveAt(i); repetir = true; break; } } if (origenPrim.Contains(destino)) { if (!origenPrim.Contains(origen)) { arbolRM.Add(candidatos[i]); int cost = candidatos[i].getCost(); Console.WriteLine(origen + "->" + destino + " " + cost.ToString() + " SI"); origenPrim += origen; candidatos.RemoveAt(i); repetir = true; break; } } if (origenPrim.Contains(origen)) { if (origenPrim.Contains(destino)) { candidatos.RemoveAt(i); repetir = true; break; } } if (origenPrim.Contains(destino)) { if (origenPrim.Contains(origen)) { candidatos.RemoveAt(i); repetir = true; break; } } } if (!repetir) { for (int i = 0; i < candidatos.Count; i++) { origen = candidatos[i].getOrigin().getCity().getName(); destino = candidatos[i].getDestination().getCity().getName(); if (!origenPrim.Contains(origen)) { if (!origenPrim.Contains(destino)) { arbolRM.Add(candidatos[i]); int cost = candidatos[i].getCost(); Console.WriteLine(origen + "->" + destino + " " + cost.ToString() + " SI"); origenPrim += origen; origenPrim += destino; candidatos.RemoveAt(i); repetir = true; break; } } if (!origenPrim.Contains(destino)) { if (!origenPrim.Contains(origen)) { arbolRM.Add(candidatos[i]); int cost = candidatos[i].getCost(); Console.WriteLine(origen + "->" + destino + " " + cost.ToString() + " SI"); origenPrim += destino; origenPrim += origen; candidatos.RemoveAt(i); repetir = true; break; } } } } } Console.WriteLine(""); }