Beruflich Dokumente
Kultur Dokumente
Inteligncia Artificial
Algoritmo MiniMax com cortes Alfa-Beta
Ana Saraiva 050509087 Ana Barbosa 050509089 Marco Cunha 050509048 Tiago Fernandes 050509081
FEUP - MIEIC
3Ano/2Semestre
Introduo
O algoritmo Minimax um mtodo da Teoria da Deciso utilizado para minimizar a maior perda possvel.
Alternativamente pode ser pensado como uma forma de maximizar o minimo ganho possvel.
27-03-2008
Introduo
Von Neumann era um brilhante matemtico nascido em Budapeste em 1903.
Devido demonstrao do teorema minimax, Von Neumann foi considerado o pai da teoria de jogos em 1926.
Introduo
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 estratgia mista para cada jogador tal que o resultado esperado para os dois o mesmo valor V quando os jogadores usam esta estratgia.V o melhor valor que cada um pode esperar de uma jogada. Isto , estas estratgias mistas so as estratgias ptimas para os dois jogadores.
4
27-03-2008
Na teoria dos jogos, Zero-Sum uma situao 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).
27-03-2008
27-03-2008
Minimax
Minimax
Xadrez?
10
27-03-2008
Minimax
Damas?
11
Minimax
Go?
12
27-03-2008
Minimax
Jogo do Galo?
13
Minimax
14
27-03-2008
Procedimento bsico
Determinar SE profundidade limite atingida OU Nivel Minimizador OU Nivel Maximizador SE profundidade limite Calcular valor do estado corrente Retornar resultado SE Nivel Minimizador Aplicar minimax aos sucessores Retornar Mnimo SE Nivel Maximizador Aplicar minimax aos sucessores Retornar Mximo
ENTO
15
Representao do Minimax
findCompMove findHumanMove
findHumanMove
...
Tabuleiro preenchido
16
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
27-03-2008
19
1 1 1
2 2 2 2 2 2 2 2
3 3
4 4 4 4 4 4
6 6 6 6 6
7 7 7 7 7 7 7 7 7
8 8 8 8 8 8 8
9 9 9 9
X O X
O X X
O X O
20
10
27-03-2008
Minimax
E para jogos mais complexos como o Xadrez ou o Go? Estima-se que no Xadrez s para a primeira jogada, 100 10 posies seriam avaliadas. Para jogos mais complexos so necessrias optimizaes.
22
11
27-03-2008
Optimizaes ao Minimax
Optimizar o algoritmo parece uma boa soluo mas preciso ter cuidado
Uma m optimizao pode gerar uma m IA O que poderia tornar prefervel usar jogadas aleatrias
23
Optimizaes ao Minimax
Optimizao em profundidade
Cortes Alfa-Beta
24
12
27-03-2008
Optimizao em Profundidade
Em vez de analisar toda a rvore de pesquisa, estuda-se apenas at um determinado nvel. Ideal para jogos longos com um factor de ramificao muito grande. Ex: Xadrez
25
Optimizao em Profundidade
Esta reduo obviamente compromete a seleco da melhor jogada possvel mas em muitos casos tolervel tendo em conta o tempo de espera.
26
13
27-03-2008
Optimizaes ao Minimax
27
Optimizaes ao Minimax
Max
Min
10
14
27-03-2008
Optimizaes ao Minimax
Max 3 2 Min
10
O primeiro nvel ir escolher o valor mximo dos sucessores. O segundo nvel ir escolher o valor mnimo dos sucessores.
29
Optimizaes ao Minimax
Max 3 2 Min
10
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
So 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 condio Alfa < Beta no se verificar.
31
32
16
27-03-2008
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
W 8
X 9
Y 2
33
A Min B C D
Max E F G
Min L 7 M 6
34
17
27-03-2008
Max A
Min B C D
Max E F G
Min N 8 O 5 P 2 Q 3
35
Min B C D
Max H I
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 no trazer melhorias.
Na prtica, se as opes surgirem de uma determinada ordem (crescente no maximizador e decrescente no minimizador), os cortes Alfa-Beta no trazem melhorias.
37
Cortes AlfaAlfa-Beta
Max 2 Min 3
10
3 2
Max Min
10
19
27-03-2008
Ordem de complexidade
Se a profundidade mxima da rvore for m e em cada ponto houver b lances possveis (factor de ramificao):
Cortes Alfa-Beta O(bm/2) O(bm)
(*)
(*)
Resumo - Minimax
Baseia-se na suposio de que o adversrio 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 deciso ptima totalmente impraticvel para qualquer jogo minimamente complexo, pois gera caminhos cuja possibilidade de serem seguidos praticamente nula. Serve de base a outros mtodos mais realistas, bem como de suporte anlise matemtica de jogos.
41
42
21
27-03-2008
Concluses
Segundo o teorema do Minimax h sempre uma soluo racional para um conflito bem definido entre dois indivduos.
43
QUESTES ??
44
22