Sie sind auf Seite 1von 22

Implementao dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha

Autores: Rafael Renato

Introduo
Definio do Problema Anlise dos Algoritmos Implementao Resultados Discusso

Definio do Problema
Jogo com adversrio Definir
Estado Inicial Grupo de Operadores Teste de terminao Funo Utilidade

O Jogo
Estado Inicial
posio atual e uma indicao do prximo 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 Terminao
define quando o jogo terminou e se houve um ganhador
Termina quando uma linha, coluna ou diagonal est totalmente preenchida por X` ou 0

Funo Utilidade analisa quantitativamente uma jogada atravs de pesos


+1 , 0, -1 respectivamente, ganhar, empatar e perder

rvore de Deciso
Nvel 1 2 3 4 5 6 7 8 9 10 N (n0 de Jogadas) 1 9 9x8 9x8x7 9x8x7x6 9x8x7x6x5 9x8x7x6x5x4 9x8x7x6x5x4x3 9x8x7x6x5x4x3x2 9x8x7x6x5x4x3x2x1 Resultado 1 9 72 504 3.024 15.120 60.480 181.440 362.880 362.880 986.410
X X X X X X X X

Nvel 1

Nvel 2
X

0 0 0

0 0 0 Nvel 10

MINIMAX
1 MAX 1 MAX 2 3 MIN 2

2
5

1
6

MIN

MAX 7

MAX 7

8
MAX

2
C.T. = O(b**d)
onde b o Fator de Ramificao e d a profundidade da rvore
4 2 1

2
5

1
6

MIN

MAX 7

C.E. = O(b*d)

AlfaBeta
2
1
A 1 A 2

2
5 6

2
5 6

<=1
3 B A 7

A 7

Implementao
seleciona_algoritmo permite que se escolha qual o algoritmo a ser executado jogada_humana a insero dos valores escolhidos pelo humano no programa jogada_maquina o valor que a mquina escolheu inicializa a inicializao do algoritmo teste_terminacao a verificao se a ltima jogada levou a um ganhador ou a um empate imprime impresso de cada uma das matrizes para orientao grfica do humano imprime_vencedor impresso das mensagens de quem foi o ganhador ou se deu empate (velha) gerar_filhos a cada jogada necessrio calcular os filhos a paritr daquele n para fazer a execuo dos algoritmos MINIMAX ou ALFABETA avaliacao verifica se nas folhas o resultado foi 1(0 a mquina ganhou) -1(X o humano ganhou) ou 0 (empate deu velha) apagar_filhos a cada jogada temos que apagar os filhos e recomear copia - Est funo copia a matriz de jogo de um n para outro com o intuito de propagar uma jogada

Exemplo da Implementao

Resultados
Foram realizados 09 testes com o algoritmo MINIMAX e 02 com o algoritmo AlfaBeta

Teste 1 MM
Teste 1 Jogadas 1a Humano 0/0 2a Mquina 1/1 3a Humano 2/2 4a Mquina 0/1 5a Humano 2/1 6a Mquina 2/0 7a Humano 0/2 8a Mquina 1/2 9a Humano 1/0 10a Final - Velha X 1 X 0 2 59.704 X 0 3 X 4 1.052 0 0

X
5 X 0 0 X X 9 X X 0 0 0 X X 0 X X 6 46 0 0 X X 0 X

X
8 X X 0 0 X 0 X

7
0 0 X

4 X 0 X

Teste 2 MM
Teste 2
Jogadas 1a Mquina 0/0 2a Humano 1/1 3a Mquina 0/1 4a Humano 0/2 5a Mquina 2/0 6a Humano 1/0 7a Mquina 1/2 8a Humano 2/1 9a Mquina 2/2 10a Final - Velha 0

1 549.945
0

2
0 X

3 7.331 0 X

4
0 0 X X

197 0 X X

6 0 X 0 9 0 X X 0 X 0

7 0 X

13 X 0 0 X 0

8 0 X X X 0

0 X 0

0 X X

1 X 0 0

Teste 3 MM
Teste 3 1 0 X X 2 55.504 0 X X 3 0 0 X X 4 830

Jogadas
1a Humano 1/1 2a Mquina 0/0 3a Humano 1/2 4a Mquina 1/0 5a Humano 2/0 6a Mquina 0/2 7a Humano 0/1 8a Mquina 2/1 9a Humano 2/2 10a Final - Velha

5
0 0 X X X 0 0 X 9 0 0 X X X 0

48 0 0 0 X

7 X X 0 X 0 0 X

8
X X 0

4 0 X

0 X X

Teste 4 MM
Teste 4

Jogadas 1a Mquina 0/0 2a Humano 2/2 3a Mquina 0/2 4a Humano 0/1 5a Mquina 2/0 6a Humano 1/0 E 1/1 7a Mquina 1/1 8a Final Mquina Ganhou 0

1 549.945 0

2 0

3 7979 0 0

4 X 0

X 5 257 0 X 0 0 X 0 X 0 X 6 X 0 0 X 0

X 7 11 0 0 X 0

Teste 5 MM
Teste 5 Jogadas 1a Humano 0/1 2a Mquina 0/0 3a Humano 2/2 4a Mquina 1/1 5a Humano 1/0 6a Mquina 0/2 7a Humano 2/0 8a Mquina 2/1 9a Humano 1/2 10a Final - Velha

1
X 0

2
X

63.904
0

3 X 0

4
X 0 X

1.456

X 8 0 0 X X X X 0 0 X 0 4

5 0 X X 0 X 9 0 X X X 0 0 0 X

6 X 0

60 0 0 X X X

7 X 0

0 X X

Teste 6 MM
1 Teste 6 Jogadas 1a Mquina 0/0 2a Humano 2/2 3a Mquina 0/2 4a Humano 1/1 5a Mquina 0/1 6a Final Mquina Ganhou X 5 X 0 549.945 0 2 0 3 7.979 0 4 0 X X 0

173 0 0 X X

Teste 7 MM
Teste 7 Jogadas X Humano 1/0 Mquina 0/0 3a Humano 2/2 4a Mquina 0/2 5a Humano 0/1 6a Mquina 1/1 7a Humano 2/0 8a Mquina 2/1 9a Humano 1/2 10a Final - Velha 1a 2a X X X 1 0 2 63.904 0 3 0 4 1.456 0

X
5 0 X X 9 0 X X X 0 0 0 X X X 0 0 X 6

X
8 0 0 X X X X 0 0 X

60 X 0 0 X

7
0 X X X 0

4 0

Teste 8 MM
Teste 8 0 Jogadas 1a Mquina 0/0 2a Humano 2/2 3a Mquina 0/2 4a Humano 0/1 5a Mquina 2/0 6a Humano 1/0 E 1/1 7a Mquina 1/0 8a Final Mquina Ganhou X 5 257 0 X 0 0 6 X X 0 X 0 X 0 0 0 0 7 0 X X X X 1 549.945 0 2 0 3 7.979 0 0 4 X 0

10 0

Teste 9 MM
Teste 9

1 Jogadas
1a Humano 2/2 2a Mquina 1/1 3a Humano 0/0 4a Mquina 0/1 5a Humano 2/1 6a Mquina 2/0 7a Humano 0/2 8a Mquina 1/2 9a Humano 1/0 10a Final - Velha

59.704
X

3 X 0

4
0 0 X

1.052

0 X 5 X 0 0 X X 9 X X 0 0 0 X X 0 X X 6 0 0 X X 0 X 46 X

X 8 X X 0 0 X 0 X X 0 X 4

7 0 0 X

Teste 1 AB
Teste 1 Jogadas 1a Humano 0/0 2a Mquina 1/1 3a Humano 2/2 4a Mquina 0/1 5a Humano 2/1 6a Mquina 2/0 7a Humano 0/2 8a Mquina 1/2 9a Humano 1/0 10a Final - Velha X 1 X 0 2 3.463 X 0 X 5 6 44 7 8 3 X 4 0 0 X 4 432

0 0
X X

0 0
X X

0 0

0 0

X
0 X

9 X X 0 0 0 X X 0 X

Teste 2 AB
1 25.226 2 0 X 0 3 1.193 0 X 0 4 0 X X

Teste 2 Jogadas
1a Mquina 0/0 2a Humano 1/1 3a Mquina 0/1 4a Humano 0/2 5a Mquina 2/0 6a Humano 1/0 7a Mquina 1/2 8a Humano 2/1 9a Mquina 2/2 10a Final - Velha

5 93 0 0 X 0 X 0 X 0 9 0 0 1

6 0 X X 0 X 0

7 0 X

11 X 0 0 X 0

8 0 X X X 0

X 0 0

X
0

X
X

Discusso
Baseados no resultado dos testes realizados podemos ver que o algoritmo ALFABETA tem expanses muito menores do que o algoritmo MINIMAX (ALFABETA = 25.256, quando a mquina 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 anlise terica foi, quando a mquina inicia (MINIMAX = 549.945), pois este valor deveria ter dado 986.410. A explicao para esta discrepncia vem do fato do algoritmo MINIMAX estar cortando a continuao da gerao dos filhos quando algum jogador ganha, no chegando ao nvel 10, mas parando no nvel 7 ou 5 como visto nos resultados teste 6 e teste 8. Outra anlise que podemos fazer que o jogo da velha tem simetria em torno de algumas posies, portanto no haveria necessidade de se expandir todos os ramos pois estes so simtricos e, utilizando tcnicas de lgebra linear tais como rotao e translao, poderamos chegar ao resultado sem ocupar tanta memria. 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 posies igual. O mesmo ocorre para o teste 1 e 10 nas jogadas 1/2/3.

Das könnte Ihnen auch gefallen