Trabalho de Inteligência Artificial

Propaganda
Trabalho de
Inteligência Artificial
Grupo:
Dino Leonetti
Fabio Marzullo
Tema: Jogo Reversi

O Problema:



Consiste em um tabuleiro dividido em
nxn casas.
Comumente encontrado no tamanho
8x8.
Jogadores se revezam tentando
transformar peças do adversário em
suas.
2
Regras do Jogo
 Tabuleiro inicia com
4 peças no centro.
 As peças iniciais são
dispostas na diagonal.
 O jogador deve tentar encobrir peças do adversário em
qualquer direção
 Não há limite de peça a encobrir
 Peças encobertas serão substituídas
 Se não houver jogada válida o jogador passa a vez.
 Ganha quem tiver o maior número de peças da sua cor.
3
Implementação
Desenvolvido em Java.
 Utilização de técnicas de IA.


Algoritmos utilizados:
Mini-Max e Alfa-Beta.
4
Dificuldades Encontradas

Performance.




Linguagem de programação orientada à
objetos.
Tempo excessivo gasto com criação de
objetos.
Uma jogada demorava em média 30
segundos.
Heurística

Dificuldade em encontrar uma heurística que
atendesse o tamanho variável do tabuleiro.
5
Heurísticas

Solução 1: Heurísticas Existentes



Diversas heurísticas disponíveis na internet.
Todas para tabuleiro tamanho 8x8.
Solução 2 (utilizada): Criação de
Heurística Própria

Foi criada uma heurística que satisfizesse
nossas necessidades.
6
Heurística Utilizada

Características da Busca:




A árvore de busca não é expandida até o final.
Limite da altura da árvore por questões de
performance.
Conforme a altura da árvore aumenta, maior é o nível
de dificuldade (melhor é a jogada do computador).
Avaliação de um nó:


O nó não é necessariamente um nó folha.
Para cada peça do jogador da vez soma-se o peso
correspondente à sua posição no tabuleiro.
7
Pesos das Casas do
Tabuleiro
20
0
10
10
10
10
10
10
0
20
0
0
10
10
10
10
10
10
0
0
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
5
5
10
10
10
10
10
10
10
10
5
5
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
0
0
10
10
10
10
10
10
0
0
20
0
10
10
10
10
10
10
0
20
8
Heurística Utilizada

Considerações sobre a Heurística




As casas do meio mudam freqüentemente o seu valor. Por isso
achamos que não valia muito possuir uma casa dessas.
As casas do canto são muito valiosas, uma vez que seu valor
nunca poderá ser alterado.
As casas vizinhas às casas do canto são as piores casas do
tabuleiro, uma vez que se você possuí-las, você dará
oportunidade do adversário dominar um canto.
Todas as outras casas têm um valor razoavelmente bom, e
quanto mais você possuir, mais opções de jogo você terá,
reduzindo as chances de você ter que ceder a vez.
9
Algoritmo Mini-Max


Utiliza busca em profundidade.
Complexidade O(bm).


b é o fator médio de ramificação e
m e a profundidade da árvore.
Expande a árvore inteira até a altura da árvore
estipulada pelo nível de dificuldade.
10
Algoritmo Alfa-Beta


Analisa o algoritmo Mini-Max em busca de
expansões desnecessárias da árvore.
Aumento de Performance.

Redução considerável da quantidade de nós
expandidos de uma jogada.
11
Análise dos Nós Expandidos
Mini-Max x Alfa-Beta
12
Análise dos Nós Expandidos
Mini-Max x Alfa-Beta
13
Conclusão



Pudemos ver na prática como o tempo de
resposta aumenta exponencialmente em
relação ao aumento da altura da árvore.
O fator de corte do algoritmo Alfa-Beta foi
surpreendente (maior que o imaginado).
Uma linguagem orientada à objetos é
inadequada para a abordagem de jogos.
14
Bibliografia:
 Russel & Norvig
Artificial Intelligence:
A Modern Approach
15
Download