예제 #1
0
        public override List <IComponente> GerarComponentes()
        {
            List <IComponente> arestas = new List <IComponente>();

            //if (Arestas.Count == 0)
            if (Grafo.Componentes.Count == 0)
            {
                foreach (Aresta a in CidadeInicial.Arestas())
                {
                    if (!VerificaSeJaFoiVizitado(a))
                    {
                        arestas.Add(a);
                    }
                }
            }
            else
            {
                foreach (Aresta a in VerticesJaVisitados.Last().Arestas())//isso não está funcionando. Não está retornando nada.
                {
                    if (!VerificaSeJaFoiVizitado(a))
                    {
                        arestas.Add(a);
                    }
                }
            }
            return(arestas);
        }
예제 #2
0
        public override IComponente EscolheMelhorComponente(List <IComponente> Componentes)
        {
            Aresta melhor = (Aresta)Componentes.FirstOrDefault();

            foreach (Aresta aresta in Componentes)
            {
                if (melhor != null)
                {
                    if ((int)melhor.Valor < (int)aresta.Valor)
                    {
                        melhor = aresta;
                    }
                }
            }
            if (melhor != null)
            {
                VerticesJaVisitados.Enqueue(melhor.CidadeDestino);
            }

            return(melhor);
        }