Algoritmo MiniMax Luís Carlos Calado 050509043 João Carlos Sousa 050509027 José Carlos Campos 060509007 Rodolfo Sousa Silva 050509069 1 Minimax Minimax (ou minmax) é um método usado na Teoria da Decisão, Teoria dos Jogos, Estatística e Filosofia para minimizar a perda máxima possível. Teorema Minimax Von Neumann foi um brilhante matemático nascido em Budapeste em 1903. Devido à demonstração do teorema minimax, Von Neumann foi considerado o pai da teoria dos jogos em 1926. 2
Minimax Este teorema surgiu a partir da Zero-Sum Game Theory: Para qualquer jogo para dois jogadores que respeite a teoria zero-sum, existe uma estratégia mista para cada jogador tal que o resultado esperado para os dois é o mesmo valor V quando os jogadores usam esta estratégia. V é o melhor valor que cada um pode esperar de uma jogada. Isto é, estas estratégias mistas são as estratégias óptimas para os dois jogadores. 3 Qual o exemplo mais simples para ilustrar o Minimax? 4
Xadrez Damas Go 5 Porque não aplicar o Minimax no Xadrez? Factor médio de ramificação: ~35 Tempo entre duas jogadas: 2,5 minutos (150 segundos) Computador: analisa 10 000 estados / segundo Estados analisáveis: 150 segundos * 10^4 estados = 1 500 000 Nº de estados à profundidade p: r^p = 35^p 35^4 = 1 500 625 (à profundidade 4, o computador já não analisa todas as jogadas) Um bom jogador humano consegue prever de 6 a 8 jogadas Conclusão: Minimax é demasiado custoso em tempo 6
Jogo do Galo OK 7 Algoritmo (Pseudo-código) Determinar SE { profundidade limite atingida OU Nivel é Minimizador OU Nivel é Maximizador } ENTÃO SE profundidade limite Calcular valor do estado corrente Retornar resultado SE Nivel Minimizador Aplicar minimax aos sucessores Retornar Mínimo SE Nivel Maximizador Aplicar minimax aos sucessores Retornar Máximo 8
- Processo de pesquisa com Minimax - Exemplo de árvore de pesquisa com profundidade 5 - Os valores da função Heurística são relativos ao jogador X Heurística = linhas/colunas/diagonais em aberto ->X - linhas/colunas/diagonais em aberto ->O 9 Exemplo Max Min Para cada nível MINimizador ou MAXimizador, escolher o MINímo ou MAXimo dos sucessores 10
Exemplo (continuação) Max Min 11 Será que o minimax em alguma altura realiza trabalho inútil? 12
Resposta? Sim Max Min 13 Cortes alfa-beta - Permite diminuir o número de nós visitados e de funções nos nós avaliados - Possui profundidade limitada - Inclui-se um limite inferior para valor a minimizar (beta -> valor mais baixo que o jogador min já assegurou), e um limite superior para o valor a maximizar (alfa -> valor mais alto do jogador max) - A pesquisa dos sucessores de um nó termina quando se verificar alfa>=beta 14
Algoritmo (Pseudo-código) alfa-beta(jogador, mundo, alfa, beta) SE o jogo terminou no estado actual do mundo devolve vencedor filhos = todas as jogadas possíveis a partir do estado actual SE jogador = MAX PARA cada filho avaliação = alfa-beta(adversário, filho, alfa, beta) SE avaliação > alfa ENTÃO alfa = avaliação (encontrou-se uma melhor jogada) SE alfa >= beta ENTÃO devolve alfa (ignora restante ramos) devolve alfa (esta é a melhor jogada) SENÃO jogador = MIN PARA cada filho avaliação = alfa-beta(adversário, filho, alfa, beta) SE avaliação < beta ENTÃO beta= avaliação (adversário encontrou uma melhor pior jogada) SE alfa >= beta ENTÃO devolve beta (ignora restante ramos) devolve beta (a melhor jogada do adversário) 15 Exemplo Max Min 16
Exemplo (continuação) Max Min 17 Contras Apesar de tudo o que foi referido, os cortes Alfa-Beta podem não trazer melhorias. Na prática, se as opções surgirem de uma determinada ordem (crescente no maximizador e decrescente no minimizador), os cortes Alfa-Beta não trazem melhorias. 18
Ordem de complexidade Se a profundidade máxima da árvore for m e em cada ponto houver b hipóteses possíveis (factor de ramificação): (*) com uma ordenação perfeita 19 Outra abordagem, Negamax 20
Negamax Este algoritmo é semelhante ao Minimax mas tira partido das heurísticas poderem ser as mesmas para o jogador e seu adversário (como é o caso do Xadrez). Enquanto que o Minimax maximiza a heurística do jogador e minimiza a do adversário, o Negamax nega (multiplica por -1) o valor da heurística correspondente ao nível onde teria de minimizar. Assim não precisa de saber o nível onde se encontra e maximiza sempre. 21 Exemplo 22
Exemplo (continuação) 23 Resumo - Minimax - Baseia-se na suposição de que o adversário escolherá sempre o movimento ideal, e nunca incorrerá ao erro; - Gera toda a árvore de busca, dentro do limite permitido; -O Algoritmo é completo apenas no caso de a árvore ser finita (ex.: Jogo do Galo); - O tempo gasto para determinar a decisão óptima é totalmente impraticável para qualquer jogo minimamente complexo, pois gera caminhos cuja possibilidade de serem seguidos é praticamente nula. 24
Resumo Corte alfa-beta - Eficiente para determinar quais os ramos que não devem ser explorados; - Não afecta o resultado final; - Uma boa ordenação dos nós aumenta ainda mais a sua eficiência, no entanto se isso não acontecer este algoritmo pode não trazer qualquer vantagem; 25? 26
Obrigado pela vossa atenção E Boa sorte para o teste 27