Inteligência Artificial

MAC5739 - MAC415

2014
Exercício Programa 1
Algoritmos de Busca
1 Objetivo
Análise comparativa dos algoritmos de busca para o jogo régua-puzzle e para um
problema extra que será anunciado em breve.

2 O jogo: régua-puzzle
Considere um jogo onde 2N blocos são alinhados em uma régua com 2N+1 posições.
Existem N blocos brancos (B), N blocos azuis (A) e uma posição vazia. Uma régua
pode ser representada por um vetor R com posições que variam [1 .. 2N+1].
B A

A

B

O objetivo do jogo é colocar todos os blocos brancos do lado esquerdo dos blocos
azuis, ou seja, para todo i, se R[i] = B então R[j] ≠ A, para todo 0 < j < i.
Uma solução ótima para esse jogo seria a de menor número de movimentos. Ou então,
uma solução com o menor custo, adotando o custo de movimentos conforme definido
na próxima Seção.

3 Regras e Custo de Movimentação de blocos
Definimos a distância entre duas posições i e j, como j – i, sendo 0 < i < j  2N+1.
Blocos podem pular para a posição vazia quando a posição vazia estiver distante de no
máximo N casas da posição do bloco. Desta maneira, existem no máximo 2N
movimentos legais (no caso do vazio estar localizado exatamente no meio da régua).
O custo de um pulo é igual à distância entre a posição do bloco e a posição vazia. Por
exemplo, considere o seguinte caso com N=2.
Estado inicial:
B A

A

B

Nesse caso. 4 O que você deve implementar ? Você deverá implementar os seguintes algoritmos de busca discutidos em sala de aula: 1. Nesse problema. que a posição do espaço em branco seja a primeira posição da régua. . Existem cinco estados meta possíveis: B B A B B A A A B A A B B A A B B A A B Obs. custo 2.: Podemos considerar apenas um estado meta assumindo. podemos especificar dois tipos de critérios de otimalidade: (1) a solução ótima é a de menor número de movimentos ou (2) a solução ótima é a de menor custo. a solução devolvida deverá ser aquela de menor número de passos. isso não garante encontrar a solução ótima para o jogo original. por exemplo. Busca em Largura (BL) (usando busca em grafo). Porém.Existem quatro estados sucessores para o estado inicial: B A A B A A A B A B A B A B B B sendo que os dois primeiros movimentos tem custo 1 e os dois últimos.

5. A chamada do seu programa deve ser feita com um parâmetro de entrada que pode ser BL. ou seja. sem evitar nós repetidos  algoritmo recursivo mostrado em sala de aula). bem como para os conjuntos de estados explorado e borda. a solução devolvida será a primeira encontrada. IDA* ou RBFS. RBFS (Opcional) (algoritmo recursivo descrito no livro e nos slides). Para as buscas informadas você deve definir 2 heurísticas admissíveis (juntamente com uma explicação de sua admissibilidade). Nesse caso. Para que você possa fazer a análise comparativa dos algoritmos de busca. seu programa deve computar (e imprimir na tela) as seguintes informações:  se encontrou ou não uma solução  a profundidade do estado meta (ou seja. . Busca em Profundidade (BP) (também usando busca em grafo). Nesse caso. 3. a solução devolvida deverá ser aquela de menor número de passos. 8. para devolver a solução de menor custo. Seu programa deve considerar como entrada o nome de um arquivo contendo um jogo régua-puzzle (veja a Seção Formato de Entrada). Você deve implementar as estruturas de dados definidas nas aulas para problema e nó da árvore de busca. Busca A* (versão busca em grafo. Busca em Profundidade Limitada (BPL) (usando busca em árvore. a solução devolvida será a primeira encontrada. BP.  o custo da solução. g(G). o tamanho da solução).  o número de nós explorados e o número total de nós gerados (explorados + borda). Busca em Profundidade Iterativa (BPI) (com passo=1). Nesse caso. Li ≥ d sendo d. BPL. 7. dentro do limite definido.2. para devolver a primeira solução encontrada. Busca de Custo Uniforme (BCU). BCU. BPI. usando como base o algoritmo Busca de Custo Uniforme apresentado em sala de aula (que checa se o nó gerado já pertence a borda e faz uma troca. cálculado como a razão entre o número total de nós sucessores gerados e o número de nós explorados. usando 2 heurísticas diferentes: 6. Teste para 3 valores de limites diferentes (L1. a profundidade da solução encontrada pela Busca em Largura. 4. caso o nó gerado tenha custo menor). você deve resolver os problemas com os seguintes algoritmos de busca informada (best-first search). L2 e L3). IDA* (algoritmo recursivo descrito nos slides). A*.  a média do fator de ramificação ( b ) da árvore de busca (branching fator b). como na busca em largura. especificando o tipo de busca que será executada. Além das buscas não-informadas descritas acima. sendo G um estado meta.

. A segunda linha mostra o estado inicial........... 2........ Java ou Python...... ... 5 número de nós gerados: .........txt.... 5 fator de ramificação médio: .......... C++............... Exemplo: considere o jogo descrito anteriormente (estado inicial e especificação da meta)....... Se a primeira linha contém o número N.. armazenado no arquivo puz1......... 20 profundidade da meta: . 4....... nós de estados diferentes porém com o mesmo custo (empate).... exceto quando a borda for implementada como uma fila de prioridades............ o caminho da solução encontrada (sequência de estados da solução)....... a geração e armazenamento dos nós sucessores deve obedecer uma ordem fixa........... No caso da lista de prioridade......... Ordem de geração de estados sucessores: movimentar blocos à esquerda da posição vazia antes de movimentar os blocos à direita da posição vazia.................... 3........ Exemplo de um problema régua-puzzle: 2 BA-AB 5 Linguagem de programação Você poderá usar as seguintes linguagens de programação: C.. A entrega será eletrônica através do sistema PACA..... devem ser ordenados segundo a sua ordem cronológica... e movimentar os blocos mais próximos da posição vazia antes dos blocos mais distantes.. Ao executar a busca em largura.. caracteres ‘A’ (blocos azuis) e 1 caracter ‘-‘ para indicar a casa vazia....... 3 custo da solução: ............. então o puzzle consiste de N blocos brancos... 1... N blocos azuis e 2N+1 posições........ descrita a seguir. descrito como uma sequência de caracteres ‘B’ (blocos brancos).. 4 4. Ordem de inserção de estados sucessores na borda: a ordem de inserção dos filhos de um nó na lista de nós a serem processados (na borda) deve obedecer a mesma ordem de geração quando armazenados numa fila ou pilha. consistem de duas linhas: a primeira corresponde ao números de blocos brancos (igual ao número de blocos azuis).2 Formato de Entrada Arquivos contendo régua-puzzles.... a seguinte saida deverá ser produzida: BL caminho da solução: BA-AB BABABAB-A B-BAA número de nós explorados: ....................1 Ordem da geração e armazenamento de estados sucessores Para facilitar a correção dos EPs..............

falta um e blocos invertidos. você deve resolver três tipos diferentes de instâncias de problemas. Veja os exemplos a seguir para N=2.6 Exemplos de puzzles para testar os algoritmos Para cada valor de N. que chamaremos de blocos alternados. 3 e 4 Testes para N=2 ******************************************* 2 -ABAB ******************************************* 2 ABBA******************************************* 2 -AABB ******************************************* Testes para N=3 ******************************************* 3 -ABABAB ******************************************* 3 ABBBAA******************************************* 3 -AAABBB ******************************************* Testes para N=4 ******************************************* 4 -ABABABAB ******************************************* 4 ABBBBAAA******************************************* 4 -AAAABBBB .

Um exemplo de relatório será disponibilizado na página da disciplina. especificado no PACA. sendo que ambas deverão ser maior ou igual a 5.  A nota será a média entre a nota do relatório (entre 0 e 10) e do programa (entre 0 e 10). para os dois problemas e suas instâncias.  Após testar o seu programa e resolver os problema da régua-puzzle. . a nota final será a menor delas.  Você deverá entregar um relatório com gráficos mostrando os resultados dos experimentos e uma análise de desempenho. Discutiremos em sala de aula como podemos “compactar” todas essas informações em poucos gráficos. resolva também o problema extra da Travessia da Ponte. caso contrário. bem documentado e sozinho (ou somente com o seu parceiro de dupla).7 Instruções gerais  Faça o seu programa bem estruturado.