public static List <Enlace> Ejecutar2(Grafo g) { var arm = new List <Enlace>(); var enlaces = g.GetEnlacesDeMenorAMayor(); foreach (var enlace in enlaces) { if (!enlace.NodosVisitados()) // Si el enlaces no tiene ambos nodos visitados { enlace.NodoA.visitado = true; // Marco el NodoA del enlace como visitado enlace.NodoB.visitado = true; // Marco el NodoB del enlace como visitado arm.Add(enlace); // Agrego el enlace al ARM if (arm.Count == g.Nodos.Count - 1) { break; } } } return(arm); }
public static List<Enlace> Ejecutar(Grafo g) { var arm = new List<Enlace>(); // Creo la lista de enlaces que contendra el ARM var enlaces = g.GetEnlacesDeMenorAMayor(); // Obtengo la lista de enlaces del nodo ordenada de menor a mayor peso foreach (var enlace in enlaces) // Recorro la lista de enlaces { if (!enlace.NodosVisitados()) // Si el enlaces no tiene ambos nodos visitados { enlace.NodoA.visitado = true; // Marco el NodoA del enlace como visitado enlace.NodoB.visitado = true; // Marco el NodoB del enlace como visitado arm.Add(enlace); // Agrego el enlace al ARM } else { if(!FormaCiclo(g,g.GetEnlacesVisitados(enlace.NodoA), new List<Enlace>(), arm, enlace.NodoA, enlace.NodoB)) // Si no se forma un ciclo { arm.Add(enlace); // Agrego el enlace al ARM } } } return arm; // Devuelve el ARM }
public static List <Enlace> Ejecutar(Grafo g) { var arm = new List <Enlace>(); // Creo la lista de enlaces que contendra el ARM var enlaces = g.GetEnlacesDeMenorAMayor(); // Obtengo la lista de enlaces del nodo ordenada de menor a mayor peso foreach (var enlace in enlaces) // Recorro la lista de enlaces { if (!enlace.NodosVisitados()) // Si el enlaces no tiene ambos nodos visitados { enlace.NodoA.visitado = true; // Marco el NodoA del enlace como visitado enlace.NodoB.visitado = true; // Marco el NodoB del enlace como visitado arm.Add(enlace); // Agrego el enlace al ARM } else { if (!FormaCiclo(g, g.GetEnlacesVisitados(enlace.NodoA), new List <Enlace>(), arm, enlace.NodoA, enlace.NodoB)) // Si no se forma un ciclo { arm.Add(enlace); // Agrego el enlace al ARM } } } return(arm); // Devuelve el ARM }