1 / 22

Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha

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

Télécharger la présentation

Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 • 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 jogadaatravés de pesos • +1 , 0, -1 respectivamente, ganhar, empatar e perder

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

  6. 2 1 1 1 MAX MAX MAX 2 1 MIN MIN MIN 2 2 2 3 3 3 MAX MAX MAX 4 4 4 6 6 6 5 5 5 7 7 7 2 7 7 7 1 2 2 1 1 8 8 8 MINIMAX 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)

  7. 1 A <=1 B 2 3 A 4 6 5 7 2 7 1 8 1 A B 2 3 A 4 6 5 7 2 7 1 8 AlfaBeta 2 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. 3 1 2 4 1.052 59.704 7 5 6 8 4 46 X X X X X X X X X 0 0 0 0 0 0 X X X 0 0 X 0 0 0 0 0 0 0 0 9 0 0 0 X X X X X X X X X X X X Teste 1 MM Teste 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

  12. 8 3 1 2 4 7 5 6 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X X X X X X 0 0 0 X X X X X X X X X X X X 9 0 0 0 0 0 X X 0 7.331 549.945 13 197 1 Teste 2 MM 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. 3 1 2 4 830 55.504 7 5 6 8 4 48 0 0 0 0 0 0 0 0 X X X 0 0 0 0 X X X X X X X 0 0 0 0 0 0 X X X X X X X X X 9 X X X X X 0 0 X Teste 3 MM Teste 3 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

  14. 0 0 0 0 0 0 0 X X X 0 0 0 0 0 0 X X 0 0 0 0 X X X X X X 3 1 2 4 7 5 6 Teste 4 MM Teste 4 Jogadas 1a – Máquina 0/0 2a – Humano 2/2 3a – Máquina 0/2 549.945 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. 3 1 2 4 1.456 63.904 7 5 6 8 4 60 0 0 0 0 0 0 0 0 X X X X X X X X X 0 0 0 0 X X X X X X 0 0 0 0 0 0 9 X X X 0 0 X X X X X X X Teste 5 MM Teste 5 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

  16. 0 0 0 0 0 0 0 0 0 X X X X X X 3 1 2 4 7.979 549.945 5 173 Teste 6 MM 8 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. 3 1 2 4 1.456 63.904 7 5 6 8 4 60 0 0 0 0 0 0 0 0 X X X X X 0 0 0 0 0 0 X X X X X X X X X X 0 0 0 0 9 X X X 0 0 X X X X X X X Teste 7 MM 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

  18. 0 0 0 0 0 0 0 X X X 0 0 0 0 0 0 0 X X 0 0 0 X X X X X X 3 1 2 4 7.979 549.945 7 5 6 10 257 8 Teste 8 MM 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. 3 1 2 4 1.052 59.704 7 5 6 8 4 46 X X X X X X X 0 0 0 0 0 0 X X X 0 0 X 0 0 0 0 0 0 0 0 9 0 0 0 X X X X X X X X X X X X X X Teste 9 MM Teste 9 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. 3 1 2 4 432 3.463 7 5 6 8 4 44 X X X X X X X X X 0 0 0 0 0 0 X X X 0 0 X 0 0 0 0 0 0 0 0 9 0 0 0 X X X X X X X X X X X X Teste 1 AB Teste 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

  21. 8 3 1 2 4 7 5 6 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X X X X X X 0 0 0 X X X X X X X X X X X X 9 0 0 0 0 0 X X 0 1.193 25.226 11 93 1 Teste 2 AB  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 = 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.

More Related