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

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

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

Apresentações semelhantes


Apresentação em tema: "Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha Autores: Rafael Renato."— Transcrição da apresentação:

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

5 Árvore de Decisão XX X XXX XX X Nível 1 Nível Nível 10 Tabela 1 NívelNó (n 0 de Jogadas)Resultado x872 49x8x x8x7x x8x7x6x x8x7x6x5x x8x7x6x5x4x x8x7x6x5x4x3x x8x7x6x5x4x3x2x

6 MINIMAX MAX MIN MAX MIN MAX MIN MAX 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 A B A A B A <=

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 1 a – Humano 0/0 2 a – Máquina 1/1 3 a – Humano 2/2 4 a – Máquina 0/1 5 a – Humano 2/1 6 a – Máquina 2/0 7 a – Humano 0/2 8 a – Máquina 1/2 9 a – Humano 1/0 10 a – Final - Velha XX 0 X 0 X X0 0 X X0 0 XX X0 0 XX X0X 0 0XX X0X 0 0 0XX X0X X0 0 0XX

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

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

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

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

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

17 Teste 7 MM Teste 7 Jogadas 1 a – Humano 1/0 2 a – Máquina 0/0 3 a – Humano 2/2 4 a – Máquina 0/2 5 a – Humano 0/1 6 a – Máquina 1/1 7 a – Humano 2/0 8 a – Máquina 2/1 9 a – Humano 1/2 10 a – Final - Velha X 0 X 0 X X 00 X X 0X0 X X 0X0 X0 X 0X0 X0 XX 0X0 X0 X0X 0X0 X0 X X0X

18 Teste 8 MM 00 X 00 X 0X0 X 0X0 0X 0X0 X 0X 000 0X 0X Teste 8 Jogadas 1 a – Máquina 0/0 2 a – Humano 2/2 3 a – Máquina 0/2 4 a – Humano 0/1 5 a – Máquina 2/0 6 a – Humano 1/0 E 1/1 7 a – Máquina 1/0 8 a – Final – Máquina Ganhou 8

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

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

21 Teste 2 AB X 00 X 00X X 00X X 0 00X XX 0 00X XX X XX 0 0X 00X XX 0 0X Teste 2 Jogadas 1 a – Máquina 0/0 2 a – Humano 1/1 3 a – Máquina 0/1 4 a – Humano 0/2 5 a – Máquina 2/0 6 a – Humano 1/0 7 a – Máquina 1/2 8 a – Humano 2/1 9 a – Máquina 2/2 10 a – 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 "Implementação dos Algoritmos Minimax e AlfaBeta aplicados ao Jogo da Velha Autores: Rafael Renato."

Apresentações semelhantes


Anúncios Google