예제 #1
0
        public List <Arista> newPrim(Vertice Origen)
        {
            Grafo P = new Grafo(); //List<Vertice> P = new List<Vertice>();

            P.Add(Origen);
            List <Arista> Cand       = new List <Arista>();
            List <Arista> Prometedor = new List <Arista>();
            Arista        NoDirigido;

            foreach (Vertice V in this)
            {
                foreach (Arista A in V.getListaAristas())
                {
                    Cand.Add(A);
                    NoDirigido = new Arista(A.getCosto(), A.getTiempo(), A.getOrigen(), A.getDestino());
                    Cand.Add(NoDirigido);
                }
            }

            Arista        Ar;
            List <Arista> LA = new List <Arista>();

            do
            {
                Ar = SeleccionPrim(Cand, P);//truena
                Prometedor.Add(Ar);
                Console.WriteLine("Works " + Ar.getOrigen().ToString());
                if (BuscarVertice(Ar.getOrigen()) != -1)
                {
                    Vertice Nuevo = this[this.BuscarVertice(Ar.getDestino())];
                    P.Add(Nuevo);
                }
                else
                {
                    Vertice Nuevo = this[this.BuscarVertice(Ar.getOrigen())];
                    P.Add(Nuevo);
                }
            } while (P.Count <= this.Count - 1);
            return(Prometedor);
        }