Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha
-
Upload
quintana-topaz -
Category
Documents
-
view
68 -
download
1
description
Transcript of Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha
![Page 1: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/1.jpg)
Implementação dos Algoritmos Minimax e AlfaBeta aplicados
ao Jogo da Velha
Autores: Rafael
Renato
![Page 2: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/2.jpg)
Introdução
• Definição do Problema
• Análise dos Algoritmos
• Implementação
• Resultados
• Discussão
![Page 3: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/3.jpg)
Definição do Problema
• Jogo com adversário
• Definir– Estado Inicial– Grupo de Operadores– Teste de terminação– Função Utilidade
![Page 4: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/4.jpg)
O Jogo• Estado Inicial
– posição atual e uma indicação do próximo estado • 06 casas vazias a serem preenchidas intercaladamente
• Grupo de Operadores– movimentos aceitos pelas regras, que o jogador pode fazer
• Marcar um ´X´ (jogador A) ou um ´0´ (jogador B) em qualquer casa vazia
• Teste de Terminação – define quando o jogo terminou e se houve um ganhador
• Termina quando uma linha, coluna ou diagonal está totalmente preenchida por ´X` ou ´0´
• Função Utilidade – analisa quantitativamente uma jogada através de pesos
• +1 , 0, -1 respectivamente, ganhar, empatar e perder
![Page 5: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/5.jpg)
Árvore de Decisão
X X X
X X X
X X X
Nível 1
Nível 2
000
000
Nível 10
Nível Nó (n0 de Jogadas) Resultado1 1 12 9 93 9x8 724 9x8x7 5045 9x8x7x6 3.0246 9x8x7x6x5 15.1207 9x8x7x6x5x4 60.4808 9x8x7x6x5x4x3 181.4409 9x8x7x6x5x4x3x2 362.880
10 9x8x7x6x5x4x3x2x1 362.880
986.410
![Page 6: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/6.jpg)
MINIMAX
2 7 1 8
MAX
MIN
MAX
1
2 3
4 5 6 7
2 7 1 8
MAX
MIN
MAX
1
2 3
4 5 6 7
2 7 1 8
MAX
MIN
MAX
1
2 3
4 5 6 7
2 1
2
2 1
C.T. = O(b**d)onde b é o Fator de Ramificação e d é a profundidade da árvore
C.E. = O(b*d)
![Page 7: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/7.jpg)
AlfaBeta
2 7 1 8
A
B
A
1
2 3
4 5 6 7
2 7 1 8
A
B
A
1
2 3
4 5 67
<=12
2
2
![Page 8: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/8.jpg)
Implementação• seleciona_algoritmo – permite que se escolha qual o algoritmo a ser
executado• jogada_humana – a inserção dos valores escolhidos pelo humano no
programa• jogada_maquina – o valor que a máquina escolheu• inicializa – a inicialização do algoritmo• teste_terminacao – a verificação se a última jogada levou a um ganhador ou a
um empate• imprime – impressão de cada uma das matrizes para orientação gráfica do
humano• imprime_vencedor – impressão das mensagens de quem foi o ganhador ou se
deu empate (velha)• gerar_filhos – a cada jogada é necessário calcular os filhos a paritr daquele nó
para fazer a execução dos algoritmos MINIMAX ou ALFABETA• avaliacao – verifica se nas folhas o resultado foi 1(´0´ – a máquina ganhou)
‑1(´X´ – o humano ganhou) ou 0 (empate – deu velha)• apagar_filhos – a cada jogada temos que apagar os filhos e recomeçar• copia - Está função copia a matriz de jogo de um nó para outro com o intuito de
propagar uma jogada
![Page 9: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/9.jpg)
Exemplo da Implementação
![Page 10: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/10.jpg)
Resultados
• Foram realizados 09 testes com o algoritmo MINIMAX e 02 com o algoritmo AlfaBeta
![Page 11: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/11.jpg)
Teste 1 MMTeste 1 Jogadas 1a – Humano 0/02a – Máquina 1/13a – Humano 2/24a – Máquina 0/15a – Humano 2/16a – Máquina 2/07a – Humano 0/28a – Máquina 1/29a – Humano 1/010a – Final - Velha
X X
0
X
0
X
X 0
0
X
X 0
0
X X
X 0
0
X X
X 0 X
0
0 X X
X 0 X
0 0
0 X X
X 0 X
X 0 0
0 X X
1 2 3 4
5 6 7 8
9
59.704 1.052
46 4
![Page 12: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/12.jpg)
Teste 2 MM
0
0
X
0 0
X
0 0 X
X
0 0 X
X
0
0 0 X
X X
0
0 0 X
X X 0
0
0 0 X
X X 0
0 X
0 0 X
X X 0
0 X 0
1 2 3 4
5 6 7 8
9
549.945 7.331
197 13
1
Jogadas 1a – Máquina 0/02a – Humano 1/13a – Máquina 0/14a – Humano 0/25a – Máquina 2/06a – Humano 1/07a – Máquina 1/28a – Humano 2/19a – Máquina 2/210a – Final - Velha
Teste 2
![Page 13: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/13.jpg)
Teste 3 MMTeste 3 Jogadas 1a – Humano 1/12a – Máquina 0/03a – Humano 1/24a – Máquina 1/05a – Humano 2/06a – Máquina 0/27a – Humano 0/18a – Máquina 2/19a – Humano 2/210a – Final - Velha
X
0
X
0
X X
0
0 X X
0
0 X X
X
0 0
0 X X
X
0 X 0
0 X X
X
0 X 0
0 X X
X 0
0 X 0
0 X X
X 0 X
1 2 3 4
5 6 7 8
9
55.504 830
48 4
![Page 14: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/14.jpg)
Teste 4 MM
0
0
X
0 0
X
0 X 0
X
0 X 0
0 X
0 X 0
X
0 X
0 0 0
X 0
0 X
1 2 3 4
5 6 7
549.945 7979
257 11
Teste 4 Jogadas 1a – Máquina 0/02a – Humano 2/23a – Máquina 0/2
4a – Humano 0/15a – Máquina 2/06a – Humano 1/0 E 1/17a – Máquina 1/18a – Final –Máquina Ganhou
![Page 15: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/15.jpg)
Teste 5 MMTeste 5 Jogadas 1a – Humano 0/12a – Máquina 0/03a – Humano 2/24a – Máquina 1/15a – Humano 1/06a – Máquina 0/27a – Humano 2/08a – Máquina 2/19a – Humano 1/210a – Final - Velha
X
0 X
0 X
X
0 X
0
X
0 X
X 0
X
0 X 0
X 0
X
0 X 0
X 0
X X
0 X 0
X 0
X 0 X
0 X 0
X 0 X
X 0 X
1 2 3 4
5 6 7 8
9
63.904 1.456
60 4
![Page 16: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/16.jpg)
Teste 6 MM
0 0
X
0 0
X
0 0
X
X
0 0 0
X
X
1 2 3 4
5
549.945 7.979
173
Teste 6 Jogadas 1a – Máquina 0/02a – Humano 2/23a – Máquina 0/24a – Humano 1/15a – Máquina 0/16a – Final –Máquina Ganhou
8
![Page 17: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/17.jpg)
Teste 7 MMTeste 7 Jogadas 1a – Humano 1/02a – Máquina 0/03a – Humano 2/24a – Máquina 0/25a – Humano 0/16a – Máquina 1/17a – Humano 2/08a – Máquina 2/19a – Humano 1/210a – Final - Velha
X
0
X
0
X
X
0 0
X
X
0 X 0
X
X
0 X 0
X 0
X
0 X 0
X 0
X X
0 X 0
X 0
X 0 X
0 X 0
X 0 X
X 0 X
1 2 3 4
5 6 7 8
9
63.904 1.456
60 4
![Page 18: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/18.jpg)
Teste 8 MM
0 0
X
0 0
X
0 X 0
X
0 X 0
0 X
0 X 0
X
0 X
0 0 0
0 X
0 X
1 2 3 4
5 6 7
549.945 7.979
257 10
Teste 8 Jogadas 1a – Máquina 0/02a – Humano 2/23a – Máquina 0/24a – Humano 0/15a – Máquina 2/06a – Humano 1/0 E 1/17a – Máquina 1/08a – Final –Máquina Ganhou
8
![Page 19: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/19.jpg)
Teste 9 MM Jogadas 1a – Humano 2/22a – Máquina 1/13a – Humano 0/04a – Máquina 0/15a – Humano 2/16a – Máquina 2/07a – Humano 0/28a – Máquina 1/29a – Humano 1/010a – Final - Velha
X
0
X
X
0
X
X 0
0
X
X 0
0
X X
X 0
0
X X
X 0 X
0
0 X X
X 0 X
0 0
0 X X
X 0 X
X 0 0
0 X X
1 2 3 4
5 6 7 8
9
Teste 9 59.704 1.052
46 4
![Page 20: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/20.jpg)
Teste 1 AB
X X
0
X
0
X
X 0
0
X
X 0
0
X X
X 0
0
X X
X 0 X
0
0 X X
X 0 X
0 0
0 X X
X 0 X
X 0 0
0 X X
1 2 3 4
5 6 7 8
9
3.463 432
44 4
Teste 1 Jogadas 1a – Humano 0/02a – Máquina 1/13a – Humano 2/24a – Máquina 0/15a – Humano 2/16a – Máquina 2/07a – Humano 0/28a – Máquina 1/29a – Humano 1/010a – Final - Velha
![Page 21: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/21.jpg)
Teste 2 AB
0
0
X
0 0
X
0 0 X
X
0 0 X
X
0
0 0 X
X X
0
0 0 X
X X 0
0
0 0 X
X X 0
0 X
0 0 X
X X 0
0 X 0
1 2 3 4
5 6 7 8
9
25.226 1.193
93 11
1
Teste 2Jogadas 1a – Máquina 0/02a – Humano 1/13a – Máquina 0/14a – Humano 0/25a – Máquina 2/06a – Humano 1/07a – Máquina 1/28a – Humano 2/19a – Máquina 2/210a – Final - Velha
![Page 22: Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha](https://reader033.fdocumentos.tips/reader033/viewer/2022061522/568137d7550346895d9f7684/html5/thumbnails/22.jpg)
Discussão• Baseados no resultado dos testes realizados podemos ver que o algoritmo
ALFABETA tem expansões muito menores do que o algoritmo MINIMAX (ALFABETA = 25.256, quando a máquina inicia, contra MINIMAX = 549.945 o que nos dá uma ordem de grandeza 20 vezes maior, e ALFABETA = 3.463, quando o humano inicia, contra MINIMAX = 59.704 o que nos dá uma ordem de grandeza 17 vezes maior.)
• Um valor que resultou diferente da análise teórica foi, quando a máquina inicia
(MINIMAX = 549.945), pois este valor deveria ter dado 986.410. A explicação para esta discrepância vem do fato do algoritmo MINIMAX estar cortando a continuação da geração dos filhos quando algum jogador ganha, não chegando ao nível 10, mas parando no nível 7 ou 5 como visto nos resultados “teste 6” e “teste 8”.
• Outra análise que podemos fazer é que o jogo da velha tem simetria em torno
de algumas posições, portanto não haveria necessidade de se expandir todos os ramos pois estes são simétricos e, utilizando técnicas de álgebra linear tais como rotação e translação, poderíamos chegar ao resultado sem ocupar tanta memória. Este fato pode ser visto comparando os testes 7 e 5 (MINIMAX) e 1 e 10 (MINIMAX), neles podemos ver que no teste 7 a jogada 4/5/6 é invertida do teste 5, jogada 4/5/6, e o resto das posições é igual. O mesmo ocorre para o teste 1 e 10 nas jogadas 1/2/3.