예제 #1
0
        public override List <Arista> Kruskal(ref List <List <string> > componentes, List <Arista> aristas)
        {
            List <Arista> ramas;
            Arista        arista2;
            int           i, j;

            i       = 0;
            j       = 0;
            arista2 = null;
            ramas   = new List <Arista>();
            foreach (Arista arista in aristas)
            {
                arista2 = arista.Arriba.buscaReciproca(arista.Id);                                //Busca la arista reciproca de esta
                if (!MetodosAuxiliares.mismoComponente(componentes, arista2.Arriba.Nombre, arista.Arriba.Nombre))
                {                                                                                 //Se verifica que no esten en el mismo componente (Misma list de string)
                    //ramas.Add(arista);//Se añadan ambas aristas
                    ramas.Add(arista2);                                                           //Se añadan ambas aristas
                    i = MetodosAuxiliares.indiceDeComponente(componentes, arista2.Arriba.Nombre); //Encuentran los indices de los componentes a mezclar
                    j = MetodosAuxiliares.indiceDeComponente(componentes, arista.Arriba.Nombre);  //
                    MetodosAuxiliares.combinaComponentes(ref componentes, i, j);                  //Se convinan las listas de string
                }
            }
            return(ramas);
        }