Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom...

30
- von Spielbäumen un Vom Amateur zu Dr. Marco B Sommersemester 2009 ProInformatik - Funkti ProInformatik – Funktionale Programmierung Freie Universität Berlin nd anderen Wäldern - um Großmeister 1 Block-Berlitz ionale Programmierung

Transcript of Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom...

Page 1: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

- von Spielbäumen und anderen Wäldern

Vom Amateur zum Großmeister

Dr. Marco BlockSommersemester 2009

ProInformatik - Funktionale Programmierung

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

von Spielbäumen und anderen Wäldern -

Vom Amateur zum Großmeister

1Dr. Marco Block-Berlitz

Funktionale Programmierung

Page 2: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

1) Es war einmal ... Tic-Tac-Toe!

2) Das unbesiegbare Tic-Tac-Toe-Programm

3) Spiele komplexer als das Weltall?

4) Ohne menschliche Experten geht es nicht

5) Schach ist Tic-Tac-Toe sehr ähnlich

Übersicht zum Inhalt

6) Suche allein genügt nicht - auch das Brett ist wichtig

7) Mensch versus Maschine

8) Das Schachprogramm FUSc#

9) Programme können selbständig Spiele lernen

Sommersemester 2009 Dr. Marco Block

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

Programm

4) Ohne menschliche Experten geht es nicht

auch das Brett ist wichtig

9) Programme können selbständig Spiele lernen

Dr. Marco Block-Berlitz 2

Page 3: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Zunächst betrachten wir die speziellen Eigenschaften undTic-Tac-Toe.

Tic-Tac-Toe – Eigenschaften und Komplexität

alternierendesZwei-Spieler-Spiel

vollständige Information

Sommersemester 2009 Dr. Marco Block

Zwei-Spieler-Spielmit Spieler X und O

Spielablauf

x

x

...

x

x O

x O

...x

O

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

und Spielregeln vom Spielklassiker

Eigenschaften und Komplexität

Information Nullsummenspiel

Dr. Marco Block-Berlitz 3

des einen Gewinn ist des anderen Verlust

Komplexität

Damit ist die Komplexität von Tic-Tac-Toe relativklein und die Lösung sehr einfach.

Mögliche Spielverläufe: 9*8*7*...*2*1 = 9!das entspricht 362.880

Legale Wege gibt es sogar nur 255.168.

Ohne Rotation und Spiegelung gibt es sogar nur 765 unterschiedliche Spielsituationen.

Page 4: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Wir benötigen eine Bewertungsfunktion, die besagt, welcherob eine Partie unentschieden endete.

Tic-Tac-Toe - Bewertungsfunktion

Bewertungsfunktion

-1 0

x OO

O

O xxx x

x O

Ox x

Sommersemester 2009 Dr. Marco Block

Spieler O gewinnt Unentschieden

Suchbaum

0 -1 -1 1 -1 0Spielbewertungen

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

welcher Spieler gewonnen hat oder

10

xxO

xx O O

x O

OOxx

Dr. Marco Block-Berlitz 4

Unentschieden Spieler X gewinnt

X am Zug

O am Zug

X am Zug

0 1 1 -1 ?

Page 5: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Betrachten wir die folgende Spielsituation für den Spieler O

Tic-Tac-Toe – lokale Betrachtung für Spieler O

1 0 1 1

Sommersemester 2009 Dr. Marco Block

1 0 1 1

Spieler O wird sich für den vielversprechendsten Zug entscheiden und wählt das stehenden Möglichkeiten..

1 0 1 1

0

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

O

lokale Betrachtung für Spieler O

X am Zug

O am Zug

X am Zug ?

Dr. Marco Block-Berlitz 5

?Zug entscheiden und wählt das Minimum der zur Verfügung

X am Zug

O am Zug

X am Zug

Page 6: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Betrachten wir die folgende Spielsituation für den Spieler X

Tic-Tac-Toe – lokale Betrachtung für Spieler X

-1 1 0

Sommersemester 2009 Dr. Marco Block

-1 1 0

Auch Spieler X wird sich für den vielversprechendsten Zug entscheiden und wählt in diesem Fall das der zur Verfügung stehenden Möglichkeiten..

-1 1 0

1

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

X

lokale Betrachtung für Spieler X

O am Zug

X am Zug

O am Zug ?

Dr. Marco Block-Berlitz 6

?Zug entscheiden und wählt in diesem Fall das Maximum

O am Zug

X am Zug

O am Zug

Page 7: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Wenn wir davon ausgehen, dass jeder Spieler immer denkönnen wir die MinMax-Strategie (Claude Elwood Shannon

Tic-Tac-Toe – MinMax-Strategie

-1 -1

0X am ZugMaximieren

Sommersemester 2009 Dr. Marco Block

0 -1 -1 1 -1

-1 -1O am Zug

X am Zug

Minimieren

Formal läßt sich MinMax, wie folgt beschreiben:

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

für sich aktuell besten Zug spielt, dannShannon 1950) formulieren:

0

Hauptvariante

Dr. Marco Block-Berlitz 7

1 0 1 1 0

0

Page 8: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Tic-Tac-Toe – MinMax-Strategie

Formal läßt sich MinMax, wie folgt beschreiben:

maxKnoten(n)

Pseudocode:

Sommersemester 2009 Dr. Marco Block

maxKnoten(n)

if n ist terminaler Zustand

return eval(n)

w = -∞∞∞∞für jedes Kind m of n

v = minKnoten(m)

if v > w then w = v

return w

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

Dr. Marco Block-Berlitz 8

minKnoten(n)

if n ist terminaler Zustand

return eval(n)

w = ∞∞∞∞für jedes Kind m of n

v = maxKnoten(m)

if v < w then w = v

return w

Page 9: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Tic-Tac-Toe – MinMax-Strategie

Haskell [3]:

maximiere :: (Ord n) => (Baum n) -

maximiere (Knoten x []) = x

maximiere (Knoten x c) = maximum (map minimiere c)

data Baum a = Knoten a [Baum a]

minimiere :: (Ord n) => (Baum n) -

minimiere (Knoten x []) = x

Sommersemester 2009 Dr. Marco Block

minimiere (Knoten x []) = x

minimiere (Knoten x c) = minimum (map maximiere c)

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

-> n

maximiere (Knoten x c) = maximum (map minimiere c)

-> n

Dr. Marco Block-Berlitz 9

minimiere (Knoten x c) = minimum (map maximiere c)

Page 10: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Mit Hilfe der MinMax-Strategie können wir für Spiele, mit den

Unbesiegbares Programm

alternierendesZwei-Spieler-Spiel

vollständige Information

Sommersemester 2009 Dr. Marco Block

Zwei-Spieler-Spielmit Spieler X und O

... ein Programm schreiben, das unbesiegbar ist, wenn das

John Forbes Nash1994 Nobelpreis für Wirtschaftswissenschaften

Spieltheorie: Nash-Equilibrium

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

den folgenden Eigenschaften ...

Nullsummenspiel Geringe Komplexität

Dr. Marco Block-Berlitz 10

das Spiel ausgeglichen ist.

Page 11: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

• Das Spiel Dame (checkers) gilt seit 2007 als „weakly solved“. Chinook ist nicht zu besiegen.

Suchraumkomplexität von Spielen

• Im Schach sind Maschinen den menschlichen Großmeistern seit den 1990‘ern ebenwürdig. Bestes Programm: Rybka

• Go ist die neue Drosophila melanogaster der Künstlichen Intelligenz, aktuelle Programme haben aber nur Amateur

Sommersemester 2009 Dr. Marco Block

Im Vergleich dazu: Anzahl Atome der Erde (51) und Anzahl Atome im Weltall (78)

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

als „weakly solved“.

Im Schach sind Maschinen den menschlichen Großmeistern Rybka

der Künstlichen Intelligenz, aktuelle Programme haben aber nur Amateur-Niveau

Dr. Marco Block-Berlitz 11

Im Vergleich dazu: Anzahl Atome der Erde (51) und Anzahl Atome im Weltall (78)

Page 12: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Angenommen ein Spiel hat einen konstanten Verzweigungsfaktor von und eine durchschnittliche Tiefe von 50 Zügen.

Was bedeutet eine hohe Komplexität?

Der entsprechende Suchbaum hätte Knoten.

Angenommen wir hätten 10.000 Computer, die jeweils eine Milliarde und man könnte die Arbeit ohne Verluste auf alle Rechner verteilen, dann beläuft sich die Rechenzeit auf ca.

Sommersemester 2009 Dr. Marco Block

Dies ist „zum Glück“ nur 1043 mal so lange wie unser Universum alt ist.

Wie kann es dann sein, dass ein Schachcomputer gegen einen menschlichen Weltmeister gewinnt?

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

Angenommen ein Spiel hat einen konstanten Verzweigungsfaktor von 30 (30 Aktionsmöglichkeiten pro Stellung)

Der entsprechende Suchbaum hätte Knoten.

eine Milliarde Suchschritte pro Sekunde schaffen, und man könnte die Arbeit ohne Verluste auf alle Rechner verteilen, dann beläuft sich die Rechenzeit auf ca.

Dr. Marco Block-Berlitz 12

mal so lange wie unser Universum alt ist.

Wie kann es dann sein, dass ein Schachcomputer gegen einen menschlichen Weltmeister gewinnt?

Page 13: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Die einzige Möglichkeit trotz einer hohen Komplexität einebesteht darin, die Suchtiefe zu begrenzen.

Suchtiefe begrenzen

Sommersemester 2009 Dr. Marco Block

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

eine vernünftige Zugauswahl zu treffen,

t fest

Dr. Marco Block-Berlitz 13

Page 14: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Es werden unterschiedliche Bewertungskriterien als Funktionengewichtet aussummiert. Das funktioniert auf Grund derNullsummenspiel handelt.

Allgemeine Bewertungsfunktion

Diese Funktionen werden unabhängig voneinander bestimmt,Weiß. Die Differenz ergibt den Funktionswert.

Sommersemester 2009 Dr. Marco Block

Weiß. Die Differenz ergibt den Funktionswert.

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

Funktionen beschrieben und dieseder Tatsache, da es sich um ein

bestimmt, jeweils für Schwarz und für

Dr. Marco Block-Berlitz 14

Page 15: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Aus der Schachliteratur sind viele Muster bekannt,entsprechend bewertet werden.

Bewertungsfunktion im Schach

BishopPair

Knight_Outpost

Supported_Knight_Outpost

Connected_Rooks

Opposite_Bishops

Opening_King_Advance

King_Proximity

Blocked_Knight

Draw_Value

Sommersemester 2009 Dr. Marco Block

No_Material

Bishop_XRay

Rook_Pos

Pos_Base

Pos_Queenside

Bishop_Mobility

Queen_Mobility

Knight_SMobility

Rook_SMobility

King_SMobility

Threat

Overloaded_Penalty

Q_King_Attack_Opponent

NoQ_King_attack_Opponent

NoQueen_File_Safty

Attack_Value

Unsupported_Pawn

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

bekannt, diese können nun lokalisiert und

Passed_Pawn_Control

Doubled_Pawn

Odd_Bishop_Pawn_Pos

King_Passed_Pawn_Supported

Passed_Pawn_Rook_Supported

Blocked_EPawn

Pawn_Advance

King_Passed_Pawn_Defence

Pawn_Defence

Bishop_SMobility

Queen_SMobility

Piece_Values

Opponents_Threat

Q_King_Attack_Computer

NoQ_King_Attack_Computer

Queen_File_Safty

Piece_Trade_Bonus

Pawn_Trade_Bonus

Dr. Marco Block-Berlitz 15

Mega_Weak_Pawn

Castle_Bonus

Bishop_Outpost

Supported_Bishop_Outpost

Seventh_Rank_Rooks

Early_Queen_Movement

Mid_King_Advance

Trapped_Step

Useless_Piece

Near_Draw_Value

Mating_Positions

Ending_King_Pos

Knight_Pos

Pos_Kingside

Knight_Mobility

Rook_Mobility

King_Mobility

Adjacent_Pawn

Unstoppable_Pawn

Weak_Pawn

Blocked_Pawn

Passed_Pawn_Rook_Attack

Blocked_DPawn

Pawn_Advance

Pawn_Advance2

Pawn_Pos

Isolated_Pawn

Weak_Pawn_Attack_Value

... und viele mehr!

Page 16: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Die MinMax-Strategie läßt sich auch mit beschränkter Tiefeproblemlos ausführen, um den besten Zug zu bestimmen.

MinMax-Strategie mit Bewertungsfunktion

-8 0

1X am ZugMaximieren

Sommersemester 2009 Dr. Marco Block

-8 0O am Zug

X am Zug

Minimieren

12 4 -8 9 0

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

Tiefe und einer Bewertungsfunktion.

Strategie mit Bewertungsfunktion

1

Dr. Marco Block-Berlitz 16

1

10 5 11 1 Bewertungsfunktion

Page 17: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Es gibt jedoch Situationen im Spielbaum, bei denen einzelnewerden müssen, da sie ein Maximum/Minimum am Elternknoten

Das Alpha-Beta-Pruning nutzt dies aus um unnötige Äste

MinMax-Strategie und Alpha-Beta-Pruning

Minimieren

Sommersemester 2009 Dr. Marco Block

Maximieren

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

einzelne Zweige nicht mehr betrachtetElternknoten nicht mehr verändern.

im Baum abzuschneiden.

Pruning

Dr. Marco Block-Berlitz 17

Page 18: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Pseudocode:

Alpha-Beta-Pruning

alpha-beta-maxKnoten(n, tiefe, αααα, ββββif (tiefe==0)

return eval(n)

für jedes Kind m of n

wert = alpha-beta-minKnoten(m, tiefe

if wert ≥≥≥≥ ββββreturn ββββ

if wert>αααααααα=wert

Sommersemester 2009 Dr. Marco Block

αααα=wertreturn αααα

alpha-beta-minKnoten(n, tiefe, αααα, ββββif (tiefe==0)

return eval(n)

für jedes Kind m of n

wert = alpha-beta-maxKnoten(m, tiefe

if αααα ≥≥≥≥ wert

return ααααif ββββ>wert

beta=wert

return ββββ

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

ββββ):

minKnoten(m, tiefe-1, αααα, ββββ)

Beta-Cutoff

Dr. Marco Block-Berlitz 18

ββββ):

maxKnoten(m, tiefe-1, αααα, ββββ)}

Alpha-Cutoff

Page 19: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Pseudocode:

Alpha-Beta-Pruning

alpha-beta(n, tiefe, αααα, ββββ):if (tiefe==0)

return eval(n)

für jedes Kind m of n

wert = -alpha-beta(m, tiefe-

if wert ≥≥≥≥ ββββreturn ββββ

if wert>αααααααα=wert

Sommersemester 2009 Dr. Marco Block

αααα=wertreturn αααα

Wir können durch vertauschen und negieren der ParameterFunktionen vertauschen.

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

-1, -ββββ, -αααα)

Dr. Marco Block-Berlitz 19

Parameter alpha und beta, beide

Page 20: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Alpha-Beta-Pruning

[-∞∞∞∞,

[-∞∞∞∞, ∞∞∞∞]

1

0

0

[0,

Sommersemester 2009 Dr. Marco Block

1 -1

0 5 -2

[-∞∞∞∞, ∞∞∞∞]

1

-2 < α (= 0)

αααα-Cutoff

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

, ∞∞∞∞]

[αααα, ββββ]

hat blau sicher hat rot sicher

Blau will maximierenRot will minimieren

, ∞∞∞∞]

5

[0, ∞∞∞∞]

1

Dr. Marco Block-Berlitz 20

-5 1 2

[0, ∞∞∞∞]

1

[0, 1]

2 > β (= 1)

ββββ-Cutoff

Page 21: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Alpha-Beta-PruningHaskell [3]:

maximiere = maximum . maximiere‘

maximiere‘ (Knoten x c) = mapmin (map minimiere‘ c)

data Baum a = Knoten a [Baum a]

minimiere = minimum . minimiere‘

minimiere‘ (Knoten x c) = mapmax (map maximiere‘ c)

mapmin, mapmax :: (Ord a) => [[a]]

Sommersemester 2009 Dr. Marco Block

mapmin, mapmax :: (Ord a) => [[a]]

mapmin (h:t) = (minimum h) : (verwerfeKleinere (minimum h) t)

mapmax (h:t) = (maximum h) : (verwerfeGroessere (maximum h) t)

verwerfeKleinere :: (Ord a) => a -

verwerfeKleinere n [] = []

verwerfeKleinere n (h:t)

| any (n > ) h = verwerfeKleinere n t

| otherwise = (minimum h) : (verwerfeKleinere (minimum h) t)

verwerfeGroessere :: (Ord a) => a

verwerfeGroessere n [] = []

verwerfeGroessere n (h:t)

| any (n < ) h = verwerfeGroessere n t

| otherwise = (maximum h) : (verwerfeGroessere (maximum h) t)

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

maximiere‘ (Knoten x c) = mapmin (map minimiere‘ c)

minimiere‘ (Knoten x c) = mapmax (map maximiere‘ c)

mapmin, mapmax :: (Ord a) => [[a]] -> [a]

liefert True, wenn min. ein Element die Bedingung erfüllt

Dr. Marco Block-Berlitz 21

mapmin, mapmax :: (Ord a) => [[a]] -> [a]

mapmin (h:t) = (minimum h) : (verwerfeKleinere (minimum h) t)

mapmax (h:t) = (maximum h) : (verwerfeGroessere (maximum h) t)

-> [[a]] -> [a]

| any (n > ) h = verwerfeKleinere n t

| otherwise = (minimum h) : (verwerfeKleinere (minimum h) t)

verwerfeGroessere :: (Ord a) => a -> [[a]] -> [a]

| any (n < ) h = verwerfeGroessere n t

| otherwise = (maximum h) : (verwerfeGroessere (maximum h) t)

Page 22: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Zu einer guten Suche wird eine brauchbare Stellungsrepräsentationbenötigt.

Repräsentation und Zuggenerator

-4 -2 -3 -5 -6 -3 -2 -4

-1 -1 -1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

8x8-Spielbrett Bitboards

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

Sommersemester 2009 Dr. Marco Block

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1

4 2 3 5 6 3 2 4

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

1 1 1 1 1

0 0 0 0 0

11100

11000

64 BIT-Wort

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

Stellungsrepräsentation mit schnellem Zuggenerator

0 0 0

0 0 0

0 0 0

0 0 0

ToPiecesBoard

Dr. Marco Block-Berlitz 22

0 0 0

0 0 0

0 0 0 0

1 1 1 1

0 0 0

0 ... 00

1 ... 00

>> 1 =

Page 23: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Es gibt zahlreiche Möglichkeiten, die Suchtiefe von Schachprogrammendamit entsprechend spielstärker zu machen.

Optimierungen der Suche

Eröffnungsbuch undEndspieldatenbank

Transpositions-tabellen

Sommersemester 2009 Dr. Marco Block

Desweiteren kommen folgende Optimierungen zumHistorieheuristik, Ruhesuche, ...

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

Schachprogrammen zu erhöhen und sie

Iterative Tiefensuche

t=1

Nullmoves

Dr. Marco Block-Berlitz 23

t=1

t=2

t=3

t=4

Einsatz: Zugsortierungen, Hauptvarianten, Killer- und

Page 24: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Es gab bereits viele Matches zwischen Maschinen undein paar legendäre aufgelistet

Mensch versus Maschine

Kasparov

Kasparov

Kasparov

Kramnik

Deep Blue

Deep(er) Blue

X3D Fritz

Deep Fritz

1996

1997

2003

2006

vs

vs

vs

vs

4 –

2.5

2 –

2 –

Sommersemester 2009 Dr. Marco Block

Das aktuell stärkste Programm ist Rybka (geschätzt 3200Schach gegen dieses Programm abschneiden wird.

V. Topalov (2813) W. Anand (2788) M. Carlsen (2772)

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

menschlichen Weltmeistern. Hier sind

– 2

2.5 – 3.5

– 2

– 4

G. Kasparov (2851)

Dr. Marco Block-Berlitz 24

3200 Elo), es bleibt abzuwarten wie die Weltelite im

L. Aronian (2768) W.Kramnik (2759) P. Leko (2756)

G. Kasparov (2851)

Page 25: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Seit 2002 wird das Schachprogramm FUSc# an der Freienhartem Training und vielen Lines-of-Code, ist FUSc# in derSchachpartien zu bezwingen.

So spielte FUSc# im Jahr 2004 gegen FideMeister Ilja Brener

Das Schachprogramm FUSc#

Sommersemester 2009 Dr. Marco Block

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

Freien Universität Berlin entwickelt. Nachder Lage, auch deutsche Titelträger in

Brener Remis.

Alpha-Beta-PruningIterative SucheDiverse Pruning-TechnikenTranspositionstabellenNullmovesEröffnung- und Endspielbücher

Dr. Marco Block-Berlitz 25

FM Ilja Brener14 Jahre altElo: 2375

Eröffnung- und Endspielbücher...

Page 26: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Die Bewertungskoeffizienten lassen sich automatisch anpassendem Schachserver von Chessbase.

Nach jeder Partie analysiert das Programm die Stellen derhatte und korrigiert die entsprechenden Parameter.

Bewertungskoeffizienten trainieren

Eine untrainierte FUSc#-Version erreichte nach 120 Partien

Sommersemester 2009 Dr. Marco Block

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

anpassen [1]. So geschehen bei FUSc# auf

der Partie, bei denen er falsch bewertet

Koeffizienten lassen sich mit

Partien mehr als 2000 Elo-Punkte.

Dr. Marco Block-Berlitz 26

Koeffizienten lassen sich mit Reinforcement Learningjustieren und optimieren

Page 27: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Mehrspielervarianten

Um Min-Max für mehrere Spieler anwenden zu können, müssen einige vorgenommen werden:

• Für jede Ebene muss gespeichert werden, welcher Spieler an der Reihe ist

• Die Bewertungsfunktion darf nicht mehr einen Wert zurückliefern, sondern erstellen, welche die Bewertungen für alle Spieler aus ihrer Sicht enthalten

Sommersemester 2009 Dr. Marco Block

Es existieren nun jedoch mehrere Möglichkeiten die beste Alternative zu wählen.

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

Max für mehrere Spieler anwenden zu können, müssen einige Anpassungen

Für jede Ebene muss gespeichert werden, welcher Spieler an der Reihe ist

Die Bewertungsfunktion darf nicht mehr einen Wert zurückliefern, sondern muss einen Nutzenvektorerstellen, welche die Bewertungen für alle Spieler aus ihrer Sicht enthalten

Dr. Marco Block-Berlitz 27

Es existieren nun jedoch mehrere Möglichkeiten die beste Alternative zu wählen.

Page 28: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Mehrspielervarianten - maxN

Eine Variante wäre, wenn sich alle Spieler optimistisch verhalten und jeweils versuchen eigenen Nutzen im Nutzenvektor stets zu maximieren:

Sommersemester 2009 Dr. Marco Block

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

Eine Variante wäre, wenn sich alle Spieler optimistisch verhalten und jeweils versuchen ihren

Dr. Marco Block-Berlitz 28

Page 29: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Mehrspielervarianten - paranoid

Im Gegensatz zu maxN können sich die Spieler aber auch pessimistisch verhalten und Annahme treffen, dass sich alle Gegenspieler zu einer Allianz gegen sich selbst haben. Die Annahme ist, dass sich die Gegner verbünden und vorhaben den stets zu minimieren:

Sommersemester 2009 Dr. Marco Block

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

können sich die Spieler aber auch pessimistisch verhalten und die treffen, dass sich alle Gegenspieler zu einer Allianz gegen sich selbst geschlossen

. Die Annahme ist, dass sich die Gegner verbünden und vorhaben den eigenen Nutzen

Selber Suchbaum wie vorhin. Eingetragen ist nur der Nutzenwert vom suchenden Spieler A

Dr. Marco Block-Berlitz 29

Page 30: Sommersemester 2009 Dr. Marco Block -Berlitz 1 · - von Spielbäumen und anderen Wäldern Vom Amateur zum Großmeister Sommersemester 2009 Dr. Marco Block ProInformatik - Funktionale

Literatur- und Abbildungsquellen

Block M., Bader M., Tapia E., Ramírez M., Gunnarsson K., Cuevas E., Zaldivar D., Rojas R.:

"Using Reinforcement Learning in Chess Engines

Research in Computing Science: Special Issue in Electronics and Biomedical Engineering,

Computer Science and Informatics, ISSN:1870-4069, Vol.35, pp.31

2008

Millington I.: „Artificial Intelligence for Games“, Morgan Kaufmann, Elsevier, 2006

Baur M.: „Lazy Evaluation“, Dezember 2008

http://www.mathematik.uni-ulm.de/~m_baur/pdf/lazy/lazy.pdf

[1]

[2]

[3]

Sommersemester 2009 Dr. Marco Block

http://www.mathematik.uni-ulm.de/~m_baur/pdf/lazy/lazy.pdf

Vielen Dank für die

Aufmerksamkeit ...

ProInformatik – Funktionale Programmierung

Freie Universität Berlin

E., Ramírez M., Gunnarsson K., Cuevas E., Zaldivar D., Rojas R.:

Using Reinforcement Learning in Chess Engines", CONCIBE SCIENCE 2008, In Journal

Research in Computing Science: Special Issue in Electronics and Biomedical Engineering,

4069, Vol.35, pp.31-40, Guadalajara/Mexico,

“, Morgan Kaufmann, Elsevier, 2006

ulm.de/~m_baur/pdf/lazy/lazy.pdf

Dr. Marco Block-Berlitz 30

ulm.de/~m_baur/pdf/lazy/lazy.pdf