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