Giochi e Strategie
AI 1
Pag.2
Cosa sono e perchè studiare i
giochi?
AI 1
Pag.3
Relazione tra Giochi e Ricerca
Search – non ci sono avversari
– La soluzione è un metodo (euristico) per trovare un goal
– Tecniche euristiche e CSP possono trovare la soluzione ottima
– Funzione di valutazione: stima del costo dallo stato iniziale al
goal attraverso il nodo considerato
– Esempi: ricerca di percorsi (path planning), schedulazione di
attività
Games – c’è (almeno un) avversario
– La soluzione è una strategia (la strategia specifica la mossa
da fare per ogni possibile mossa dell’avversario).
– Limiti di tempo forzano soluzioni approssimate
– Funzione di valutazione: valuta la “bontà” di una particolare
situazione di gioco
– Esempi: scacchi, dama,Othello, backgammon
AI 1
Pag.4
Tipi di Giochi
AI 1
Pag.5
Giochi: un modello
Due Giocatori: MAX e MIN
MAX muove per primo e giocano a turno finchè il
gioco termina. Il vincitore ottiene un premio, lo
sconfitto una penalità.
Giochi come ricerca:
– Stato Iniziale: Es. Una configurazione della scacchiera
– Funzione successore: lista di coppie(mossa,stato) che
specificano le mosse legali.
– Test di Terminazione: è finito il gioco?
– Funzione di utilità: Da un valore numerico agli stati terminali. Ad
es. nel tic-tac-toe vittoria (+1), sconfitta(-1) e patta (0)
MAX utilizza l’albero di ricerca per decidere la
prossima mossa.
AI 1
Pag.6
Tic-Tac-Toe: albero di gioco parziale
AI 1
Pag.7
Strategie Ottime
Problema: trovare la strategia contingente di gioco
per MAX ipotizzando un avversario MIN infallibile.
Assunzione: entrambi I giocatori giocano in modo
ottimo!!
Dato un albero di gioco, la strategia ottima può
essere determinata usanto il valore minimax di ogni
nodo:
MINIMAX-VALUE(n)=
UTILITY(n) If n is a terminal
maxs ∈ successors(n) MINIMAX-VALUE(s) If n is a max node
mins ∈ successors(n) MINIMAX-VALUE(s) If n is a min node
AI 1
Pag.8
Game Tree: albero di gioco
Propaga in alto: i peggiori (se nodo MAX), i migliori (se nodo MIN)
AI 1
Pag.9
Game Tree: albero di gioco
AI 1
Pag.10
Game Tree: albero di gioco
AI 1
Pag.11
Game Tree: albero di gioco
La decisione minimax
AI 1
Pag.13
Algoritmo MiniMax
function MINIMAX-DECISION(state) returns an action
inputs: state, current state in game
v←MAX-VALUE(state)
return the action in SUCCESSORS(state) with value v
function MAX-VALUE(state) returns a utility value
if TERMINAL-TEST(state) then return UTILITY(state)
v←∞
for a,s in SUCCESSORS(state) do
v ← MAX(v,MIN-VALUE(s))
return v
function MIN-VALUE(state) returns a utility value
if TERMINAL-TEST(state) then return UTILITY(state)
v←∞
for a,s in SUCCESSORS(state) do
v ← MIN(v,MAX-VALUE(s))
return v
AI 1
Pag.14
Proprietà di Minimax
Criterion Minimax
Time O(bm) ☺
Space O(bm)
AI 1
Pag.15
Giochi Multiplayer
Nel caso di giochi con più giocatori
I valori minimax values diventano
vettori minimax
AI 1
Pag.16
Problemi di ricerca minimax
[-∞,+∞]
[-∞, +∞]
AI 1
Pag.18
Esempio Alpha-Beta
[-∞,+∞]
[-∞,3]
AI 1
Pag.19
Esempio Alpha-Beta
[-∞,+∞]
[-∞,3]
AI 1
Pag.20
Esempio Alpha-Beta
[3,+∞]
[3,3]
AI 1
Pag.21
Esempio Alpha-Beta
[3,+∞]
This node is worse
for MAX
[3,3] [-∞,2]
AI 1
Pag.22
Esempio Alpha-Beta
[3,14] ,
AI 1
Pag.23
Esempio Alpha-Beta
[3,5] ,
AI 1
Pag.24
Esempio Alpha-Beta
[3,3]
AI 1
Pag.25
Esempio Alpha-Beta
[3,3]
AI 1
Pag.26
Algoritmo Alpha-Beta
function ALPHA-BETA-SEARCH(state) returns an action
inputs: state, current state in game
v←MAX-VALUE(state, - ∞ , +∞)
return the action in SUCCESSORS(state) with value v
AI 1
Pag.27
Algoritmo Alpha-Beta
AI 1
Pag.28
Potatura (pruning) Alpha-beta
Si consideri un nodo n in
un punto dell’albero
Se il giocatore ha una
scelta migliore in
– un node genitore di n
– o in un qualsiasi punto di
scelta superiore
n non sara mai
raggiunto in nessun
gioco.
Per cui quando c’è
sufficente conoscenza su
n esso può essere
“potato”.
AI 1
Pag.29
Commenti finali sull’Alpha-Beta Pruning
AI 1
Pag.31
Cut off / Taglio della ricerca
Modifica:
– if TERMINAL-TEST(state) then return UTILITY(state)
into
– if CUTOFF-TEST(state,depth) then return EVAL(state)
AI 1
Pag.32
Euristica EVAL
Idea: produrre una stima della utilità attesa
del gioco per una data posizione.
Le prestazioni dipendono dalla qualità della
EVAL.
Requisiti:
– EVAL dovrebbe ordinare I nodi terminali nello stesso modo
di UTILITY.
– Il calcolo non dovrebbe impiegare troppo tempo.
– Per I nodi non terminali la EVAL dovrebbe essere
strettamente correlata con le reali possibilitaà di vittoria.
Utile solo per stati “quiescenti” (senza grossi
sconvolgimenti futuri)
AI 1
Pag.33
Euristica EVAL. Esempio
La sommatoria ipotizza
l'indipendenza
Eval(s) = w1 f1(s) + w2 f2(s) + … + wnfn(s)
AI 1
Pag.35
Difficoltà Euristiche
AI 1
Pag.36
Effetto orizzonte
Profondità fissa:
La ricerca non
riesce a considerare
alcune mosse
AI 1
Pag.37
Giochi con chance
AI 1
Pag.38
Giochi con chance
AI 1
Pag.40
Valore minimax atteso
EXPECTED-MINIMAX-VALUE(n)=
UTILITY(n) If n is a terminal
maxs ∈ successors(n) MINIMAX-VALUE(s) If n is a max
node
mins ∈ successors(n) MINIMAX-VALUE(s) If n is a max
node
∑s ∈ successors(n) P(s) . EXPECTEDMINIMAX(s) If n is a chance
node
AI 1
Pag.41
Valutazione della posizione con nodi
chance
AI 1
Pag.43
Discussione
È necessario meta-ragionamento
AI 1
Pag.44
Sommario
AI 1
Pag.45