Donnerstag Informatik II, 2. Teil 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
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 mitte rechts if (value < mitte) if (value > mitte) links neue mitte neues rechts neues links neue mitte rechts … Informatik I/II PVK …
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? Informatik I/II PVK
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
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
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
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
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
Viele traditionelle Brettspiele fallen in diese Kategorie 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 Informatik I/II PVK
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
Spielbaum Max Min Max 4 -1 8 -5 1 -4 7 Informatik I/II PVK
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
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
Lösung des vorherigen Slide -1 -1 Informatik I/II PVK 1 1
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 Informatik I/II PVK
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
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
α-β-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
α-β-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
Effizienz des α-β-Algorithmus Knoten sollten auf- bzw. absteigend sortiert sein, damit möglichst viele Schnitte gemacht werden können Bester Fall mit α-β = Informatik I/II PVK
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
Lösung des vorherigen Slide 4 (4,∞) (-∞,∞) (4,∞) 4 3 2 (4,∞) (4,∞) 𝛂-Schnitt 𝛂-Schnitt (-∞,∞) (-∞,4) 7 2 (-∞,4) 𝛃-Schnitt (4,∞) (4,∞) Informatik I/II PVK
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 ... Informatik I/II PVK
Aufgabe Mergesort von Hand Wie viele Schritte benötigen wir für ein Array der Länge n? Informatik I/II PVK
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 Informatik I/II PVK
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
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
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
Aufgabe Sortiere dieses Array mit Heap-Sort Als Hilfe: Schreibe für jeden Schritt den Heap in Baumform 7 4 3 2 5 Informatik I/II PVK
Lösung 7 4 3 2 5 7 4 3 2 5 4 7 3 2 5 3 7 4 2 5 4 7 2 5 3 2 4 7 3 5 2 4 7 3 5 2 3 4 7 5 3 5 4 7 2 4 5 7 3 2 5 7 4 3 2 7 5 4 3 2 7 5 4 3 2 Informatik I/II PVK