Jogos Capítulo 6 Jogos vs. Problemas de Procura • Adversário “imprevisível" necessidade de tomar em consideração todas os movimentos que podem ser tomados pelo adversário • Pontuação com sinais opostos – O que é bom para um jogador (vitória=+1) é mau para o outro (derrota=-1) • Limitação temporal tipicamente não é encontrado um objectivo mas antes uma aproximação Sumário • Decisões óptimas em jogos – Conceitos básicos – Estratégias óptimas e o Minimax – Estratégias óptimas com múltiplos jogadores • • • • Cortes α-β Decisões imperfeitas em tempo real Jogos que incluem o factor sorte Estado da arte em jogos Ingredientes • Vamos considerar que: – existem dois jogadores, o MAX e o MIN – o MAX joga primeiro – no fim do jogo o vencedor ganha pontos e o adversário é penalizado Caracterização de um Jogo • Estado inicial – Configuração inicial + ordem de jogada • Função sucessores – Para cada estado devolve uma lista de pares <acção,estado>, indicando uma jogada possível (legal) e o estado resultante • Teste terminal – Identifica os estados de fim de jogo (ditos terminais) • Função de utilidade (ou função objectivo) – Atribui um valor numérico aos estados terminais Árvore do jogo • O estado inicial e as jogadas legais para cada jogador definem a árvore do jogo. Árvore para o jogo do galo (2 jogadores, determinístico, alternado) Sumário • Decisões óptimas em jogos – Conceitos básicos – Estratégias óptimas e o Minimax – Estratégias óptimas com múltiplos jogadores • • • • Cortes α-β Decisões imperfeitas em tempo real Jogos que incluem o factor sorte Estado da arte em jogos Minimax • Estratégia mais adequada para jogos determinísticos • Ideia: escolher jogada para o estado com o maior valor minimax – melhor valor para a função de utilidade contra as melhores jogadas do adversário Valor-minimax(n) = { Função-utilidade(n) maxs∈sucessores(n) Valor-minimax(s) mins∈sucessores(n) Valor-minimax(s) se n é terminal se n é nó MAX se n é nó MIN Minimax: 2 jogadores • Observações: – Formato dos nós em função do tipo de nó (MIN/MAX) – Valores dos estados terminais correspondem à função de utilidade para MAX (quanto vale cada um dos estados terminais) – Valores para os restantes estados obtidos a partir dos valores para os nós terminais através do cálculo do valor-minimax – Resultado do algoritmo: próxima jogada! Algoritmo Minimax Função Minimax (estado) devolve acção v ← ValorMax(estado) devolve acção em sucessores(estado) com valor v Função ValorMax(estado) devolve valor de utilidade se TesteTerminal(estado) então devolve Utilidade(estado) v ← -∞ para a,e em sucessores(estado) v ← MAX(v,ValorMin(e)) devolve v Função ValorMin(estado) devolve valor de utilidade se TesteTerminal(estado) então devolve Utilidade(estado) v ← +∞ para a,e em sucessores(estado) v ← MIN(v,ValorMax(e)) devolve v Minimax: 2 jogadores • Portanto: – Começa na raiz e a recursão conduz os cálculos até às folhas. Os valores minimax são depois usados quando termina a fase de expansão da recursão; – Quando é o Min a jogar, escolhe a jogada que dá menos pontos ao MAX; – Quando é o Max a jogar, escolhe a jogada que lhe dá mais pontos; – A seta indica a escolha de MAX no fim da aplicação do algoritmo. Propriedades do algoritmo minimax O algoritmo faz uma procura em profundidade, explorando toda a árvore de jogo. • É completo? Sim (se a árvore de procura é finita) • É óptimo? Sim (contra um adversário óptimo) Considerando: m = profundidade máxima da árvore r = nº de movimentos legais em cada ponto • Complexidade temporal? – O(rm) • Complexidade espacial? – O(rm) para um algoritmo que gera todos os sucessores de uma vez – O(m) para um algoritmo que gera os sucessores um a um • Para xadrez, r ≈ 35, m ≈100 para um jogo padrão impossível determinar a solução exacta Sumário • Decisões óptimas em jogos – Conceitos básicos – Estratégias óptimas e o Minimax – Estratégias óptimas com múltiplos jogadores • • • • Cortes α-β Decisões imperfeitas em tempo real Jogos que incluem o factor sorte Estado da arte em jogos Minimax: mais de 2 jogadores • Função de utilidade devolve vector de valores com utilidade do estado do ponto de vista de cada jogador • Cada jogador procura maximizar a sua utilidade (ex: C em X, escolhe a jogada que lhe dá mais pontos - 6) Minimax: mais de 2 jogadores • Tipicamente levam a alianças, formais ou informais, entre os jogadores (também podem existir alianças em jogos com 2 jogadores). • Estas alianças podem ser uma consequência natural de estratégias óptimas para cada jogador num jogo multijogadores. Sumário • Decisões óptimas em jogos – Conceitos básicos – Estratégias óptimas e o Minimax – Estratégias óptimas com múltiplos jogadores • • • • Cortes α-β Decisões imperfeitas em tempo real Jogos que incluem o factor sorte Estado da arte em jogos Procura com Cortes • Jogos são muito mais difíceis do que os problemas de procura • Factor de ramificação muito elevado - e.g. xadrez – factor de ramificação ≈ 35 – 50 jogadas/jogador 35100 nós (destes “apenas” 1040 são nós distintos) • Cortes permitem eliminar partes da árvore de procura que são irrelevantes para o resultado final. De seguida vamos falar de um tipo de corte, os cortes α-β . Cortes α-β • Motivação: – Minimax: número de estados examinados é exponencial em função do número de jogadas – Não é possível eliminar o factor exponencial, mas podemos reduzir o número de estados analisados para metade! – É possível calcular exactamente a mesma decisão resultante do algoritmo Minimax sem ter de analisar todos os estados Cortes α-β • Considere-se um nó n algures na árvore, tal que um jogador tem a hipótese de se mover para esse nó. Se o jogador tem uma hipótese melhor num nó qualquer acima do nó n, então esse n nunca vai ser atingido. • Assim que soubermos alguma coisa sobre este n através dos seus descendentes, podemos cortá-lo (podá-lo). Cortes α-β: exemplo Cortes α-β: exemplo Cortes α-β: exemplo Cortes α-β: exemplo Cortes α-β: exemplo • Os nós sucessores do primeiro nó a ser expandido em cada nível de profundidade nunca podem ser cortados Porquê o nome α-β? • α é o valor da melhor escolha (i.e., valor mais elevado) encontrada até ao momento em qualquer ponto de procura ao longo do caminho para max • Se v é pior do que α, max irá evitar escolher v ramo com v é cortado • β define-se para min de forma análoga Algoritmo α-β Função AlfaBeta (estado) devolve acção v ← ValorMax(estado, -∞, +∞) devolve acção em sucessores(estado) com valor v Função ValorMax(estado,α,β) devolve valor de utilidade se TesteTerminal(estado) então devolve Utilidade(estado) v ← -∞ para a,e em sucessores(estado) v ← MAX(v,ValorMin(s,α,β)) se v ≥ β então devolve v α ← MAX(α,v) devolve v Algoritmo α-β Função ValorMin(estado,α,β) devolve valor de utilidade se TesteTerminal(estado) então devolve Utilidade(estado) v ← +∞ para a,e em sucessores(estado) v ← MIN(v,ValorMax(s,α,β)) se v ≤ α então devolve v β ← MIN(β,v) devolve v Propriedades de α-β • Cortes não afectam resultado final (= MINIMAX) • Eficiência dos cortes depende da ordenação dos sucessores – Por exemplo, no caso anterior, se em vez do nó com valor 14 tivesse aparecido o nó com valor 2, não havia necessidade de gerar os outros nós • Com uma “ordenação perfeita" a complexidade temporal fica reduzida a O(rm/2) • Ver applet em http://wolfey.110mb.com/GameVisual/ launch.php?agent=2 Exercício • Qual a melhor ordenação de modo a optimizar os cortes α-β? Estados repetidos • Em jogos, ocorrem muitas vezes estados repetidos (devido a permutações) • Pode valer a pena guardar estados numa hash table (chamada transposition table) na primeira vez que ocorrem – Pode duplicar a profundidade alcançada no mesmo período de tempo! – Se são avaliados milhões de nós por segundo não é viável guardar tantos nós numa tabela • Assim, existem muitas estratégias para determinar quais os estados a guardar Sumário • Decisões óptimas em jogos – Conceitos básicos – Estratégias óptimas e o Minimax – Estratégias óptimas com múltiplos jogadores • • • • Cortes α-β Decisões imperfeitas em tempo real Jogos que incluem o factor sorte Estado da arte em jogos Decisões imperfeitas em tempo real • Decisões têm que ser tomadas em tempo real não é possível analisar toda a árvore de procura • Função de avaliação (Eval) devolve uma estimativa da utilidade do estado – Idealmente a ordenação resultante da função de avaliação é igual à da função de utilidade • Teste terminal é substituído por um teste de limite (cutoff) – Devolve também verdadeiro para estados terminais Funções de Avaliação • O desempenho de um jogo depende da qualidade da função de avaliação! • E como escolher uma boa função de avaliação? – Esta deve ser capaz de ordenar os estados terminais do mesmo modo que a função de utilidade • A função de avaliação deve estar fortemente correlacionada com as hipóteses reais de ganhar – O seu cálculo não pode ser demorado Funções de Avaliação • Tipicamente são uma soma linear de características do jogo (f), associadas a diferentes pesos (w) Eval(s) = w1 f1(s) + w2 f2(s) + … + wn fn(s) • Ex: Xadrez – rainha vale 9, bispo e cavaleiro 3, etc.. – w1 = 9 e f1(s) = nº de rainhas brancas – w2 =3 e f2(s) = nº de bispos – ... Teste Limite • Problema da aquiescência – Função de avaliação deve aplicar-se apenas a estados cujo valor não possa ser radicalmente alterado num futuro próximo (por exemplo, se estamos só a contar peças no Xadrez, não estamos a ter em conta jogadas em que se façam capturas de peças favoráveis) – Estados não aquiescentes devem ser expandidos até que sejam gerados estados sem este problema (por exemplo, passando a ter em conta movimentos de captura) Teste Limite • Problema do efeito de horizonte – Procura com limite coloca eventuais problemas futuros para além do horizonte (ex: um movimento qualquer do adversário que vai ter consequências desastrosas, mas que não foi previsto dado o limite de procura imposto). – Com as melhorias actuais, conseguem-se limites cada vez maiores – Extensões singulares são outra solução: num caso de uma jogada ser muito boa, aumenta-se o limite de pesquisa para os seus sucessores. Sumário • Decisões óptimas em jogos – Conceitos básicos – Estratégias óptimas e o Minimax – Estratégias óptimas com múltiplos jogadores • • • • Cortes α-β Decisões imperfeitas em tempo real Jogos que incluem o factor sorte Estado da arte em jogos Elemento Sorte • Árvore com nós sorte para além dos nós MIN e MAX • A cada ramo da árvore está associada uma probabilidade • Se for possível estabelecer limites para a função de avaliação então podem aplicar-se cortes Expectiminimax(n) = { Função-utilidade(n) se n é terminal maxs∈sucessores(n) Expectiminimax(s) se n é nó MAX mins∈sucessores(n) Expectiminimax(s) se n é nó MIN Σs∈sucessores(n) P(s) · Expectiminimax(s) se n é nó SORTE Elemento Sorte: exemplo 2.1 = 0.9*2 + 0.1*3 1.3 = 0.9*1 + 0.1*4 Elemento Sorte: exemplo • Atenção: alteração de valores das folhas mantendo a mesma ordem relativa de valores resulta em decisões diferentes. • Pelo que há que ter cuidados adicionais na escolha da função de avaliação. Sumário • Decisões óptimas em jogos – Conceitos básicos – Estratégias óptimas e o Minimax – Estratégias óptimas com múltiplos jogadores • • • • Cortes α-β Decisões imperfeitas em tempo real Jogos que incluem o factor sorte Estado da arte em jogos Estado da Arte • Damas: Chinook derrotou o campeão do mundo (durante 40 anos) Marion Tinsley in 1994. Uso de uma base de dados pré-processada que define uma jogada perfeita para todas as posições envolvendo no máximo 8 peças, num total de 444 biliões de posições. • Xadrez: Deep Blue derrotou campeão do mundo Garry Kasparov em 1997. O Deep Blue procura 200 milhões de nós por segundo, usa uma função de avaliação muito sofisticada. • Othello: campeões humanos recusam-se a competir com computadores, que são muito bons. • Go: campeões humanos recusam-se a competir com computadores, que são muito fracos. Neste jogo, r > 300. Logo, a maioria dos programas existentes usa padrões de conhecimento para sugerir jogadas hipotéticas.