Upload
quintana-topaz
View
63
Download
1
Embed Size (px)
DESCRIPTION
Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha. Autores: Rafael Renato. Introdução. Definição do Problema Análise dos Algoritmos Implementação Resultados Discussão. Definição do Problema. Jogo com adversário Definir Estado Inicial Grupo de Operadores - PowerPoint PPT Presentation
Citation preview
Implementação dos Algoritmos Minimax e AlfaBeta aplicados
ao Jogo da Velha
Autores: Rafael
Renato
Introdução
• Definição do Problema
• Análise dos Algoritmos
• Implementação
• Resultados
• Discussão
Definição do Problema
• Jogo com adversário
• Definir– Estado Inicial– Grupo de Operadores– Teste de terminação– Função Utilidade
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
Á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
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)
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
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
Exemplo da Implementação
Resultados
• Foram realizados 09 testes com o algoritmo MINIMAX e 02 com o algoritmo AlfaBeta
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
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
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
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
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
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
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
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
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
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
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
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.