Informatik I/II PVK

Werbung
Informatik I/II PVK
Donnerstag
Informatik II, 2. Teil
Ablauf heute

Binärsuche

Backtracking

Spieltheorie, Spielbäume

Minimax-Algorithmus

α-β-Algorithmus

Mergesort

Heap-Sort
Informatik I/II PVK
2
Binärsuche


Wir suchen ein Element in einem sortierten Array
Dabei vergleichen wir jeweils die Mitte des Arrays mit
dem gesuchten Wert und können so in jedem Schritt
den Suchraum halbieren
links
if (value < mitte)
links
rechts
mitte
neue mitte
if (value > mitte)
neues rechts neues links
…
…
Informatik I/II PVK
neue mitte
rechts
3
Optimierte Binärsuche

Die Binärsuche lässt sich optimieren indem wir die
„Mitte“ vom gesuchten Wert abhängig machen


Wir nehmen an, dass die Werte ungefähr gleichmässig
verteilt sind
Wir verwenden den Ansatz

A[rechts ]− A[links ]
Wert
=
mitte − links
rechts − links
Ist der gesuchte Wert eher gross oder klein, verglichen
mit dem Wert ganz links und dem Wert ganz rechts?
Informatik I/II PVK
4
Backtracking

Wir suchen eine Lösung zu einem Problem in einem
grossen, endlichen Lösungsraum

Das Prinzip ist trial and error




Besser als Brute Force
Den Lösungsraum stellen wir mit einem Baum dar (jeder
Schritt ist ein Knoten)
Sind wir in einem Blatt angekommen, aber haben die
richtige Lösung noch nicht, gehen wir wieder hoch und
probieren etwas anderes
Anwendungsgebiete

Wegfindung in Labyrinths

Rätsel (Sudoku ...)
Informatik I/II PVK
5
Backtracking


Der Zustandsbaum wird „depth first“
durchlaufen
Wenn möglich frühzeitig abbrechen

Verwende Nebenbedingungen für Tree-Pruning

Verwende problembezogene Heuristiken
Informatik I/II PVK
6
Backtracking an der Prüfung


Meistens ist das durchführen aller Möglichkeiten kein
Problem
Die Schwierigkeit liegt beim Finden der
Nebenbedingungen, damit frühzeitig abgebrochen
werden kann.


Labyrinth: Nicht durch Wände gehen!
Rätsel: Nur gültige Variationen testen. Regeln in
Arrays oder so
Informatik I/II PVK
7
Das n-Damen Problem

Wenn wir eine Dame setzen so sind die Regeln, dass wir
in der selben Spalte, Zeile und Diagonalen keine weitere
setzen dürfen.



Es gilt also diese Züge irgendwie zu
blockieren.
Wir können 3 Arrays machen (für die
beiden Diagonalen und für die Zeile)
Bei der Suche nach einem gültigen
Zug setzen wir dann in jeder Spalte
eine Dame sofern möglich, ansonsten
kehren wir ohne Lösung zurück
Informatik I/II PVK
8
Spieltheorie


Eine Theorie aus der Soziologie
Untersuchung von rationalem Verhalten von
zwei oder mehr konkurrierenden Parteien

Gewinnmaximierung

Wirtschaftstheorie

Politik und Militär

Kooperationsuntersuchung (Tit-for-Tat)
Informatik I/II PVK
9
Endliche rein strategische 2-PersonenNullsummenspiel mit vollständiger Information

Viele traditionelle Brettspiele fallen in diese Kategorie


Der Gewinn des einen Spielers ist jeweils der Verlust
des anderen.



Kein Zufall, keine Wahrscheinlichkeiten
Eine (End-)Situation braucht eine payoff function
Die Strategien des Gegners sind den eigenen
Interessen entgegengesetzt
Niemand besitzt mehr Informationen wie der andere
(z.B.: keine verdeckten Karten) somit kann man sich in
die Rolle des Gegners rein versetzen
Informatik I/II PVK
10
Spielbäume

Zwei Spieler „Min“ und „Max“ ziehen abwechselnd



Für den Baum niveauweise Min- oder Max-Knoten
Blätter des Spielbaumes beschreiben Endsituation
Max will ein Blatt erreichen, welches einen möglichst
hohen Wert hat

Min wird jedoch abwechselnd den für Max
schlechtmöglichsten Spielzug machen!


Schadensbegrenzung!
Mit vollständiger Information lässt sich eine
Gewinnstrategie finden
Informatik I/II PVK
11
Spielbaum
Max
Min
Max
4
-1
8
-5
Informatik I/II PVK
1
-4
7
12
Optimaler Spieler

Spielen beide Spieler optimal, so ist für jeden Spielzug
bekannt was gespielt wird



Beide Spieler verfolgen ideale Strategie
Spiele werden so sehr langweilig und enden immer in
Unentschieden (falls möglich)
Zum Glück sind Spielbäume aber oft so gross, dass
eine gute Strategie nur geschätzt werden kann, weil
Informationen fehlen

Ausnahme: es sind nur noch wenige Züge zu spielen
Informatik I/II PVK
13
Aufgabe

Gegeben ist folgende Situation eines Tic-Tac-Toe Spieles




Als nächstes spielt X
Zeichne Spielbaum aller möglichen Züge und markiere welcher
Spieler gerade am Zug ist
Ein Sieg gibt nun 1 Punkt, ein Unentschieden 0 Punkte und
Verlieren gibt -1 Punkt. Überlege wie wir mit Hilfe des Baumes
eine optimale Strategie wählen können
Wie wird diese Partie wohl enden?
Informatik I/II PVK
14
Lösung des vorherigen Slide
-1
-1
1
1
Informatik I/II PVK
0
0
15
Minimax-Algorithmus
1
-5
4
4

-1
1
8
-5
8
-5
1
1
7
-4
7
Wir gehen hier davon aus, dass beide Spieler optimal
spielen
Informatik I/II PVK
16
Minimax-Algorithmus

Den Minimaxwert v(k) für einen Knoten k finden wir
wie folgt





Für Blätter: v(k) entspricht der payoff function
Für Knoten in Max-Niveau: wähle max(v(n)) mit n ein
direkter Nachfolger von k
Für Knoten in Min-Niveau: wähle min(v(n)) mit n ein direkter
Nachfolger von k
Per Rekursion also in die Tiefe gehen bis wir den Wert
aus den Blättern lesen können
Die Wurzel enthält also jeweils den Wert den Max von
dieser Spielsituation mindestens noch erreichen kann
Informatik I/II PVK
17
Auswertung von Spielbäumen



Da Spielbäume so gross sind werden sie nur bis zu einer
gewissen Tiefe ausgewertet und dann wird der Wert der
Blätter des Teilbaumes geschätzt
Die Wahl der Tiefe kann von verfügbaren Zeit oder
momentaner Spielsituation abhängen
Für eine gute Strategie wollen wir den Baum möglichst tief
durchsuchen, aber aussichtslose Spielzüge schnell
verwerfen

Der ausgewertete Spielbaum wird so „schlank“ gehalten
Informatik I/II PVK
18
α-β-Algorithmus



Wir wollen uns unnötige Rekursionsschritte ersparen und so
Unterbäume abschneiden, die uns keine besseren Lösungen
mehr bieten
Der α-β-Algorithmus verändert den Minimax-Wert nicht, somit
werden nur Knoten expandiert, die wir auch wirklich in
Erwägung ziehen würden
Man unterscheidet zwischen einem α- und β-Schnitt


Ein α-Schnitt wird gemacht, falls Max bereits eine bessere
Lösung kennt, als Min ihm in einem Baum ermöglicht und
somit den Weg nicht einschlagen würde
Ein β-Schnitt wird dann gemacht, wenn Min bereits eine für
Max schlechtere Lösung kennt und ein Unterbaum eine
bessere Lösung für Max liefern würde
Informatik I/II PVK
19
α-β-Schranken




α-β-Schranken sind die Werte, die wir bei der Rekursion
mitgeben.
Die α-Schranke repräsentiert einen bereits bekannten Gewinn
den Max garantiert gewinnen kann

Die α-Schranke wird von Max gesetzt

Max macht jeweils einen β-Schnitt
Die β-Schranke repräsentiert den Gewinn, den Min für Max
maximal zulassen würde

Die β-Schranke wird von Min gesetzt

Min macht jeweils einen α-Schnitt
Somit streichen wir einen Baum, sobald dessen Auswertung
ausserhalb von den α-β-Schranken liegen

oder
≥
Informatik I/II PVK
20
Effizienz des α-β-Algorithmus

Knoten sollten auf- bzw. absteigend sortiert
sein, damit möglichst viele Schnitte gemacht
werden können

Bester Fall mit α-β =
schlechstester Fall mit Minimax − Algorithmus
Informatik I/II PVK
21
Aufgabe

Werte folgenden Spielbaum mit Hilfe des α-β-Algorithmus
aus

Wo werden welche Schnitte gemacht und warum?

Schreibt die α-β-Schranken für jede Kante auf
Informatik I/II PVK
22
Lösung des vorherigen Slide
4
(4,∞)
(-∞,∞)
(4,∞)
4
(-∞,∞)
3
(-∞,4)
(4,∞)
2
7
(-∞,4)
(4,∞)
𝛂-Schnitt
𝛂-Schnitt
2
𝛃-Schnitt
(4,∞)
Informatik I/II PVK
(4,∞)
23
Mergesort

Zwei sortierte Listen sortierbarer Elemente lassen sich einfach
in eine Liste vereinen (mergen)
2, 5, 6, 7, 9, 12, 15
4, 8, 10, 13, 16, 17

Falls wir also eine unsortierte Liste haben, dann können wir
diese jeweils halbieren und die beiden Hälften dann mit
Mergesort halbieren



2, 4, 5 , 6, 7, 8 ...
Das lässt sich rekursiv machen → Wir halbieren so lange, bis wir
nur noch zwei Elemente in der Teilliste haben und das sortieren
trivial geworden ist
Mit Mergesort fügen wir dann alle Teillisten wieder zusammen
Aber wir können es auch ohne Rekursion machen
Informatik I/II PVK
24
Aufgabe

Mergesort von Hand

Wie viele Schritte benötigen wir für ein Array der Länge n?
Informatik I/II PVK
25
Lösung des vorherigen Slide
15 21
9
9
63
15
21
63
8
9
15
6
8
44 45
8
8 88
44
45
21 44
45
63
88
9
21
44
45
15
67 98
88
6
6
45
Informatik I/II PVK
62
63
45
45
67
6
45
62
67
98
62
62
88
67
98
98
26
Heap


Die Heap Datenstruktur ist ein Binärbaum, dessen
Niveaus alle voll ausgefüllt sind (bis auf das letzte)
Für jede Wurzel jedes Unterbaums gilt, dass die
Wurzel die kleinste Zahl des Baumes ist


Alle Pfade von Blatt zu Wurzel sind also monoton
fallend
Wir können einen Heap niveauweise in in ein Array
speichern, die Wurzel hat dann den Index 1

Direkte Nachfolger des i-ten Knoten haben dann
Indizes 2i und 2i+1
Informatik I/II PVK
27
Heap 2


Um einen neuen Wert in den Heap zu speichern, kommt er
an die letzte Stelle des untersten Niveaus und wandert
dann den Baum hoch, indem er sich mit seinem Vorgänger
austauscht, bis der Wert eines Vorgängers kleiner ist als
der Wert selbst.
Um das Minimum des Baumes zu kriegen, nimmt man
einfach die Wurzel des Heaps weg. Um den Baum
wiederherzustellen, nimmt man den untersten, letzten
Knoten und lässt ihn nach unten wandern, indem er sich
jeweils mit dem kleineren Nachfolger austauscht. Das
macht er so lange, bis die Werte beider Nachfolger grösser
sind als der Wert selbst.
Informatik I/II PVK
28
Heap-Sort

Um eine unsortierte Reihe der Länge n zu
sortieren wird




Ein Element nach dem andern dem Heap
hinzugefügt und dann
n mal get_min auf den Heap angewendet
Ist die Zahlenfolge in einem Array gegeben, so
benötigt diese Methode keinen zusätzlichen
Platz
Ausserdem ist dieser Algorithmus sehr effizient
(sehen wir morgen)
Informatik I/II PVK
29
Aufgabe
7 4
3
0
2
5


Sortiere dieses Array
mit Heap-Sort
Als Hilfe: Schreibe für
jeden Schritt den Heap
in Baumform
Informatik I/II PVK
30
Lösung
7 4
3
0
2
5
7
4
3
0
0
0
2
3
4
5
7
7
3
3
4
4
4
4
4
4
7
4
0
0
2
2
5
5
0
7
7
7
7
7
3
3
3
2
2
3
3
5
2
2
2
2
2
5
5
4
7
7
3
2
2
3
5
5
7
5
5
4
4
3
Informatik I/II PVK
5
5
0
0
0
0
0
0
31
Herunterladen