Suche in Spielbäumen

Werbung
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Suche in Spielbäumen
Suche in Spielbäumen
KI SS2011: Suche in Spielbäumen
1/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Spiele in der KI
Einschränkung von Spielen auf:
2 Spieler: Max und Min
deterministische Spiele
Runden basiert Spiele und
zero-sum Spiele
Z.B.: Schach, Mühle, Dame, Tic-Tac-Toe
KI SS2011: Suche in Spielbäumen
2/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Spielbaum
Ein Spielbaum ist gegeben durch:
Startzustand
Knoten repräsentieren Spielzustände
Kanten repräsentieren Züge
Spieler ziehen abwechselnd pro Ebene
Spielbaum ist durch Nachfolgerfunktion (N F ) gegeben
KI SS2011: Suche in Spielbäumen
3/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Spielbaum: Bewertungsfunktion
Ein Spielbaum wird bis Tiefe b expandiert, die Blätter werden dort
direkt bewertet:
Entweder: Die Blätter sind Endzustände (Spiele mit wenig
Endzuständen wie Tic-Tac-Toe):
Max gewinnt: (1) oder
Min gewinnt: (−1) oder
das Spiel geht unentschieden aus: (0)
Oder: Blätter in Tiefe b sind keine Endzustände (Spiele mit
vielen Endzuständen wie Schach):
Heuristische Bewertung der Spielzustände
Tic-Tac-Toe: 9! = 362880 Endzustände
Schach: 1040 Endzustände
KI SS2011: Suche in Spielbäumen
4/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Bewertung von Tic-Tac-Toe
Die einfachste Bewertung der Endzustände ist:
1 Gewinn: XXX in Reihe, Spalte oder Diagonale
0 Remis:
X und O in jeder Zeile, Spalte oder Diagonale
-1 Verlust: OOO in Reihe, Spalte oder Diagonale
Heuristische Bewertung beliebiger Knoten:
(#einfach x-besetzte Zeilen/Spalten/Diag) * 1
+ (# doppelt x-besetzte Zeilen/Spalten/Diag) * 5
+ (20, falls Gewinnsituation)
(#einfach o-besetzte Zeilen/Spalten/Diag) * 1
(# doppelt o-besetzte Zeilen/Spalten/Diag) * 5
(20, falls Verlustsituation)
XX-OO-X
0
KI SS2011: Suche in Spielbäumen
X-X
-OO-X
8
X-XOO-X
−3
X--OX
O-X
1
X--OOXX
−3
5/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Strategie: Optimale Zugfolge
Ziel: Algorithmisch den besten Zug (bzw. die beste Zugfolge
für) einen Spieler bestimmen
Problem: Der Gegenspieler versucht auch zu gewinnen
Beide Spieler spielen optimal
KI SS2011: Suche in Spielbäumen
6/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Optimale Strategie berechnen
Sei p ∈ {Min,Max} der Spieler der in Zustand s zieht und p ist der
Gegenspieler von p.
Für alle Knoten s im Spielbaum berechne M inimax(s, p):

wenn s Blatt:Bewertung von s




 wenn p = M in :
min{M inimax(s0 , p) | s0 ist Nachfolger von s}
M inimax(s, p) =


wenn p = M ax :



max{M inimax(s0 , p) | s0 ist Nachfolger von s}
Minimax-Entscheidung:
Für Max: Zug zum Nachfolger mit maximalem Wert
Für Min: Zug zum Nachfolger mit minimalem Wert
KI SS2011: Suche in Spielbäumen
7/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Minimax Algorithmus: Beispiel

wenn s Blatt:Bewertung von s




 wenn p = M in :
min{M inimax(s0 , p) | s0 ist Nachfolger von s}
M inimax(s, p) =


wenn p = M ax :



max{M inimax(s0 , p) | s0 ist Nachfolger von s}
Beispiel
89:; T
?>=<
kkk A TTTTTT
k
k
k
TTTT
k
TTTT
kkkk
k
k
k
T7654
k
7654
0123
0123
0123
7654
C
D ??
M in
B
B
@
v
B
|
|
@
v
B
|
|
??
@
v
B
|
|
@
v
B
|
v
?
@
B
||
||
vv
M ax
3
KI SS2011: Suche in Spielbäumen
12
8
2
4
6
14
5
2
8/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Minimax Algorithmus
Minimax
M inimax(s, p) =
S := N F (s)
if S = ∅ then return Bewertung von s
else if p = M ax
then return max{M inimax(s0 , p) | s0 ∈ S}
else return min{M inimax(s0 , p) | s0 ∈ S}
KI SS2011: Suche in Spielbäumen
9/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Minimax Algorithmus: Beispiele
http://wolfey.110mb.com/GameVisual/launch.php
KI SS2011: Suche in Spielbäumen
10/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Minimax Algorithmus: Eigenschaften
Für Spielbaum der Tiefe m mit Verzweigungsgrad b
Durchsucht den Spielbaum vollständig per Tiefensuche
Ressourcenbedarf:
Zeit: O(bm ) (exponentiell in der Tiefe)
Platz: O(bm) (linear in der Tiefe, falls b konstant)
Fazit:
Für echte Spiele (wie Schach) ist Minimax nicht geeignet.
Abhilfe mit Tiefenschranke d und heuristischer Bewertung der
Zustände in dieser Tiefe.
Variante von Minimax für Mehrpersonen-Spiele
KI SS2011: Suche in Spielbäumen
11/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Suche in Spielbäumen
Alpha-Beta Suche
KI SS2011: Suche in Spielbäumen
12/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Alpha-Beta Suche: Motivation
Minimax: Besucht exponentiell viele Konten in Tiefe des
Spielbaums
Aber nicht alle Knoten müssen besucht werden
Beispiel
89:;
?>=<
A TTTT
TTTT
kkkk
k
k
k
TTTT
kk
k
k
TTTT
k
kkk
0123
7654
7654
0123
0123
7654
M in
B
C
B
@
| BB
|D ???
vv @@
|
|
v
BB
|
??
@@
||
vv
B
||
||
vv
M ax
3
12
8
2
4
6
14
5
2
M inimax(s, M ax)
= max{min{3, 12, 8}, min{2, x, y}, min{14, 5, 2}}
= max{3, z, min{14, 5, 2}} mit z = min{2, x, y} ≤ 2
= max{3, z, 2} = 3
KI SS2011: Suche in Spielbäumen
13/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Alpha-Beta Suche: Idee
Prinzip der Alpha-Beta Suche: Wie Minimax mit Modifikation
Sei n Knoten im Spielbaum in Tiefe d und Zugmöglichkeit
für p
Wenn p einen besseren Knoten m in Tiefe d0 < d wählen
kann, dann wird n von p nicht besucht
Somit kann der ganze Teilbaum mit Wurzel n abgeschnitten
werden
Um den Abschnitt an Knoten n entschieden zu können, müssen
einige Nachfolger von n betrachtet werden.
KI SS2011: Suche in Spielbäumen
14/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Alpha-Beta Suche: Parameter
Zwei Parameter kontrollieren die Entscheidung über Abschnitt:
α: Der beste (maximale) bisher gefundene Wert an jedem
Auswahlpunkt entlang des Pfades für Max
β: Der beste (minimale) bisher gefundene Wert an jedem
Auswahlpunkt entlang des Pfades für Min
Alpha-Beta Suche aktualisiert die α, β Werte.
KI SS2011: Suche in Spielbäumen
15/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Alpha-Beta Suche
Start
start(s, p) =
if p = M ax then max-s(s, −∞, ∞) else min-s(s, −∞, ∞)
Maximieren
max-s(s, α, β) =
S := N F (s)
if S = ∅ then return B(s)
αl := −∞
for each s0 in S do
αl := max{αl , min-s(s0 , α, β)}
if αl ≥ β then return αl
else α := max{αl , α}
return αl
KI SS2011: Suche in Spielbäumen
Minimieren
min-s(s, α, β) =
S := N F (s)
if S = ∅ then return B(s)
βl := ∞
for each s0 in S do
βl := min{βl , max-s(s0 , α, β)}
if βl ≤ α then return βl
else β := min{βl , β}
return βl
16/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Alpha-Beta Suche: Eigenschaften
Effektivität ist Abhängig von der Reihenfolge in der Knoten
besucht werden
Beispiel
89:; T
?>=<
kkk A TTTTTT
k
k
k
TTTT
kkk
TTTT
kkkk
k
T7654
k
0123
7654
7654
0123
0123
M in
C BB
v B @@@
|
|D ???
v
|
|
v
|
|
??
@
| X XBB
vv
@
||
||
vv
M ax
3
12
8
2
4
6
14
5
89:;
?>=<
kk A SSSSSS
k
k
k
SSSS
kkkk
SSSS
kkkk
S7654
k
k
0123
7654
7654
0123
0123
M in
B @@
C BB
v
|
D BB
v
|
@

v
|
@@
 X XBB
| X XBB
vv

||
vv
2
M ax
3
KI SS2011: Suche in Spielbäumen
12
8
2
4
6
2
5
14
17/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Alpha-Beta Suche: Eigenschaften
Für Spielbaum der Tiefe m mit Verzweigungsgrad b
Spielbaum muss nicht vollständig durchsucht werden
Komplexität (Zeit):
optimale Reihenfolge in der Knoten besucht werden: O(bm/2 )
zufällige Reihenfolge: O(b3m/4 )
Fazit:
Laufzeit exponentiell in der Tiefe in des Spielbaums
Im best-case kann Alpha-Beta Suche doppelt so tief im
Spielbaum suchen wie Minimax
KI SS2011: Suche in Spielbäumen
18/20
Suche in Spielbäumen
Spielbäume Minimax Algorithmus Alpha-Beta Suche
Reihenfolge der Knotenerzeugung: Schach
Gute Reihenfolge der Knotenerzeugung für Schach:
1
Schlagen
2
Bedrohen
3
Vorwärts ziehen
4
Rückwärts ziehen
Erzielt Laufzeit von O(2bm/2 )
KI SS2011: Suche in Spielbäumen
19/20
Herunterladen