PESC/COPPE-UFRJ Disciplina: Inteligência Artificial Professora Inês Dutra As Torres de Hanoi Resolução por algoritmos de Busca Daniel N. Epitácio Pereira A Lenda das Torres A Lenda das Torres O Quebra-Cabeça Edouard Lucas, 1883 Forma tradicional: N discos 3 varas Solução ótima: 2N-1 movimentos Variações: K varas Liberdade de Objetivo Problema de Busca Objetivo estabelecido: N = 15 32.767 movimentos! Operadores: Pilhas de origem e de destino Podem ser inválidos ou infrutíferos Estados: Pilha em que se situa cada peça Ramificação = 3 (*) Métodos de Busca A* Heurística + Custo Guloso (Greedy Search) Heurística Busca em Largura (ou de Custo Uniforme) Custo Operadores Inválidos: Se tem como pilha de origem uma pilha vazia Se levam uma peça para cima de outra menor Infrutíferos Movimentos nulos: Operadores Infrutíferos Reversão: Perda Imediata de Otimalidade: Ramificação: No máximo 2 Heurística Deve ser admissível Deve ser uma estimativa inferior do número de passos até a solução Caso contrário, a otimalidade não estará garantida Não deve ser muito subestimada Ou a performance será prejudicada Heurísticas que se aproximam da distância real à solução podem garantir complexidade subexponencial Heurística Baseada no número de peças na posição correta. Pode ser feita de forma admissível, mas então o segundo critério fica prejudicado Distâncias “relaxadas” à posição correta Um pouco mais elaborada. Admissível, mas ainda pouco eficiente Heurística Heurística Por Estágios Funciona um pouco melhor Distância do início de cada estágio à solução é conhecido Estágios Recursivos Ideal Implementação Em C++ (usando MingW32). Faz uso de uma fila de prioridades (STL) de configurações do jogo, com base na heurística e no custo correspondente. Cada uma dessas configurações aponta para um nó. Os nós formam uma árvore baseada em encadeamento. Implementação A configuração correspondente a cada nó já expandido é removida da memória Fila de Estados Árvore de Nós Resultados Busca em Largura Até 5 peças Método Guloso 15 ou mais peças (sub-ótimo) A* 15 ou mais peças (ótimo) 15 peças com pouco mais do que 120.000 nós expandidos. Amostra e Referências [1] Tower of Hanoi: Fascinating Facts (LHS): http://www.lhs.berkeley.edu/Java/Tower/towerhistory.html [2] Russel, S., Norvig, P. – Artificial Intelligence: A Modern Approach [3] Rich, E., Knight, K. – Inteligência Artificial