Informatik II Übung 09. Benjamin Hepp 3 May 2017

Ähnliche Dokumente
Informatik II. PVK Part1 Severin Wischmann n.ethz.ch/~wiseveri

Grundlagen der Künstlichen Intelligenz

Zug Bart Borg Bart Borg Bart Borg Bart. Bart Borg verloren. Stand Zug Bart Borg Bart Borg Bart Borg

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Objektorientierte Programmierung

Codes und Informationsgehalt

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Objektorientierte Programmierung

KI und Sprachanalyse (KISA)

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Java-Schulung Grundlagen

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

WIE KANN ICH ACCESS XML FÄHIGKEITEN UNABHÄNGIG VON DER VERSION BEIBRINGEN?

Programmierkurs Java

Programmieren in Java

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

Klassendefinitionen verstehen

Dokumentation für das Spiel Pong

Kap. 4.2: Binäre Suchbäume

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

SEP 114. Design by Contract

Javakurs 2013 Objektorientierung

Jürgen Bayer. MDI-Anwendungen in C#

Java Kurs für Anfänger Einheit 5 Methoden

Datenbankanwendungsprogrammierung Crashkurs Java

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Anwendung der Aspektorientierung : Security

Übungsblatt 8- Lösungsvorschlag

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Formale Spezialisierungstechniken. am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Studentische Lösung zum Übungsblatt Nr. 7

Programmiertechnik II

Große Übung Praktische Informatik 1

Lösung zu Praktikum 1 -Programmierung eines Java Card Applets-

Reversi: Server und manueller Spieler

Suchen und Sortieren

Algorithmen und Datenstrukturen

6 Systematisches Testen von Programmen

Randomisierte Algorithmen

Programmieren von Webinformationssystemen

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Informatik II. /* c) Baumstruktur in einen String schreiben und zurueckgeben */ public String tostring() {

Überblick. Lineares Suchen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 8. Arrays. Arrays

12) Generische Datenstrukturen

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Suchen und Sortieren (Die klassischen Algorithmen)

Algorithmen & Datenstrukturen 1. Klausur

Objektrelationale, erweiterbare Datenbanken WS 04/05

Selbststudium OOP4 Auftrag

Das Briefträgerproblem

Programmieren I. Kapitel 7. Sortieren und Suchen

Einführung in Javadoc

12) Generische Datenstrukturen

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #6. SQL (Teil 4)

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Übung Programmierung WS 2007/08 - Blatt 5

Name: Klausur Programmierkonzepte SS 2011

Grundlagen der Programmierung

Proinformatik: Objektorientierte Programmierung - Tag 7 -

13. Binäre Suchbäume

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

EndTermTest PROGALGO WS1516 A

Grundlagen der Künstlichen Intelligenz

Binärbäume. Prof. Dr. E. Ehses,

Programmieren von Webinformationssystemen

2. Lernen von Entscheidungsbäumen

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

5. Spiele. offensichtlich eine Form von Intelligenz. Realisierung des Spielens als Suchproblem

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Breiten- und Tiefensuche in Graphen

Inf 12 Aufgaben

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

5.4 Klassen und Objekte

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

2 Java: Bäume. 2.1 Implementierung von Bäumen. 2.2 Implementierung eines binären Suchbaums. 2.3 Traversierung von Bäumen

1 Polymorphie (Vielgestaltigkeit)

Vier Gewinnt Nicolas Schmidt Matthias Dietsche Bernhard Weiß Benjamin Ruile Datum: Tutor: Prof. Schottenloher Spieltheorie

Auswahl von Klauseln und Atomen in Prolog

Restschmutzanalyse Residual Dirt Analysis

Modul 122 VBA Scribt.docx

Datum, Uhrzeit: , Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:...

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Allgemein: Klassen testbar machen. 5. Mocking. Mocks programmieren. Zusammenspiel von Klassen testen

Mul$media im Netz (Online Mul$media) Wintersemester 2014/15. Übung 02 (Nebenfach)

Proseminar: Geschichte des Computers Schachprogrammierung Die Digitale Revolution

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Transkript:

Informatik II Übung 09 Benjamin Hepp benjamin.hepp@inf.ethz.ch 3 May 2017

Nachbesprechung U8 3 May 2017 Informatik II - Übung 01 2

Nachbesprechung U8 1. Binaere Suche 2. Knapsack Problem 3. Reversi Teil 2 3 May 2017 Informatik II - Übung 02 3

Nachbesprechung U8.1 Binaere Suche Rekursive Methode private Value findrec(list<unit<key, Value>> haystack, Key needle, int begin, int end) { if (begin == end) { return null; } int middle = begin + (end - begin) / 2; Unit<Key, Value> middlevalue =); int match = needle.compareto(middlevalue.key); haystack.get(middle if (match == 0) { return middlevalue.value; } else if (match < 0) { return findrec(haystack, needle, begin, middle); } else { return findrec(haystack, needle, middle + 1, end); } } 27.04.2016 Informatik II - Übung 8 Von Gabor Soeres 4

Nachbesprechung U8.1 Binaere Suche Aufrufende Methode public Value find(list<unit<key, Value>> haystack, Key needle) { return findrec(haystack, needle, 0, haystack.size()); } 27.04.2016 Informatik II - Übung 8 Von Gabor Soeres 5

Nachbesprechung U8.2 Knapsack Brute-Force public Selection findbest(arraylist<integer> values, ArrayList<Integer> weights, int maxweight) { 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; } 27.04.2016 Informatik II - Übung 8 Von Gabor Soeres 6

Nachbesprechung U8.2 Knapsack Backtracking Rekursive Methode private Selection find(selection selection, int weight, ArrayList<Integer> values, ArrayList<Integer> weights, 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; } 27.04.2016 Informatik II - Übung 8 Von Gabor Soeres 7

Nachbesprechung U8.2 Knapsack Backtracking Aufrufende Methode public Selection findbest(arraylist<integer> values, ArrayList<Integer> weights, int maxweight) { Selection result = find(new Selection(0), 0, values, weights, maxweight); return result; } 27.04.2016 Informatik II - Übung 8 Von Gabor Soeres 8

Nachbesprechung U8.3 Reversi Teil 2 Bewertungsfunktion private int eval(gameboard gb) { return gb.countstones(mycolor) - gb.countstones(utils.other(mycolor)); } 27.04.2016 Informatik II - Übung 8 Von Gabor Soeres 9

Nachbesprechung U8.3 Reversi Teil 2 Greedy Player public Coordinates nextmove(gameboard gb) { Coordinates bestmove = null; int bestvalue = Integer.MIN_VALUE; for (int x = 1; x <= gb.getsize(); x++) { for (int y = 1; y <= gb.getsize(); y++) { Coordinates c = new Coordinates(x, y); if (gb.checkmove(mycolor, c)) { GameBoard hypotheticalboard = gb.clone(); hypotheticalboard.checkmove(mycolor, c); hypotheticalboard.makemove(mycolor, c); int value = eval(hypotheticalboard); if (value > bestvalue) { bestvalue = value; bestmove = c; } } } } return bestmove; } 27.04.2016 Informatik II - Übung 8 Von Gabor Soeres

Hinweise U9 1. Spieltheorie 2. Reversi Teil 3 3 May 2017 Informatik II - Übung 02 11

a) Hinweise U9.2 Reversi Teil 3 MinMax Spieler implementieren Suchtiefe konfigurierbar Beachten: Falls kein Zug existiert (passen) kann der naechste Spieler moeglicherweise weitere Zuege machen Bei einem rekursiven Aufruf ueberreicht ihr ein GameBoard Objekt in dem ihr den Zug gemacht habt. Unbedingt das GameBoard Objekt vor dem Zug kopieren. 3 May 2017 Informatik II - Übung 02 12

b) Hinweise U9.2 Reversi Teil 3 MinMax Spieler mit begrenzter Zeit τ. Solange Zeit ist, erhoeht die Suchtiefe und fuehrt MinMax aus. Speichert den Zug mit dem besten Ergebnis. Falls in einem MinMax Aufruf Restzeit < ms Exception werfen. Exception im umliegenden Code auffangen und den besten Zug zurueckgeben. c) Literatur nach besserer Bewertungsfunktion durchsuchen 3 May 2017 Informatik II - Übung 02 13

Hinweise U9.1 Spieltheorie Für jeden Endknoten oder maximale Suchtiefe existiert ein Spielwert (Heuristik falls nicht Endknoten) MinMax ermittelt bestes Ergebnis in der Annahme, dass der Gegner optimal spielt (Worst-case Szenario) 3 May 2017 Informatik II - Übung 02 14

Pseudo Code (Wikipedia) Hinweise U9.1 Spieltheorie - MinMax function minimax(node, depth, maximizingplayer) if depth = 0 or node is a terminal node return the heuristic value of node if maximizingplayer bestvalue := for each child of node v := minimax(child, depth 1, FALSE) bestvalue := max(bestvalue, v) return bestvalue else (* minimizing player *) bestvalue := + for each child of node v := minimax(child, depth 1, TRUE) bestvalue := min(bestvalue, v) return bestvalue 3 May 2017 Informatik II - Übung 02 15

Hinweise U9.1 Spieltheorie MinMax 3 May 2017 Informatik II - Übung 02 16

Hinweise U9.1 Spieltheorie MinMax 3 May 2017 Informatik II - Übung 02 17

Hinweise U9.1 Spieltheorie MinMax 20 3 May 2017 Informatik II - Übung 02 18

Hinweise U9.1 Spieltheorie MinMax 20 8 3 May 2017 Informatik II - Übung 02 19

Hinweise U9.1 Spieltheorie MinMax 20 8 35 3 May 2017 Informatik II - Übung 02 20

Hinweise U9.1 Spieltheorie MinMax 20 8 35 22 3 May 2017 Informatik II - Übung 02 21

Hinweise U9.1 Spieltheorie MinMax 20 8 35 22 3 May 2017 Informatik II - Übung 02 22

Hinweise U9.1 Spieltheorie MinMax 8 20 8 35 22 3 May 2017 Informatik II - Übung 02 23

Hinweise U9.1 Spieltheorie MinMax 8 20 8 35 22 3 May 2017 Informatik II - Übung 02 24

Hinweise U9.1 Spieltheorie Strategie 8 20 8 35 22 3 May 2017 Informatik II - Übung 02 25

Hinweise U9.1 Spieltheorie Alpha-Beta Alpha-Beta Algorithmus Versucht Unterbaeume zu ignorieren wenn sie kein besseres Ergebnis liefern koennen Online Beispiel durchgerechnet: http://vs.inf.ethz.ch/edu/i2/slides/info2-itet-alphabeta.pdf Online JAVA Applet: http://www.ocf.berkeley.edu/~yosenl/extras/alphabeta/alphabe ta.html 3 May 2017 Informatik II - Übung 02 26

Hinweise U9.1 Spieltheorie Alpha-Beta Zusaetzlich zu MinMax speichern wir zwei Schranken α für den maximierenden Spieler (initial - ) β für den Gegner (initial + ) Zug des maximierenden Spielers: α := max(α, möglicher Zug) Zug des Gegners: β := min(β, möglicher Zug) Wenn wir einen Knoten erreichen mit α β brauchen wir den Unterbaum nicht weiter beachten. Der maximierende Spieler kann bereits ein mindestens gleich gutes Ergebnis erzielen. 3 May 2017 Informatik II - Übung 02 27

Pseudo Code (Wikipedia) Hinweise U9.1 Spieltheorie - AlphaBeta function alphabeta(node, depth, α, β, maximizingplayer) if depth = 0 or node is a terminal node return the heuristic value of node if maximizingplayer v := - for each child of node v := max(v, alphabeta(child, depth 1, α, β, FALSE)) α := max(α, v) if β α break (* β cut-off *) return v else v := + for each child of node v := min(v, alphabeta(child, depth 1, α, β, TRUE)) β := min(β, v) if β α break (* α cut-off *) return v 3 May 2017 Informatik II - Übung 02 28

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) 3 May 2017 Informatik II - Übung 02 29

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, + ) 3 May 2017 Informatik II - Übung 02 30

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, + ) (, + ) 3 May 2017 Informatik II - Übung 02 31

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, + ) (5, + ) 3 May 2017 Informatik II - Übung 02 32

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, + ) 3 May 2017 Informatik II - Übung 02 33

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, ) 3 May 2017 Informatik II - Übung 02 34

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, ) (, ) 3 May 2017 Informatik II - Übung 02 35

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, ) (, ) 3 May 2017 Informatik II - Übung 02 36

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, ) (20,) 3 May 2017 Informatik II - Übung 02 37

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, ) (20,) beta 3 May 2017 Informatik II - Übung 02 38

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, ) 20 beta 3 May 2017 Informatik II - Übung 02 39

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) 20 beta 3 May 2017 Informatik II - Übung 02 40

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) 20 beta 3 May 2017 Informatik II - Übung 02 41

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, + ) 20 beta 3 May 2017 Informatik II - Übung 02 42

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, + ) 20 beta (, + ) 3 May 2017 Informatik II - Übung 02 43

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, + ) 20 beta (, + ) 3 May 2017 Informatik II - Übung 02 44

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, + ) 20 beta (, + ) 3 May 2017 Informatik II - Übung 02 45

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (, + ) 20 beta 8 3 May 2017 Informatik II - Übung 02 46

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (,8) 20 beta 8 3 May 2017 Informatik II - Übung 02 47

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) (,8) alpha 20 beta 8 3 May 2017 Informatik II - Übung 02 48

Hinweise U9.1 Spieltheorie Alpha-Beta (, + ) 8 alpha 20 8 beta 3 May 2017 Informatik II - Übung 02 49

Hinweise U9.1 Spieltheorie Alpha-Beta 8 alpha 20 8 beta 3 May 2017 Informatik II - Übung 02 50

Hinweise U9.1 Spieltheorie Vergleich MinMax Alpha-Beta 3 May 2017 Informatik II - Übung 02 51