コード例 #1
0
        public void Expande()
        {
            if (AtingiuObjetivo || Falha)
            {
                throw new InvalidOperationException("Não é possível expandir no estado atual.");
            }

            if (!a1.Falha)
            {
                a1.Expande();
            }
            if (AtingiuObjetivo)
            {
                return;
            }

            BuscaObjetivo();
            if (AtingiuObjetivo)
            {
                return;
            }

            if (!a2.Falha)
            {
                a2.Expande();
            }
            if (AtingiuObjetivo)
            {
                return;
            }

            BuscaObjetivo();
        }
コード例 #2
0
 public void Expande()
 {
     if (algoritmoProfundidade.Falha)
     {
         algoritmoProfundidade = new BuscaEmProfundidadeComVisitados <T>(Problema, ++Limite);
     }
     else
     {
         algoritmoProfundidade.Expande();
     }
 }
コード例 #3
0
        public static void Executa <T>(this IAlgoritmo <T> algoritmo, bool verbose)
        {
            while (!algoritmo.AtingiuObjetivo && !algoritmo.Falha)
            {
                if (verbose)
                {
                    Console.WriteLine(algoritmo.ImprimeListas());
                }
                algoritmo.Expande();
            }

            if (algoritmo.Falha)
            {
                Console.WriteLine("Falha!");
            }
            else
            {
                Console.WriteLine(algoritmo.ImprimeCaminho());
            }
        }