Está en la página 1de 6

Inteligncia Artificial

MAC5739 - MAC415

2014
Exerccio Programa 1
Algoritmos de Busca
1 Objetivo
Anlise comparativa dos algoritmos de busca para o jogo rgua-puzzle e para um
problema extra que ser anunciado em breve.

2 O jogo: rgua-puzzle
Considere um jogo onde 2N blocos so alinhados em uma rgua com 2N+1 posies.
Existem N blocos brancos (B), N blocos azuis (A) e uma posio vazia. Uma rgua
pode ser representada por um vetor R com posies que variam [1 .. 2N+1].
B A

O objetivo do jogo colocar todos os blocos brancos do lado esquerdo dos blocos
azuis, ou seja, para todo i, se R[i] = B ento R[j] A, para todo 0 < j < i.
Uma soluo tima para esse jogo seria a de menor nmero de movimentos. Ou ento,
uma soluo com o menor custo, adotando o custo de movimentos conforme definido
na prxima Seo.

3 Regras e Custo de Movimentao de blocos


Definimos a distncia entre duas posies i e j, como j i, sendo 0 < i < j 2N+1.
Blocos podem pular para a posio vazia quando a posio vazia estiver distante de no
mximo N casas da posio do bloco. Desta maneira, existem no mximo 2N
movimentos legais (no caso do vazio estar localizado exatamente no meio da rgua).
O custo de um pulo igual distncia entre a posio do bloco e a posio vazia. Por
exemplo, considere o seguinte caso com N=2.
Estado inicial:
B A

Existem quatro estados sucessores para o estado inicial:


B

B A

B A

sendo que os dois primeiros movimentos tem custo 1 e os dois ltimos, custo 2.
Existem cinco estados meta possveis:
B B

B B

B B

Obs.: Podemos considerar apenas um estado meta assumindo, por exemplo, que a
posio do espao em branco seja a primeira posio da rgua. Porm, isso no
garante encontrar a soluo tima para o jogo original.
Nesse problema, podemos especificar dois tipos de critrios de otimalidade: (1) a
soluo tima a de menor nmero de movimentos ou (2) a soluo tima a de
menor custo.

4 O que voc deve implementar ?


Voc dever implementar os seguintes algoritmos de busca discutidos em sala de aula:
1. Busca em Largura (BL) (usando busca em grafo). Nesse caso, a soluo
devolvida dever ser aquela de menor nmero de passos.

2. Busca em Profundidade (BP) (tambm usando busca em grafo), para devolver


a primeira soluo encontrada. Nesse caso, a soluo devolvida ser a primeira
encontrada.
3. Busca em Profundidade Limitada (BPL) (usando busca em rvore, ou seja,
sem evitar ns repetidos algoritmo recursivo mostrado em sala de aula).
Nesse caso, a soluo devolvida ser a primeira encontrada, dentro do limite
definido. Teste para 3 valores de limites diferentes (L1, L2 e L3), Li d sendo
d, a profundidade da soluo encontrada pela Busca em Largura.
4. Busca em Profundidade Iterativa (BPI) (com passo=1). Nesse caso, como na
busca em largura, a soluo devolvida dever ser aquela de menor nmero de
passos.
5. Busca de Custo Uniforme (BCU), para devolver a soluo de menor custo.
Alm das buscas no-informadas descritas acima, voc deve resolver os problemas
com os seguintes algoritmos de busca informada (best-first search), usando 2
heursticas diferentes:
6. Busca A* (verso busca em grafo, 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, caso o n gerado tenha custo menor).
7. IDA* (algoritmo recursivo descrito nos slides).
8. RBFS (Opcional) (algoritmo recursivo descrito no livro e nos slides).
Para as buscas informadas voc deve definir 2 heursticas admissveis (juntamente
com uma explicao de sua admissibilidade). Voc deve implementar as estruturas de
dados definidas nas aulas para problema e n da rvore de busca, bem como para os
conjuntos de estados explorado e borda.
Seu programa deve considerar como entrada o nome de um arquivo contendo um jogo
rgua-puzzle (veja a Seo Formato de Entrada).
A chamada do seu programa deve ser feita com um parmetro de entrada que pode ser
BL, BP, BPL, BPI, BCU, A*, IDA* ou RBFS, especificando o tipo de busca que ser
executada. Para que voc possa fazer a anlise comparativa dos algoritmos de busca,
seu programa deve computar (e imprimir na tela) as seguintes informaes:

se encontrou ou no uma soluo

a profundidade do estado meta (ou seja, o tamanho da soluo);

o custo da soluo, g(G), sendo G um estado meta;

o nmero de ns explorados e o nmero total de ns gerados (explorados +


borda);

a mdia do fator de ramificao ( b ) da rvore de busca (branching fator b),


clculado como a razo entre o nmero total de ns sucessores gerados e o
nmero de ns explorados;

o caminho da soluo encontrada (sequncia de estados da soluo).

Exemplo: considere o jogo descrito anteriormente (estado inicial e especificao da


meta), armazenado no arquivo puz1.txt. Ao executar a busca em largura, a
seguinte saida dever ser produzida:
BL
caminho da soluo:
BA-AB
BABABAB-A
B-BAA
nmero de ns explorados: ........................................ 5
nmero de ns gerados: ........................................... 20
profundidade da meta: ............................................... 3
custo da soluo: ....................................................... 5
fator de ramificao mdio: ...................................... 4
4.1 Ordem da gerao e armazenamento de estados sucessores
Para facilitar a correo dos EPs, a gerao e armazenamento dos ns sucessores deve
obedecer uma ordem fixa, descrita a seguir.
1. Ordem de gerao de estados sucessores: movimentar blocos esquerda da
posio vazia antes de movimentar os blocos direita da posio vazia; e
movimentar os blocos mais prximos da posio vazia antes dos blocos mais
distantes.
2. Ordem de insero de estados sucessores na borda: a ordem de insero dos
filhos de um n na lista de ns a serem processados (na borda) deve obedecer a
mesma ordem de gerao quando armazenados numa fila ou pilha, exceto
quando a borda for implementada como uma fila de prioridades.
3. No caso da lista de prioridade, ns de estados diferentes porm com o mesmo
custo (empate), devem ser ordenados segundo a sua ordem cronolgica.
4.2 Formato de Entrada
Arquivos contendo rgua-puzzles, consistem de duas linhas: a primeira corresponde
ao nmeros de blocos brancos (igual ao nmero de blocos azuis). Se a primeira linha
contm o nmero N, ento o puzzle consiste de N blocos brancos, N blocos azuis e
2N+1 posies. A segunda linha mostra o estado inicial, descrito como uma sequncia
de caracteres B (blocos brancos), caracteres A (blocos azuis) e 1 caracter - para
indicar a casa vazia. Exemplo de um problema rgua-puzzle:
2
BA-AB

5 Linguagem de programao
Voc poder usar as seguintes linguagens de programao: C, C++, Java ou Python. A
entrega ser eletrnica atravs do sistema PACA.

6 Exemplos de puzzles para testar os algoritmos


Para cada valor de N, voc deve resolver trs tipos diferentes de instncias de
problemas, que chamaremos de blocos alternados, falta um e blocos invertidos. Veja
os exemplos a seguir para N=2, 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

7 Instrues gerais

Faa o seu programa bem estruturado, bem documentado e sozinho (ou


somente com o seu parceiro de dupla).

Aps testar o seu programa e resolver os problema da rgua-puzzle, resolva


tambm o problema extra da Travessia da Ponte, especificado no PACA.

Voc dever entregar um relatrio com grficos mostrando os resultados dos


experimentos e uma anlise de desempenho, para os dois problemas e suas
instncias. Discutiremos em sala de aula como podemos compactar todas
essas informaes em poucos grficos. Um exemplo de relatrio ser
disponibilizado na pgina da disciplina.

A nota ser a mdia entre a nota do relatrio (entre 0 e 10) e do programa


(entre 0 e 10), sendo que ambas devero ser maior ou igual a 5, caso contrrio,
a nota final ser a menor delas.

También podría gustarte