Download - Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Transcript
Page 1: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK

DonnerstagInformatik II, 2. Teil

Page 2: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 2

Ablauf heute

Binärsuche Backtracking Spieltheorie, Spielbäume Minimax-Algorithmus α-β-Algorithmus Mergesort Heap-Sort

Page 3: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 3

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 neues rechts

mitte

if (value < mitte) if (value > mitte)

rechtslinks

neues links rechts

… …

neue mitte neue mitte

Page 4: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 4

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 Ist der gesuchte Wert eher gross oder klein, verglichen

mit dem Wert ganz links und dem Wert ganz rechts?

Wertmitte−links

=A[rechts ]−A[ links ]rechts−links

Page 5: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 5

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 ...)

Page 6: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 6

Backtracking

Der Zustandsbaum wird „depth first“ durchlaufen

Wenn möglich frühzeitig abbrechen Verwende Nebenbedingungen für Tree-Pruning Verwende problembezogene Heuristiken

Page 7: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 7

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

Page 8: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 8

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

Page 9: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 9

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)

Page 10: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 10

Endliche rein strategische 2-Personen-Nullsummenspiel mit vollständiger Information

Viele traditionelle Brettspiele fallen in diese Kategorie Kein Zufall, keine Wahrscheinlichkeiten

Der Gewinn des einen Spielers ist jeweils der Verlust des anderen.

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

Page 11: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 11

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

Page 12: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 12

Spielbaum

4 -1 8 -5 1 -4 7

Max

Max

Min

Page 13: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 13

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

Page 14: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 14

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?

Page 15: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 15

Lösung des vorherigen Slide

-1

1 1 0 0

-1

Page 16: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 16

Minimax-Algorithmus

1

-5 1

4 8 -5 1 7

4 -1 8 -5 1 -4 7

Wir gehen hier davon aus, dass beide Spieler optimal spielen

Page 17: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 17

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

Page 18: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 18

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

Page 19: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 19

α-β-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

Page 20: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 20

α-β-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 ≥

Page 21: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 21

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

Page 22: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 22

Aufgabe

Werte folgenden Spielbaum mit Hilfe des α-β-Algorithmus aus

Wo werden welche Schnitte gemacht und warum? Schreibt die α-β-Schranken für jede Kante auf

Page 23: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 23

Lösung des vorherigen Slide

(-∞,∞)

(-∞,∞)

4

(-∞,4)

(-∞,4) 𝛃-Schnitt

7

(4,∞)

(4,∞) 𝛂-Schnitt

(4,∞)

3

(4,∞)

(4,∞) (4,∞)

2

2

𝛂-Schnitt

4

Page 24: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 24

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

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

2, 4, 5, 6, 7, 8 ...

Page 25: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 25

Aufgabe

Mergesort von Hand

Wie viele Schritte benötigen wir für ein Array der Länge n?

Page 26: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 26

Lösung des vorherigen Slide

15 21 9 63 44 45 8 88 67 98 6 45 62

9 15 21 63 8 44 45 88 6 45 67 98 62

8 9 15 21 44 45 63 88 6 45 62 67 98

6 8 9 15 21 44 45 45 62 63 67 88 98

Page 27: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 27

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

Page 28: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 28

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.

Page 29: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 29

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)

Page 30: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 30

Aufgabe Sortiere dieses Array

mit Heap-Sort Als Hilfe: Schreibe für

jeden Schritt den Heap in Baumform

2 50347

Page 31: Informatik I/II PVK Donnerstag Informatik II, 2. Teil.

Informatik I/II PVK 31

Lösung

2 50347

2 50342 503

2 50

2 5

5

7

7

7

7

7

7

7

77

77

7

44

4

4

4

4

4

44

445

5

55

5

52

22

2

2

2

2

2

3

3

3

3

3

3

3

3

3

3

0

0

0

0

0

00

0

0

5