A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Autores: Rafael Renato

Apresentações semelhantes


Apresentação em tema: "Autores: Rafael Renato"— Transcrição da apresentação:

1 Autores: Rafael Renato
Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha Autores: Rafael Renato

2 Introdução Definição do Problema Análise dos Algoritmos Implementação
Resultados Discussão

3 Definição do Problema Jogo com adversário Definir Estado Inicial
Grupo de Operadores Teste de terminação Função Utilidade

4 O Jogo Estado Inicial Grupo de Operadores Teste de Terminação
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

5 Árvore de Decisão Tabela 1 Nível Nó (n0 de Jogadas) Resultado 1 2 9 3
Árvore de Decisão Nível Nó (n0 de Jogadas) Resultado 1 2 9 3 9x8 72 4 9x8x7 504 5 9x8x7x6 3.024 6 9x8x7x6x5 15.120 7 9x8x7x6x5x4 60.480 8 9x8x7x6x5x4x3 9x8x7x6x5x4x3x2 10 9x8x7x6x5x4x3x2x1 X Nível 1 Nível 2 Nível 10

6 MINIMAX 2 7 1 8 2 7 1 8 2 1 2 7 1 8 C.T. = O(b**d) C.E. = O(b*d)
3 4 5 6 2 7 1 8 MAX MIN 3 4 5 6 2 1 2 7 1 8 MAX MIN 3 4 5 6 C.T. = O(b**d) onde b é o Fator de Ramificação e d é a profundidade da árvore C.E. = O(b*d)

7 AlfaBeta 2 2 7 1 8 A B 3 4 5 6 <=1 2 7 1 8 A B 3 4 5 6 2 2

8 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

9 Exemplo da Implementação

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

11 Teste 1 MM Teste 1 Jogadas 1a – Humano 0/0 2a – Máquina 1/1
Jogadas 1a – Humano 0/0 2a – Máquina 1/1 3a – Humano 2/2 4a – Máquina 0/1 5a – Humano 2/1 6a – Máquina 2/0 7a – Humano 0/2 8a – Máquina 1/2 9a – Humano 1/0 10a – Final - Velha X 1 2 3 4 5 6 7 8 9 59.704 1.052 46 4

12 8 Teste 2 MM X 1 2 3 4 5 6 7 8 9 7.331 197 13 1 Teste 2 Jogadas 1a – Máquina 0/0 2a – Humano 1/1 3a – Máquina 0/1 4a – Humano 0/2 5a – Máquina 2/0 6a – Humano 1/0 7a – Máquina 1/2 8a – Humano 2/1 9a – Máquina 2/2 10a – Final - Velha

13 Teste 3 MM Teste 3 Jogadas 1a – Humano 1/1 2a – Máquina 0/0
Jogadas 1a – Humano 1/1 2a – Máquina 0/0 3a – Humano 1/2 4a – Máquina 1/0 5a – Humano 2/0 6a – Máquina 0/2 7a – Humano 0/1 8a – Máquina 2/1 9a – Humano 2/2 10a – Final - Velha X 1 2 3 4 5 6 7 8 9 55.504 830 48 4

14 Teste 4 MM Jogadas 1a – Máquina 0/0 2a – Humano 2/2 3a – Máquina 0/2 X
Jogadas 1a – Máquina 0/0 2a – Humano 2/2 3a – Máquina 0/2 X 1 2 3 4 5 6 7 7979 4a – Humano 0/1 5a – Máquina 2/0 6a – Humano 1/0 E 1/1 7a – Máquina 1/1 8a – Final – Máquina Ganhou 257 11

15 Teste 5 MM Teste 5 Jogadas 1a – Humano 0/1 2a – Máquina 0/0
Jogadas 1a – Humano 0/1 2a – Máquina 0/0 3a – Humano 2/2 4a – Máquina 1/1 5a – Humano 1/0 6a – Máquina 0/2 7a – Humano 2/0 8a – Máquina 2/1 9a – Humano 1/2 10a – Final - Velha X 1 2 3 4 5 6 7 8 9 63.904 1.456 60 4

16 Teste 6 MM 8 X 1 2 3 4 5 549.945 7.979 173 Teste 6 Jogadas
X 1 2 3 4 5 7.979 173 Teste 6 Jogadas 1a – Máquina 0/0 2a – Humano 2/2 3a – Máquina 0/2 4a – Humano 1/1 5a – Máquina 0/1 6a – Final – Máquina Ganhou

17 Teste 7 MM X 1 2 3 4 5 6 7 8 9 Teste 7 Jogadas 1a – Humano 1/0
1 2 3 4 5 6 7 8 9 Teste 7 Jogadas 1a – Humano 1/0 2a – Máquina 0/0 3a – Humano 2/2 4a – Máquina 0/2 5a – Humano 0/1 6a – Máquina 1/1 7a – Humano 2/0 8a – Máquina 2/1 9a – Humano 1/2 10a – Final - Velha 63.904 1.456 60 4

18 Teste 8 MM 8 X 1 2 3 4 5 6 7 549.945 7.979 257 10 Teste 8 Jogadas
X 1 2 3 4 5 6 7 7.979 257 10 Teste 8 Jogadas 1a – Máquina 0/0 2a – Humano 2/2 3a – Máquina 0/2 4a – Humano 0/1 5a – Máquina 2/0 6a – Humano 1/0 E 1/1 7a – Máquina 1/0 8a – Final – Máquina Ganhou

19 Teste 9 MM Teste 9 X 1 2 3 4 5 6 7 8 9 59.704 1.052 46 4 Jogadas
X 1 2 3 4 5 6 7 8 9 59.704 1.052 46 4 Jogadas 1a – Humano 2/2 2a – Máquina 1/1 3a – Humano 0/0 4a – Máquina 0/1 5a – Humano 2/1 6a – Máquina 2/0 7a – Humano 0/2 8a – Máquina 1/2 9a – Humano 1/0 10a – Final - Velha

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

21 Teste 2 AB 8 X 1 2 3 4 5 6 7 8 9 25.226 1.193 93 11 1 Teste 2 Jogadas
X 1 2 3 4 5 6 7 8 9 25.226 1.193 93 11 1  Teste 2 Jogadas 1a – Máquina 0/0 2a – Humano 1/1 3a – Máquina 0/1 4a – Humano 0/2 5a – Máquina 2/0 6a – Humano 1/0 7a – Máquina 1/2 8a – Humano 2/1 9a – Máquina 2/2 10a – Final - Velha

22 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 = , quando a máquina inicia, contra MINIMAX = o que nos dá uma ordem de grandeza 20 vezes maior, e ALFABETA = 3.463, quando o humano inicia, contra MINIMAX = 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 = ), pois este valor deveria ter dado 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.


Carregar ppt "Autores: Rafael Renato"

Apresentações semelhantes


Anúncios Google