Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Victor Kaiser Geändert vor über 6 Jahren
1
Raphael Fischer fischrap@student.ethz.ch 04.05.2014
Informatik II - Übung 9 Raphael Fischer
2
Spielbäume Jeder Ast: Ein möglicher Spielverlauf
Max will möglichst hohen Wert Min will möglichst tiefen Wert Raphael Fischer
3
Strategie σ Ein Spieler versetzt sich in jeden mögl. Spielzustand und überlegt was er machen würde Raphael Fischer
4
Optimale Strategie σ* Wähle Strategie so, dass das beste für einen rausschaut, falls der Gegner extrem gut ist (worst-case Optimierung) Raphael Fischer
5
Optimale Strategie σ* 5 5 -6 5 3 8
Wahl der Strategie auf der untersten Ebene einfach Weise Knoten voraussichtlicher Spielausgang zu Nächste Ebene kommt dran: Min wählt Strategie usw. Raphael Fischer
6
Optimale Strategien σ* und σ’* Nash-Gleichgewicht
Wenn keiner einen Fehler macht, ist das Resultat schon vorbestimmt Nash-Gleichgewicht: 𝐴 𝜎 ∗ , 𝜎 ′ ∗ ≥𝐴 𝜎, 𝜎 ′ ∗ Raphael Fischer
7
Minimax-Algorithmus Diese Beschriftung der Knoten:
Max-Spieler wählt das Maximum der Kind-Knoten Min-Spieler wählt das Minimum der Kind-Knoten Variante von vorher: Bottom-up Rekursiv wäre: Depth-first Raphael Fischer
8
U9.A2a): Reversi Minimax-Spieler Programmieren
Wenn bei gewisser Tiefe angelangt, schneide Baum ab Es werden alles Blätter Bewertungsfunktion = Differenz der Steine Raphael Fischer
9
Beispiel: Tic-Tac-Toe Spieler
Hier ohne Tiefenbeschränkung Raphael Fischer
10
U9.A2a): Reversi Tipp: Überlegt euch:
Was, wenn gar kein möglicher Zug? Was, wenn der Gegner (=Max in Min-Funktion und umgekehrt) auch keinen mehr hat? Raphael Fischer
11
U9.A2b): Reversi: Zeitmanagement
Zeitlimite pro Zug in ms wird in void initialize(int myColor, long timeLimit) mitgeteilt Zieht von diesem timeLimit ca. 10ms als Reserve ab System.currentTimeMillis() Prüfe in min und max Funktion, ob Limite überschritten. Wenn ja: Exception Berechne zuerst Zug mit Tiefe 1, dann mit Tiefe 2 etc. bis es Time-Exception gibt. Der letzte Versuch ohne Exception zählt Raphael Fischer
12
U9.A2c) Heuristiken (optional)
Finde bessere Heuristik Internet-Recherche Eigentlich wichtigster Teil für guten Reversi-Spieler Raphael Fischer
13
Othelligence Event Program: Time: Friday, 19.05.2017, 16:00
Game strategies and game theory Duell Human (German Champion) vs. Machine Panel Apéro 😋 Time: Friday, , 16:00 Location: CABinett (CAB F21) More info: Interesting for the students to get insights for their reversi tournament players.
14
Alpha-Beta-Algorithmus
Raphael Fischer
15
Alpha-Beta-Algorithmus
Alpha: Ich habe schon einen Wert mit α. Mich interessieren nur noch grössere Werte Beta: Ich habe schon einen Wert mit β. Mich interessieren nur noch kleinere Werte Liefere Wert 𝑥 ∈[𝛼, 𝛽] Achtung: Knotenwerte können anders als bei Minimax sein! (falls β kleiner als alle maxValues Raphael Fischer
16
Aufgabe 1: Alpha Beta Alpha: Ich habe schon einen Wert mit α. Mich interessieren nur noch grössere Werte Beta: Ich habe schon einen Wert mit β. Mich interessieren nur noch kleinere Werte Liefere Wert 𝑥 ∈[𝛼, 𝛽] Achtung: Knotenwerte können anders als bei Minimax sein! (falls β kleiner als alle maxValues Raphael Fischer
17
Lösung Raphael Fischer
18
U9.A1: Theorieaufgabe Strategien Minimax Alpha-Beta Raphael Fischer
19
U8.A2 Rucksackproblem mit Backtracking
Lösung Problembeschreibung: k Gegenstände x1, ..., xk; Jeweils bekannter Wert und Gewicht Auswahl von Gegenständen, so dass Gesamtgewicht nicht überschritten wird Optimierungsproblem: Maximieren des Wertes der ausgewählten Gegenstände Raphael Fischer
20
Lösung zu letztem Mal: Knapsack mit Bruteforce
public Selection findBest(ArrayList<Integer> values, ArrayList<Integer> weights, int maxWeight) { if (values.size() != weights.size()) throw new IllegalArgumentException("size problem"); final int max = (int) Math.pow(2, values.size()); Selection bestSelection = null; int maxValue = -1; for (int i=0; i<max; i++) { Selection selection = new Selection(values.size(), i); if (selection.sum(weights) <= maxWeight) { int value = selection.sum(values); if (value >= maxValue) { bestSelection = selection; maxValue = value; } } } return bestSelection; } Alle 2n Möglichkeiten Probiere aktuelle Möglichkeit aus (-> Bitdarstellung der Selection!) Zu schwer? Raphael Fischer
21
U8.A2 c) Backtracking Iteration Gewicht 12 kg 1 kg 4 kg 2 kg Wert $4 $2 $10 $1 Genommen? Nein Ja Todo Funktion, die einen Schritt näher zur Lösung gehen soll: Iteriere durch alle Möglichkeiten für diesen Schritt: 1. Prüfe, ob die Möglichkeit möglich ist Falls ja: Lösung kopieren Schritt in Kopie reinschreiben Rekursion mit Kopie Hier nur zwei Möglichkeiten: Nehme es nehme es nicht Lösung = Selection Schritt in Lösung reinschreiben Rekursion Schritt rückgängig machen o d e r Raphael Fischer
22
Lösung zu letztem Mal: Backtracking
public Selection findBest(ArrayList<Integer> values, ArrayList<Integer> weights, int maxWeight) { if (values.size() != weights.size()) throw new IllegalArgumentException("size problem"); Selection result = find(new Selection(0), 0, values, weights, maxWeight); return result; } Raphael Fischer
23
Lösung zu letztem Mal: Backtracking
Rückgabe: Komplette Selection Lösung zu letztem Mal: Backtracking private Selection find(Selection selection, int weight, ArrayList<Integer> values, ArrayList<Integer> w eights, int maxWeight) { final int depth = selection.size(); if (depth == values.size()) { return selection; } Selection without = new Selection(depth + 1, selection.bits()); without.set(depth, false); Selection resultWithout = find(without, weight, values, weights,maxWeight); if (weight + weights.get(depth) <= maxWeight) { Selection with = new Selection(depth + 1, selection.bits()); with.set(depth, true); Selection resultWith = find(with, weight + weights.get(depth), values, weights, maxWeight); if (resultWith.sum(values) > resultWithout.sum(values)) { return resultWith; } return resultWithout; } Neue Parameter. Selection ist nur der bisherige Teil Wie weit schon? Wenn fertig, breche ab Probiere, das nächste Element nicht zu nehmen Wenn überhaupt möglich, nächstes Element noch zu nehmen, Probiere, das nächste Element zu nehmen Schaue, welches besser ist Raphael Fischer
24
…viel Spass! Raphael Fischer
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.