2. Introdução
A Inteligência Artificial no contexto dos
jogos implica que os oponentes controlados
pelo computador apresentem um certo grau
de cognitividade (percepção,
esperteza) ao enfrentar o jogador
humano.
3. Introdução
Inicialmente a IA foi utilizada nas pesquisas em
busca em espaço de estados, em jogos como
xadrez, damas e o jogo da velha.
O uso de jogos visando o estudo de técnicas de
IA:
- Estados e Regras bem definidas.
4. História
John von Neumann
- Em 1926 demonstrou o teorema Minimax
como solução para jogos de soma zero com
dois jogadores, além da fundamentação da
teoria da utilidade, que é muito útil para
situações de incerteza em economia.
- É considerado o precursor da Teoria de
Jogos
5. Definições de Jogos
Jogo é um modelo teórico de conflitos de
interesse (decisões possíveis, resultados
possíveis) entre duas ou mais pessoas que
tem motivações conflitantes.
Jogador é um participante ativo e racional
em um jogo, cujas ações afetam os demais.
Movimentos são decisões disponíveis aos
jogadores (simultaneamente ou não).
6. Definições de Jogos
Escolhas: são alternativas particulares
escolhidas
● Jogada: é uma seqüência de escolhas
● Estratégias: são descrições das decisões a
serem tomadas em todas as situações
possíveis (um plano de jogo)
● Payoff / Utilidade / Ganho: valor ou
pagamento (ganhos ou perdas) de uma ação
(pontos, $, etc.) ou ainda uma expressão de
preferência
7. Taxonomia de Jogos
Segundo a função utilidade:
Jogos de soma zero: soma dos payoffs
(penalizações) dos participantes é zero. Ex. Xadrez,
Jogo da Velha
Jogos de soma não zero: resultados dos payoffs !=
zero. Ex. dilema do prisioneiro, etc.
Segundo a informação disponível:
Jogos com informação perfeita: a cada jogada,
todos os jogadores tem conhecimento das jogadas
que já ocorreram. Ex: Jogo da Velha, Xadrez.
Jogos com informação imperfeita: conhecimento é
parcial. Ex: Pôquer .
8.
9.
10.
11. Taxonomia de Jogos
Segundo o determinismo:
Jogos determinísticos: tem comportamento
previsível, pois para um mesmo conjunto de
entradas, as saídas serão sempre as
mesmas, caso sejam realizados n testes.
Jogos não determinísticos: possui um grau
de incerteza, pois dadas as mesmas
entradas, diferentes resultados, ou saídas,
podem aparecer.
12. Definição Formal de um Jogo
● Estado inicial:
Posição das peças no tabuleiro e o primeiro jogador
● Operadores:
Definem os movimentos permitidos
● Teste final:
Determina quando o jogo terminou e;
Calcula o resultado (vitória, empate ou derrota)
● Função de utilidade (payoff ):
Valor numérico para cada resultado do jogo
● Árvore de Busca:
Mostra todas as possibilidades de jogo.
13. Nos próximos slides serão abordados dois
algoritmos do tipo “pay-off”, ou seja que
utilizam a função utilidade, são eles:
– O Min-Max ou MiniMax
– E a otimização para o Min-Max: Alfa-Beta
14. Min-Max (MiniMax)
O MiniMax tem por objetivo selecionar a
melhor a ação a ser feita em um jogo, onde
dois jogadores (MIN e MAX) se empenham
em alcançar objetivos mutuamente
exclusivos.
O algoritmo se baseia no princípio de que
em cada jogada, o jogador irá escolher o
melhor movimento possível.
15. Minimax
Segundo (Nascimento, 2000), o algoritmo
Min-Max é fundamentado numa expansão
(em profundidade) de nós de uma árvore,
para que se possa selecionar a melhor
opção de jogada.
Para isto há necessidade de uma heurística
que permita fornecer, a cada jogada, um
valor que indique a vantagem posicional
alcançada pelo movimento conhecido.
16. Minimax Pseudo-código
1. Gerar toda a árvore de procura desde o nó inicial até aos nós
terminais.
2. Aplicar a função de utilidade a cada nó terminal para determinar o
respectivo valor.
3. Usar a utilidade dos nós terminais para determinar através de um
processo de backup a utilidade dos nós no nível imediatamente acima
na árvore de procura:
1. Se for um lance de MIN o valor calculado é o mínimo
dos nós do nível inferior;
2. se for MAX a jogar, o valor calculado é o máximo.
4. Continuar a usar o processo de backup um nível de cada vez até
atingir o nó inicial.
5. Tendo chegado ao nó inicial, escolher qual ação o jogador MAX
realizará
20. Minimax - Jogos
O algoritmo de Minimax pode ser aplicado
em vários jogos, porém não-eficientemente
em alguns.
Damas
Xadrez
Jogo da Velha
21. Minimax - Xadrez
Para o Xadrez, a técnica de Minimax não é
eficiente pois dados:
Fator médio de ramificação aprox. = 35
Um tempo de 150s entre duas jogadas
E que o poder de processamento do
computador seja aprox. = 10000 estados/s
1.500.000 estados a serem avaliados nesse
tempo
22. Minimax - Xadrez
Nº de estados à profundidade p =
ramificação^p = 35^p
Se escolhermos uma profundidade = 4,
teremos 35^4 = 1.500.625 estados, o que já
superaria o tempo estipulado.
Lembrando que um bom jogador consegue
prever até 8 jogadas. Portanto conclui-se
que o algoritmo Minimax não é uma boa
solução para o jogo de xadrez
23. Minimax – Jogo da Velha
Estado Inicial: Tabuleiro 3x3 vazio, e o primeiro jogador a jogar
(MAX - X)
Operadores: Movimentos alternados (marcar X ou O) entre MAX
e MIN, nas células vazias.
Estado Final:
1. Toda uma linha e/ou coluna e/ou diagonal preenchida pelo
mesmo símbolo de um dos jogadores. (Vitória de alguém)
2. Todas as células do tabuleiro preenchidas com uma ou mais
características da regra 1. (Vitória de alguem)
3. Todas as células do tabuleiro preenchidas com nenhuma
características da regra 1. (Empate)
Função Utilidade: Atribui um valor resultante para os estados
Arvore de Busca: Gerada devido o Espaço de Estados possível e
construída deterministicamente
25. Minimax – Jogo da Velha
Heurística
Σ linhas/colunas/diagonais em aberto -> X
Σ linhas/colunas/diagonais em aberto -> O
O algoritmo Min-Max fundamenta-se
em uma árvore, porém o cálculo da
heurística é realizado das folhas para a
raiz, que é a primeira jogada realizada
26.
27. Jogo da Velha
Um limite superior simples para o tamanho de espaço
de estados é 39 = 19,683 (Incluindo jogadas ilegais,
ex: cinco X e um O.
Removendo estas jogas ilegais, temos 5478 espaços
de estados, eliminando ainda as simetrias, chega-se
ao numero de 765 posições diferentes.
O limite superior da árvore de jogo é de 9! ou 362880
incluindo jogos ilegais, eliminando os jogos ilegais,
chega-se a 255168 jogos possíveis. Eliminando as
simetrias chega-se ao numero de 26830 possiveis.
28. Jogo da Velha
A complexidade computacional do Jogo da Velha
depende de como ela é generalizada.
Pode ser generalizada como: m, n, k-games
ou seja, jogado em tabuleiro mxn no qual o vencedor
é o primeiro jogador a obter k em uma fileira
Pode ser generalizada também como DSPACE: (mn)
no qual pesquisa a árvore de jogo inteira.
ou seja, jogado em tabuleiro mxn no qual o vencedor
é o primeiro jogador a obter k em uma fileira
É englobado pela complexidade PSPACE
E com algum esforço é possível demonstrar este
jogo como PSPACE-Completo
29. Conclusões Parciais
Se a profundidade máxima da árvore for m e em
cada ponto houver b lances possíveis (fator de
ramificação), então a complexidade (temporal)
do MiniMax é O(b^m).
O algoritmo é essencialmente do tipo procura
em profundidade (depth-first)
Para problemas reais o custo de tempo é
geralmente inaceitável, mas este algoritmo
serve de base a outros métodos mais realistas,
como o Alfa-Beta
30. Exercício
Objetivo: Dado um conjunto de 5 palitos, pegar 1 ou 2
palitos e não ser o último a jogar.
– Cenário 1:
● Jogador 1: Retira 2 palitos
● Jogador 2: Retira 2 palitos
● Jogador 1: Retira o último (perde)
– Cenário 2:
● Jogador 1: Retira 1 palito
● Jogador 2: Retira 2 palitos
● Jogador 1: Retira 1 palito
● Jogador 2: Retira o último (perde)
Construir a árvore minimax com os payoffs nos nós
32. Alfa-Beta
* O algoritmo minimax é deterministico, mas
seu desempenho pode ser significativamente
melhorado através de certos refinamentos e
melhorias, como fazendo uso da poda alfa-
beta.
* Assim, o algoritmo minimax pode ser
modificado a fim de explorar essa técnica.
33. Alfa-Beta
Objetivo: Calcular o MiniMax correto e diminuir o
número de nós visitados e de funções nos nós
avaliados
Pode limitar a ramificação em vários pontos
Inclui-se um limite inferior para o 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
34. Alfa-Beta
Considerando o jogador inicial = ALFA
Alfa representa o melhor valor encontrado até
então para MAX (maior valor), ou
– se Max já achou uma jogada boa, outras mais baixas
(piores) serão descartadas
Beta representa o melhor valor encontrado até
então para MIN (menor valor), ou
– se Min já achou uma jogada boa, outras mais
altas (piores) serão descartadas
35. Alfa-Beta – Pseudo-código
alfa-beta(jogador, mundo, alfa, beta)
SE o jogo terminou no estado atual do mundo
devolve vencedor
filhos = todas as jogadas possíveis a partir do estado atual
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)
36.
37.
38.
39.
40.
41. Conclusões Parciais
Depende da ordem de expansão dos nós
– Se os sucessores puderem ser ordenados
corretamente, a complexidade pode chegar a
O(b^(d/2))
d: profundidade máxima da arvore
b: fator de ramificação
● Para um fator de ramificação médio (razoável), a
complexidade pode ser O(b^(3d/4))
– estratégias como capturar,ameaçar,mover, nesta
ordem podem aproximar do melhor caso
42. Conclusões Parciais
Porém, se as opções
surgirem de uma
determinada ordem
(crescente no maximizador
e decrescente no
minimizador), os cortes
Alfa-Beta não trazem
melhorias.