[IA] - Minimax e Alfa-Beta

Propaganda
27-03-2008
Inteligência Artificial
Algoritmo MiniMax com cortes Alfa-Beta
Ana Saraiva – 050509087
Ana Barbosa – 050509089
Marco Cunha – 050509048
Tiago Fernandes – 050509081
FEUP - MIEIC
3ºAno/2ºSemestre
1
Introdução
O algoritmo Minimax é um método da Teoria da
Decisão utilizado para minimizar a maior perda
possível.
Alternativamente pode ser pensado como uma
forma de maximizar o minimo ganho possível.
2
1
27-03-2008
Introdução
Von Neumann era um brilhante matemático
nascido em Budapeste em 1903.
Devido à demonstração do teorema minimax, Von
Neumann foi considerado o pai da teoria de jogos
em 1926.
3
Introdução
Este algoritmo surgiu a partir da Zero-Sum Game
Theory.
O teorema Minimax:
“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.”
4
2
27-03-2008
Mas o que é o ZeroZero-Sum?
(Para além de um episódio dos X-Files e de uma série Anime)
Na teoria dos jogos, Zero-Sum é uma situação onde
o ganho de um jogador é exactamente igual à perda
de outro.
Jogos perfeitamente
equilibrados como o
Xadrez ou o Go.
Apenas um jogador pode ganhar
(ou existe um empate).
5
Porquê apenas em jogos lógicos?
6
3
27-03-2008
7
8
4
27-03-2008
Minimax
Qual o exemplo mais simples
para ilustrar o minimax?
9
Minimax
Xadrez?
10
5
27-03-2008
Minimax
Damas?
11
Minimax
Go?
12
6
27-03-2008
Minimax
Jogo do Galo?
13
Minimax
14
7
27-03-2008
Procedimento básico
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
15
Representação do Minimax
findCompMove
findHumanMove
findHumanMove
...
Tabuleiro
preenchido
16
8
27-03-2008
int TicTacToe: :findCompMove(int & bestMove)
{
int i, responseValue;
int dc;
int value;
if (fullBoard())
value = DRAW;
else if (immediateCompWin(bestMove))
return COMP_WIN;
else {
value = COMP_LOSS;
bestMove = 1;
for (i = 1; i <= 9; i++) {
if (isEmpty(i))
{
place(i, COMP);
responseValue = findHumanMove(dc);
unplace(i);
if (responseValue > value) {
value = responseValue;
bestMove = i;
}
}
}
}
return value;
}
17
int TicTacToe: :findHumanMove(int & bestMove)
{
int i, responseValue;
int dc;
int value;
if (fullBoard())
value = DRAW;
else if (immediateCompWin(bestMove))
return COMP_WIN;
else {
value = COMP_LOSS;
bestMove = 1;
for (i = 1; i <= 9; i++) {
if (isEmpty(i))
{
place(i, COMP);
responseValue = findCompMove(dc);
unplace(i);
if (responseValue < value) {
value = responseValue;
bestMove = i;
}
}
}
}
return value;
}
18
9
27-03-2008
Árvore de pesquisa – Jogo do Galo
19
X
O
O
O
X
X
X
X
O
1
2
3
4
1
2
3
1
5
6
7
8
9
4
6
7
8
9
2
4
6
7
8
9
2
4
6
7
8
9
2
4
6
7
8
2
4
7
8
2
7
8
2
7
7
20
10
27-03-2008
Minimax – Jogo do Galo
46 nós considerando só uma alternativa de
ramificação em cada momento.
Uma pesquisa completa visitaria 97162 posições.
Para um jogo tão simples
quanto o jogo do galo!
21
Minimax
E para jogos mais complexos como o Xadrez ou o
Go?
Estima-se que no Xadrez só para a primeira jogada,
100
10 posições seriam avaliadas.
Para jogos mais complexos são necessárias
optimizações.
22
11
27-03-2008
Optimizações ao Minimax
Optimizar o algoritmo parece uma boa solução…
…mas é preciso ter cuidado…
Uma má optimização pode gerar uma má IA… O
que poderia tornar preferível usar jogadas
aleatórias…
23
Optimizações ao Minimax
Optimização em profundidade
Cortes Alfa-Beta
24
12
27-03-2008
Optimização em Profundidade
Em vez de analisar toda a árvore de pesquisa,
estuda-se apenas até um determinado nível.
Ideal para jogos longos com um factor de
ramificação muito grande. Ex: Xadrez
25
Optimização em Profundidade
Esta redução obviamente compromete a selecção
da melhor jogada possível…
… mas em muitos casos é
tolerável tendo em conta o
tempo de espera.
26
13
27-03-2008
Optimizações ao Minimax
Será que o minimax em alguma altura realiza
trabalho “inútil”?
27
Optimizações ao Minimax
Max
3
Min
2
3
10
2
?
?
Será importante saber o valor destes dois nós?
28
14
27-03-2008
Optimizações ao Minimax
Max
3
Min
2
3
10
2
?
?
O primeiro nível irá escolher o valor máximo dos
sucessores.
O segundo nível irá escolher o valor mínimo dos
sucessores.
29
Optimizações ao Minimax
Max
3
Min
2
3
10
2
?
?
O valor do ramo do meio nunca será maior que 2…
Logo quaisquer que seja o valor dos filhos, ele nunca
será escolhido…
30
15
27-03-2008
Cortes AlfaAlfa-Beta
São estabelecidos dois valores: Alfa e Beta
Alfa é o valor mais alto do jogador Max
Beta é o valor mais baixo do jogador Min
O processamento dos filhos de um nó termina
quando a condição Alfa < Beta não se verificar.
31
Cortes AlfaAlfa-Beta - Algoritmo
int minimaxAB(state, player, depth, alpha, beta)
if (depth == limit or state is terminal)
return the static evaluation of state
if (player is min)
until all successors, s, are examined or alpha >= beta
val=minimaxAB(s, max, depth+1, alpha, beta)
if (val < beta)
beta = val
return beta
if (player is max)
until all successors, s, are examined or alpha >= beta
val=minimaxAB(s, min, depth+1, alpha, beta)
if (val > alpha)
alpha = val
return alpha
32
16
27-03-2008
Cortes AlfaAlfa-Beta - Exemplo
Max
A
Min
B
C
D
Max
E
F
G
H
I
J
K
Min
L
7
M
6
N
8
O
5
P
2
Q
3
R
0
S
-2
T
6
U
2
V
5
X
9
W
8
Y
2
33
Cortes AlfaAlfa-Beta – trace
Max
First call (assume depth limit is 3):
minimaxAB(A,max,0,-inf,+inf)
successors B,C,D
A
Min
B
minimaxAB(B,min,1,-inf,+inf)
successors E,F,G
E
minimaxAB(E,max,2,-inf,+inf)
successors L,M
minimaxAB(L,min,3,-inf,+inf)
returns 7
alpha = 7
minimaxAB(M,min,3,7,+inf)
returns 6
returns 7
beta = 7
C
B
D
Max
E
F
G
…
…
Min
L
7
M
6
…
…
34
17
27-03-2008
Cortes AlfaAlfa-Beta – trace
F
minimaxAB(F,max,2,-inf,7)
successors N,O
minimaxAB(N,min,3,-inf,7)
returns 8
alpha = 8
*** CUTOFF alpha>beta ***
returns 8
G
minimaxAB(G,max,2,-inf,7)
successors P,Q
minimaxAB(P,min,3,-inf,7)
returns 2
alpha = 2
minimaxAB(Q,min,3,2,7)
returns 3
alpha = 3
returns 3
beta = 3
returns 3
alpha = 3
Max
A
Min
B
C
D
Max
E
F
G
…
…
Min
…
N
8
O
5
P
2
Q
3
35
Cortes AlfaAlfa-Beta – trace
Max
C
minimaxAB(C,min,1,3,+inf)
successors H,I
H
minimaxAB(H,max,2,3,+inf)
successors R,S
minimaxAB(R,min,3,+inf)
returns 0
minimaxAB(S,min,3,3,+inf)
returns -2
returns 3
beta = 3
*** CUTOFF alpha>=beta ***
A
Min
B
C
Max
…
H
I
returns 3
D
...
D
…
Min
R
0
S
-2
36
18
27-03-2008
Cortes AlfaAlfa-Beta
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.
37
Cortes AlfaAlfa-Beta
Max
3
Min
2
3
10
2
4
7
Max
…
3
Min
2
3
10
7
4
…
2
No entanto se a ordem for a oposta a diferença na
eficiência é enorme…
38
19
27-03-2008
Ordem de complexidade
Se a profundidade máxima da árvore for m e em
cada ponto houver b lances possíveis (factor de
ramificação):
Complexidade
Minimax
Temporal
Espacial
O(bm)
O(bm)
Cortes
Alfa-Beta
O(bm/2)
O(bm)
(*)
(*)
com uma ordenação perfeita
39
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 for finita (ex.: Jogo do Galo);
40
20
27-03-2008
Resumo - Minimax
• 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.
• Serve de base a outros métodos mais realistas, bem
como de suporte à análise matemática de jogos.
41
Resumo - Corte AlfaAlfa-Beta
• Eficiente para determinar quais os ramos que não
devem ser explorados;
• 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;
• Não afecta o resultado final.
42
21
27-03-2008
Conclusões
Segundo o teorema do Minimax há sempre
uma solução racional para um conflito bem
definido entre dois indivíduos.
43
QUESTÕES ??
44
22
Download