Einführung in die Methoden der [.5ex] Künstlichen Intelligenz [2ex

Werbung
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
Einführung in die Methoden der
Künstlichen Intelligenz
Ziel dieses Abschnitts
Intelligenter Agent für Zweipersonenspiele
Beispiele: Schach, Dame, Mühle, . . .
Suche bei Spielen
Annahme zunächst:
Prof. Dr. Manfred Schmidt-Schauß
Spiele mit genau zwei Gegnern
Kein Zufall im Spiel (keine Würfel, Kartenmischen) etc.
SoSe 2016
Stand der Folien: 12. Mai 2016
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
1
Zwei-Spieler-Spiele
2/40
Zwei-Spieler-Spiele
Schach
Schach (2)
Gute Strategien zum Schachspielen wurden schon entwickelt
bevor es Computer gab.
Untersuchungen zu Gewinnstrategien (Eröffnungen, Endspiel
...)
Moderne erfolgreiche Schachprogramme:
verwenden im wesentlichen das Absuchen
Bewerten von Spielsituationen
verwenden statische Bewertung der Spielsituationen
Im wesentlichen 2 Ansätze für Programme zum Schachspielen
1
2
zusätzlich Bibliotheken für Eröffnung und Endspiel
Verwende bekannte Schachtheorien
(Verteidigung, Angriff, Bedrohung, Decken, Mittelfeld, . . . ).
Versuche die menschliche Methode“ zu Programmieren
”
Absuchen aller Möglichkeiten,
um den nächsten guten Zug zu finden.
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
3/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
4/40
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
Spielbäume
Beispiel: TicTacToe
Zwei Spieler: genannt Maximierer und Minimierer
Spielfeld:
Zustand (Knoten): Darstellung der Spielsituation und welcher
Spieler am Zug ist
X
X
O
Wurzel: Aktuelle Spielsituation
O
X
X
O
Kinder von Knoten K:
mögliche Spielsituationen nach einem Zug
Spieler wechselt
Maximierer: X
Blätter mit Gewinnwert bewertet.
Schach:
schreiben abwechselnd ihr Symbol in ein freies Feld
Minimierer: O
Gewinner: Spieler hat sein Symbol in einer Reihe
(horizontal, vertikal, diagonal)
−1 = Minimierer hat gewonnen
1 = Maximierer hat gewonnen
0 = Remis
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
5/40
Zwei-Spieler-Spiele
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
6/40
Zwei-Spieler-Spiele
Beispiel:TicTacToe, Spielbaum
MinMax-Suche (1)
X OX
O
OX
Max
Eingabe: Spielsituation, Nachfolgerfunktion, Bewertung
X OX
XO
OX
Min
X OX
OX
OX
Ausgabe: Nächster optimaler Zug
X OX
O
OXX
Informelle Beschreibung der MinMax-Suche:
X OX
Max X O O
OX
X OX
XO
OX O
X OX
O OX
OX
X OX
OX
OX O
X OX
OO
OXX
X OX
OO
OXX
X OX
XOO
OXX
0
X OX
X OX
OX O
0
X OX
O OX
OXX
1
X OX
X OX
OX O
0
X OX
O OX
OXX
1
X OX
XOO
OXX
0
Bewerte alle Blätter
Berechne den Wert der anderen Knoten:
Stufenweise von unten nach oben
über die Werte der Kinder wird maximiert bzw. minimiert
je nachdem welcher Spieler am Zug ist
Dabei: Züge merken, damit der optimale Zug bekannt ist
Welchen Zug soll Max machen?
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
7/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
8/40
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
MinMax-Suche (2)
Beispiel, TicTacToe
Algorithmus MinMax-Suche
Datenstrukturen: Nachfolgerfunktion, Wert(Zustand) für Endsituationen,
Datenstruktur für Spielzustand, Spieler
Funktion Minmax(Zustand,Spieler):
N F := alle Nachfolgezustände zu (Zustand,Spieler);
if N F = ∅ then return Wert(Zustand) else
if Spieler == Maximierer then
return max{Minmax(Z, Spieler) | Z ∈ N F }
else // Spieler ist Minimierer
return min{Minmax(Z, Spieler) | Z ∈ N F }
endif
endif
9/40
Zwei-Spieler-Spiele
X OX
OX
OX
0
X OX
O
OXX
0
X OX
Max X O O
OX
0
X OX
XO
OX O
0
X OX
O OX
OX
1
X OX
OX
OX O
0
X OX
OO
OXX
1
X OX
OO
OXX
0
X OX
XOO
OXX
0
X OX
X OX
OX O
0
X OX
O OX
OXX
1
X OX
X OX
OX O
0
X OX
O OX
OXX
1
X OX
XOO
OXX
0
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
10/40
Zwei-Spieler-Spiele
MinMax in Haskell
MinMax-Eigenschaften
MinMax kann als Tiefensuche durchgeführt werden
minmax endZustand wert nachfolger spieler zustand =
go (zustand,[]) spieler
where
go (zustand,p) spieler
| endZustand zustand = (wert zustand,reverse $ zustand:p)
| otherwise =
let l = nachfolger spieler zustand
in case spieler of
Maximierer -> maximumBy
(\(a,_) (b,_) -> compare a b)
[go (z,zustand:p) Minimierer | z <- l]
Minimierer -> minimumBy
(\(a,_) (b,_) -> compare a b)
[go (z,zustand:p) Maximierer | z <- l]
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
X OX
XO
OX
0
Min
wobei Spieler = der jeweils anderen Spieler
Implementierung: sollte zus. den Weg speichern, damit der
nächste optimale Zug als Ausgabe zur Verfügung steht.
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
X OX
O
OX
0
Max
Laufzeit O(cd ) bei mittlerer Verzweigungrate c und Blättern
in Tiefe d
Praktisches Problem: Bei mittelschweren Spielen:
unmöglich in annehmbarer Zeit berechenbar
TicTacToe: Vom leeren Spielfeld aus: 9! = 362.880 Zugfolgen,
geht gerade noch
Daher: Abwandlung des Verfahrens!
11/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
12/40
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
MinMax mit Tiefenschranke
Beispiel: Heuristische Bewertung für TicTacToe
Suche nur bis zur einer bestimmten Tiefe k
+
+
-
Bewerte die Knoten in Tiefe k mit einer Heuristik
Beispiele für die Bewertungsfunktion:
Schach: Materialvorteil, evtl. Stellungsvorteil,
Gewinnsituation, ...
(#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)
Mühle: Material, #Mühlen, Bewegungsfreiheit, . . .
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
13/40
Zwei-Spieler-Spiele
14/40
Zwei-Spieler-Spiele
Bewertungsfunktionen
Beispiel: TicTacToe
Güte der Bewertungsfunktion bestimmt Güte des Verfahrens;
Bewertung 1
Bewertung 2
Bewertung 3
muss algorithmisch (möglichst schnell) berechenbar sein
sollte Endzustände entsprechend minimal und maximal
bewerten
Sieg
1
100
1
Niederlage
-1
10
0
Unentschieden
0
50
0
Bewertung 1 und Bewertung 2 führen zum
gleichen optimalen Zug, da
Sieg > Unentschieden > Niederlage
Es gilt (in Spielen ohne Zufall):
Berechnung des besten Zuges ist unabhängig von den exakten
Werten der Bewertungsfunktion;
Die Ordnung zwischen den Spielsituationen bestimmt.
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
Bewertung 3 hat eine andere Ordnung:
Sieg > Unentschieden = Niederlage
und kann daher zu anderem optimalen Zug führen
15/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
16/40
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
Einwand
Einwand
Eine schnelle und exakte Bewertungsfunktion kann es i.a. nicht
geben:
Wenn man ein sehr gute Bewertungsfunktion hat:
Die Frage, ob man gewinnen kann, kann in einem Spiel
PSPACE-hart sein. (Spielserie mit Parameter)
Warum MinMax ausführen und nicht gleich
nur die Bewertungen der Kinder anschauen?
z.B. Erfüllbarkeit von QBFs ∀x1 ∃x2 ∀x3 ∃x4 . . . F (x1 , . . . , xn )
Im allgemeinen:
Je tiefer man geht, umso besser wird die Bewertungsfunktion!
Eine in polynomieller Zeit berechenbare Bewertungsfunktion die
exakt ist, würde einen Polynomial-Zeit Algorithmus für ein
PSPACE-hartes Problem ergeben.
Fazit: Bewertungsfunktionen sind i.a. Schätzungen.
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
17/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
Zwei-Spieler-Spiele
18/40
Zwei-Spieler-Spiele
Tiefenbeschränkte MinMax-Suche
Optimierung der MinMax-Suche: Beispiele
Max
Mittlere Verzweigungrate c
A
Min
B
E
Tiefenschranke m
Laufzeit O(cm ), wenn die Heuristik in konstanter Zeit
berechenbar ist
Max
C
D
F
G
H
MinMax(A, M ax)
= max{MinMax(B, M in), MinMax(E, M in)}
= max{min{MinMax(C, M ax), MinMax(D, M ax)},
min{MinMax(F, M ax), MinMax(G, M ax), MinMax(H, M ax)}}
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
19/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
20/40
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
Optimierung der MinMax-Suche: Beispiele
Max
Beispiel mit konkreten Werten
A
k
Max
B
Min
A
E
k
××
3
Min
Max
C
D
F
k0
G
××
MinMax(A, M ax)
= max{MinMax(B, M in), MinMax(E, M in)}
= max{k, min{k 0 , MinMax(G, M ax), MinMax(H, M ax)}}
Wenn k ≥ k 0 :
= k
=⇒ Knoten (bzw. Teilbäume) G und H braucht man nicht betrachten!
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
21/40
Max
3
4
2
-2
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
Zwei-Spieler-Spiele
5
22/40
Zwei-Spieler-Spiele
Symmetrischer Fall
Alpha-Beta-Suche
Min
A
Max
B
C
Kürzt genau diese Fälle weg
E
l
Min
E
H
Durch Verwendung eines Suchfensters [α, β]
××
D
F
l
0
G
Tiefensuche mit Tiefenschranke notwendig
Anpassung der Tiefenschranke im folgenden Algorithmus
implizit
H
MinMax(A, M in)
= min{MinMax(B, M ax), MinMax(E, M ax)}
= min{l, max{l0 , MinMax(G, M in), MinMax(H, M in)}}
Wenn l ≤ l0 :
= l
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
23/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
24/40
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
In Haskell
Algorithmus α − β-Suche
Aufruf: AlphaBeta(Zustand,Spieler,−∞,+∞)
Funktion: AlphaBeta(Zustand,Spieler,α,β)
1 Wenn Tiefenschranke erreicht, bewerte die Situation, return Wert
2
Sei NF die Folge der Nachfolger von (Zustand,Spieler)
3
Wenn Spieler = Minimierer:
βl := ∞;
for-each L ∈ NF
βl := min{βl , AlphaBeta(L,Maximierer,α,β)}
if βl ≤ α then return βl endif// verlasse Schleife
β := min{β, βl }
end-for
return βl
4
Wenn Spieler = Maximierer
αl := −∞;
for-each L ∈ NF
αl := max{αl , AlphaBeta(L,Minimierer,α,β)}
if αl ≥ β then return αl endif// verlasse Schleife
α := max{α, αl }
end-for
return αl
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
alphaBeta wert nachfolger maxtiefe neginfty infty spieler zustand =
ab 0 neginfty infty spieler zustand
where
ab tiefe alpha beta spieler zustand
| null (nachfolger spieler zustand) || maxtiefe <= tiefe = wert zustand
| otherwise =
let l = nachfolger spieler zustand
in
case spieler of
Maximierer -> maximize tiefe alpha beta l
Minimierer -> minimize tiefe alpha beta l
maximize tiefe alpha beta xs = it_maximize alpha neginfty xs
where
it_maximize alpha alpha_l []
= alpha_l
it_maximize alpha alpha_l (x:xs) =
let alpha_l’ = max alpha_l (ab (tiefe+1) alpha beta Minimierer x)
in if alpha_l’ >= beta then alpha_l’ else
it_maximize (max alpha alpha_l’) alpha_l’ xs
minimize tiefe alpha beta xs = it_minimize beta infty xs
where
it_minimize beta beta_l []
= beta_l
it_minimize beta beta_l (x:xs) =
let beta_l’ = min beta_l (ab (tiefe+1) alpha beta Maximierer x)
in if beta_l’ <= alpha then beta_l’ else
it_minimize (min beta beta_l’) beta_l’ xs
25/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
26/40
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
Alpha-Beta-Suche: Beispiel
Reihenfolge der Nachfolger
a
Max
a 5
Max
Min
a 5
Max
c
b
c 5
b 1
Min
c 5
Min
b 4
×××
1
2
4
-1
6
a
Max
-2
2
3
4
5
6
7
8
8
7
6
5
4
3
2
1
0
Beide Bäume sind gleich
α = −∞
β =∞
αl = −∞
Außer: Nachfolger in umgekehrter Reihenfolge
Reihenfolge bestimmt Güte von Alpha-Beta
Min
2
Max
4
Abhilfe: Nachfolger vorsortieren
c
b
Heuristik zum Sortieren verwenden
-1
6
a
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
α = −∞
β =∞
αl = −∞
-2
0
27/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
28/40
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
Eigenschaften Alpha-Beta
Optimierungen von Alpha-Beta
Zur Erinnerung:
MinMax: Laufzeit O(cd ) bei Tiefenschranke d und
Verzweigungrate c
Optimierungen
Alpha-Beta-Suche:
Speicherung von bewerteten Stellungen
Worst-Case: Wie MinMax
Nutzung von Symmetrien
d
2
Best-Case O(c )
Probleme:
d
2
Manchmal: Tiefere Suche schlechter als nicht so tiefe Suche
Bei guter Vorsortierung O(c ) (Daumenregel)
3d
4
Horizonteffekt: Durch Tiefenschranke wird genau der gute
Zug übersehen
Bei zufälliger Vorsortierung O(c )
Bei guter Vorsortierung:
Bei gleichen Ressourcen kann man mit Alpha-Beta-Suche
doppelt so tief vorausschauen als bei MinMax-Suche!
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
29/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
Strategie zur Vermeidung des Horizonteffekts
Spiele mit Zufall
Falls bei Suche in Tiefe d ein Zug am Knoten K besonders
gut (Maximierer) ist:
Wir betrachten nur 2-Spieler-Spiele
Mit Zufall: Z.B. Würfeln, Kartenmischen, etc.
besonders gut: alle Brüder von K haben schlechtere
Bewertung
Naiver Ansatz:
Verwende MinMax (bzw. α − β) über alle Möglichkeiten
Dann Suche K mit größerer Tiefe ab
Tiefere Suche ist auch ratsam bei Zugzwang, denn
Besser:
Benutze die Wahrscheinlichkeit und den Erwartungswert
(der Bewertungsfunktion)
Erhöht den Suchhorizont
ohne Vergrößerung des Suchraums
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
30/40
31/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
32/40
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
Spielbaum mit Zufallsknoten
Eigenschaften
Max (würfelt)
p
Max (Zug)
3.2
A
Min (würfelt)
3.2
B
0.6
Min (Zug)
0.4
4
D
4
2.3
C
(= 0.6*4 + 0.4*2)
6
2
(=0.3*3+0.7*2)
0.3
2
E
0.7
3
F
9
3
Satz
Es gilt: Wenn Wahrscheinlichkeit eine Rolle spielt, dann ist die
Berechnung des Zuges mit dem besten Erwartungswert abhängig
von den exakten Werten der Bewertungsfunktion; nicht nur von
der relativen Ordnung auf den Situationen.
2
G
7
6
2
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
33/40
Zwei-Spieler-Spiele
Mehr als 2 Spieler (ohne Zufall)
7.4
6.7
Wir erläutern nur die Probleme (keine Lösung)
Min (würfelt)
6.7
0.7
Min (Zug)
34/40
Zwei-Spieler-Spiele
Beweis durch Gegenbeispiel
Max (Zug)
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
1
7.4
5.7
(=0.7+0.3*20)
0.3
20
vorher:
0.1
(=0.1*2+0.9*8)
(=0.1*3+0.9*6)
Erkenntnis: Probleme sind wesentlich schwieriger
0.9
32
68
2
8
Vereinfachung: Genau 3 Spieler
Blattbewertung: Statt Wert, nun Drei-Tupel (A, B, C):
Ergebnis des jeweiligen Spielers
=⇒ Die Bewertungsfunktion muss vorsichtig gewählt werden!
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
35/40
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
36/40
Zwei-Spieler-Spiele
Zwei-Spieler-Spiele
3-Spieler-Baum
3-Spieler-Baum: Bewertung (1)
Strategie: Jeder maximiert sein eigenes Ergebnis
Spieler S1
Spieler S1
(1,3,2)
Spieler S2
Spieler S2
(0,1,3)
(1,3,2)
Spieler S3
Spieler S3
(1,2,0)
(0,1,3)
(1,0,4)
(0,1,2)
(3,0,2)
(4,0,1)
(1,3,2)
(0,1,3)
(1,2,0)
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
37/40
(0,1,3)
Spieler S1
(1,0,4)
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
(4,0,1)
(1,3,2)
(0,2,0)
(0,1,2)
(3,0,2)
(3,0,2)
(4,0,1)
(1,-1,-1)
(0,0,0)
?
Spieler S2
(0,2,0)
(1,0,4)
(3,0,2)
38/40
Spieler S1
(0,1,3)
(0,1,3)
(0,1,2)
Strategie: Jeder maximiert sein eigenes Ergebnis
(0,1,3)
(1,2,0)
(1,0,4)
Nicht-eindeutige Strategie
Strategie: Spieler 1 und Spieler 3 verbünden sich
Ziel: Minimiere Ergebnis von Spieler 2
(0,1,3)
(1,3,2)
Zwei-Spieler-Spiele
3-Spieler-Baum: Bewertung (1)
Spieler S3
(3,0,2)
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
Zwei-Spieler-Spiele
Spieler S2
(1,0,4)
(0,2,0)
Spieler S3
(0,2,0)
(1,3,2)
(0,2,0)
39/40
(0,0,0)
(0,0,0)
(1,-1,-1)
(-1,-1,1)
?
(0,0,0)
(1,-1,-1)
(-1,-1,1)
(0,0,0) (1,-1,-1) (-1,1,-1) (0,0,0) (1,-1,-1) (1,-1,-1) (-1,-1,1) (0,0,0)
M. Schmidt-Schauß · KI · SoSe 2016 · Suche bei Spielen
40/40
Herunterladen