MiniMax - FEUPeol/IA/1415/Estudantes_IART_MiniMax_2014_1… · MiniMax com Cortes Alfa-Beta -...

Post on 30-Jun-2020

1 views 0 download

Transcript of MiniMax - FEUPeol/IA/1415/Estudantes_IART_MiniMax_2014_1… · MiniMax com Cortes Alfa-Beta -...

MiniMax e cortes alfa-beta

Apresentado por:

Ricardo Coutinho

Leonel Peixoto

Duarte Ribeiro

Jogos E ainda existem

outros tipos!

Zero-Sum Games ● Agentes têm utilidades opostas

● Cada agente máximiza o seu

objectivo e como consequência

mínimiza o objectivo do outro

● Jogos com adversários

competitivos

General Games ● Agentes têm utilidades

independentes

● É possível ter cooperação,

indiferença, competição e/ou

mais

VS

Informação imperfeita existem estados invisíveis

Informação perfeita todos os estados são visíveis

VS

Determinístico cada acção tem um

resultado específico

Estocástico cada acção tem uma

probabilidade de ter um

resultado diferente

VS

O jogo pac-man (1980)

1 3 2 6 6 Jogo sem adversário (exemplo do pac-man)

Procura adversarial

Qual será a minha

melhor jogada?

depende do meu adversário

então vamos assumir que o

jogador vai utilizar a mesma

estratégia, isto é, de pensar na

melhor jogada que ele pode

fazer baseada na minha,.. e

por aí em diante

-8 -5 -10 +8 -8

Jogo com adversário (exemplo do pac-man)

MiniMax

1 6 2 7 6 3 5 7

MAX (Jogador)

4

Uma possível jogada de MAX

MIN (Adversário)

Profundidade de Pesquisa (Numero de jogadas)

Possíveis jogadas de MAX

Possíveis jogadas de MIN

Estado atual do jogo

Valores de possíveis estados terminais

Algoritmo MiniMax

definir valor-máximo(estado):

inicializar v = - ∞

para cada sucessor do estado:

v = max(v, valor-

mínimo(sucessor))

retorna v

definir valor-mínimo(estado):

inicializar v = +∞

para cada sucessor do estado:

v = min(v, valor-

máximo(sucessor))

retorna v

definir valor(estado):

se estado terminal: retorna o valor

se nível MIN: retorna valor-mínimo(estado)

se nível MAX: retorna valor-máximo(estado):

1 6 2 7 4 3 5 7

4

4 1 3 3 1 7 4

6

6

3 4 -∞

+∞ +∞ +∞

Eficiência do MiniMax

Seja:

b : número médio de ramificações

m : número médio de jogadas

Temos uma procura parecida com a

pesquisa em profundidade (Depth-First)

Complexidade de tempo: O(bm)

Complexidade de espaço: O(bm)

Sabendo que: b ~= 35

E pretende-se: m ~= 10

Supondo que se consegue: 1 000 000 estados explorados/segundo

Então:

Complexidade num Jogo de Xadrez

3510 = 2,75854735351562 x 1015 estados / 1 000 000 = 2758547353 segundos

~= 87 anos

MiniMax com Cortes Alfa-Beta

1 7 4 3 5 7

4

4 1 3 3 1 7 4

6

6

3 4

MiniMax com Cortes Alfa-Beta - revisão

Algoritmo do MiniMax com Cortes Alfa-Beta

α: melhor opção de MAX no caminho até à raiz

β: melhor opção de MIN no caminho até à raiz

definir valor-máximo(nível, α, β):

inicializar v = - ∞

para cada sucessor do nível:

v = max(v,

valor(sucessor,α, β))

se v≥β retorna v

α = max(α,v)

retorna v

definir valor-mínimo(nível, α, β):

inicializar v = + ∞

para cada sucessor do nível:

v = min(v,

valor(sucessor,α, β))

se v≤α retorna v

β = max(β,v)

retorna v

MiniMax com Cortes Alfa-Beta - Limitações

● Problemas com a escolha

do caminho ótimo

● Algoritmo “good child”

● Com perfeita ordenação:

○ Complexidade

temporal diminui

(para jogos de Xadrez

ainda é insuficiente)

Complexidade de tempo: O(bm/2)

Referências

1. Inteligência Artificial, EIC0029, FEUP by Prof.

Eugénio da Costa Oliveira

2. Artificial Intelligence, CS188.1x, University of

Berkeley on BerkeleyX

3. Pac-Man