Example #1
0
        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);
        }
Example #2
0
 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
 }
Example #3
0
        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
        }