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(); }
public void Expande() { if (algoritmoProfundidade.Falha) { algoritmoProfundidade = new BuscaEmProfundidadeComVisitados <T>(Problema, ++Limite); } else { algoritmoProfundidade.Expande(); } }
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()); } }