Informatik II Übung 8

Ähnliche Dokumente
Informatik II Übung 7. Gruppe 2 Carina Fuss

Informatik II Übung 8 Gruppe 3

Informatik II Übung 8 Gruppe 4

Informatik II - Tutorium 8

Informatik II Übung 9 Gruppe 3

Informatik II Übung 7 Gruppe 3

Informatik II (D-ITET)

Informatik II - Übung 07

Informatik II - Übung 08

Informatik II Übung 8. Pascal Schärli

Informatik II Übung 7. Pascal Schärli

Informatik II Übung 7 Gruppe 7

Informatik II Übung 09

Informatik II - Übung 08

Informatik II Übung 6

Informatik II Übung 9

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Informatik II Übung 9

Übungsserie Nr. 6. Ausgabe: 1. April 2015 Abgabe: 15. April Hinweise

Informatik II Übung 9. Pascal Schärli

Informatik II Übung 09. Benjamin Hepp 3 May 2017

Informatik II (D-ITET) Übungsstunde 7,

Informatik II - Tutorium 9

Informatik II - Übung 07. Christian Beckel

Algorithmen und Datenstrukturen 12

18. Natürliche Suchbäume

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

Informatik II Übung 5

13. Binäre Suchbäume

Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden

9. Natürliche Suchbäume

Informatik II Übung 2

Informatik II Übung 7

Algorithmen und Datenstrukturen

Kapitel 12: Induktive

Informatik II (D-ITET) Übungsstunde 8,

Informatik II Übung 3

Informatik II Übung 08

Informatik II - Tutorium 7

Anwendungsbeispiel MinHeap

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

public interface Stack<E> { public void push(e e); public E pop();

Übung Algorithmen und Datenstrukturen

Trees. November 14, Algorithms & Datastructures 2 Exercises WT 2017

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Trees. November 13, Algorithms & Datastructures 2 Exercises WT 2017

2.4 Durchlaufen von Bäumen

Software Entwicklung 1

Übung 4: Die generische Klasse AvlBaum in Java 1

ContainerDatenstrukturen. Große Übung 4

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Informatik II, SS 2014

Probeklausur zur Vorlesung

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer 144

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden

Datenstrukturen und Algorithmen SS07

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

Was ist ein assoziativer Speicher?

Informatik II Prüfungsvorbereitungskurs

Motivation Binäre Suchbäume

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Einführung. B6.2 Symboltabellen. B6.3 Einfache Implementationen

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

18. Natürliche Suchbäume

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:

Informatik II Übung 12

Informatik II. Übungsstunde 6. Distributed Systems Group, ETH Zürich

Algorithmen und Datenstrukturen

Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen

Bäume. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08

Kapiteltests zum Leitprogramm Binäre Suchbäume

Prüfung Algorithmen und Datenstrukturen I

Allgemeine Hinweise:

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

Informatik II, SS 2014

1 Einleitung Generizität Syntax... 2

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

Algorithmen und Datenstrukturen 1

Informatik II Übung 2

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.

Programmieren in Java

Vorlesung Datenstrukturen

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

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java

Transkript:

Informatik II Übung 8 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 25.4.2018 Carina Fuss 25.4.2018 1

Übung 8 Nachbesprechung Übung 7 Vorbesprechung Übung 8 binäre Suche Backtracking anhand vom Rucksackproblem Reversi Teil 2 Carina Fuss 25.4.2018 2

Nachbesprechung Übung 7 Carina Fuss 25.4.2018 3

Übung 7 Aufgabe 1 filterraw ohne Generics durch äussere Liste iterieren durch jede innere Liste iterieren bei jedem Studenten testen, ob er genügend Punkte hat (Methode filter) Type Casts nötig, da die Liste nicht generisch ist Compiler-Warnung Carina Fuss 25.4.2018 4

Übung 7 Aufgabe 1 filtergeneric mit Generics generische Array-Liste: Typ der Objekte in der Liste wird vorher angegeben (hier Student), dafür sind später keine Type Casts mehr nötig Carina Fuss 25.4.2018 5

Übung 7 Aufgabe 2 Spielbäume MAX MIN MAX MIN Carina Fuss 25.4.2018 6

Übung 8 Aufgabe 3 binäre Suchbäume Elemente entfernen: «Ersetzen durch kleinstes Element des rechten Teilbaums» 15 20 12 32 9 15 47 28 13 17 29 Carina Fuss 25.4.2018 7

Übung 8 Aufgabe 3 binäre Suchbäume Elemente entfernen: «Ersetzen durch kleinstes Element des rechten Teilbaums» 15 12 20 12 32 9 17 47 28 13 29 Carina Fuss 25.4.2018 8

Übung 8 Aufgabe 3 binäre Suchbäume Elemente entfernen: «Ersetzen durch kleinstes Element des rechten Teilbaums» 15 12 20 20 13 32 9 17 47 28 29 Carina Fuss 25.4.2018 9

Übung 8 Aufgabe 3 binäre Suchbäume Elemente entfernen: «Ersetzen durch kleinstes Element des rechten Teilbaums» 15 12 20 28 13 32 9 17 47 29 Carina Fuss 25.4.2018 10

Übung 8 Aufgabe 3 binäre Suchbäume Elemente entfernen: «Ersetzen durch kleinstes Element des rechten Teilbaums» 15 12 20 28 13 32 9 17 47 29 Carina Fuss 25.4.2018 11

Übung 8 Aufgabe 3 binäre Suchbäume Implementierung binärer Suchbaum: thing: Objekt key: Schlüsselattribut des Objekts left, right: linker und rechter Unterbaum Carina Fuss 25.4.2018 12

Übung 8 Aufgabe 3 binäre Suchbäume Höhe: längster Pfad von der Wurzel bis zu einem Blatt bestimme Höhe vom linken und vom rechten Unterbaum und übernimm die grössere 1 dazuzählen für die Wurzel

Übung 8 Aufgabe 3 binäre Suchbäume Blatt: hat keine Unterbäume (weder linken noch rechten) ein Kind: hat entweder rechten oder linken Unterbaum (aber nicht beide!) XOR: ^

Übung 8 Aufgabe 3 binäre Suchbäume PreOrder ausgeben in der Reihenfolge: Wurzel, linker Unterbaum, rechter Unterbaum Carina Fuss 25.4.2018 15

Übung 8 Aufgabe 3 binäre Suchbäume InOrder ausgeben in der Reihenfolge: linker Unterbaum, Wurzel, rechter Unterbaum Ausgabe ist sortiert! Carina Fuss 25.4.2018 16

Übung 8 Aufgabe 3 binäre Suchbäume PostOrder ausgeben in der Reihenfolge: linker Unterbaum, rechter Unterbaum, Wurzel Carina Fuss 25.4.2018 17

Übung 8 Aufgabe 3 binäre Suchbäume Wenn man am Ende eine Pfades angekommen ist, das Element aber noch nicht gefunden hat, ist es nicht im Baum. Elemente werden anhand ihres keys unterschieden. key gefunden: gib Element zurück gesuchter key kleiner als momentaner key: suche links weiter gesuchter key grösser als momentaner key: suche rechts weiter Carina Fuss 25.4.2018 18

Übung 8 Aufgabe 3 binäre Suchbäume am Ende eines Pfades angekommen: füge Element an gleichen key gefunden: überschreibe das Element gesuchter key grösser als momentaner key: füge Element in den rechten Unterbaum ein gesuchter key kleiner als momentaner key: füge Element in den linken Unterbaum ein Carina Fuss 25.4.2018 19

Übung 8 Aufgabe 3 binäre Suchbäume remove Hilfsfunktion getsmallest: findet kleinstes Element im gegebenen Baum, entfernt es und gibt das kleinste Element zurück kleinstes Element ist am weitesten links im Baum: durchläuft jeden linken Teilbaum; sobald links null kommt, sind wir beim kleinsten Element kleinstes Element wird durch seinen rechten Unterbaum ersetzt Carina Fuss 25.4.2018 20

Übung 8 Aufgabe 3 binäre Suchbäume remove Ersetzen, wenn man den richtigen key gefunden hat: Blatt: einfach entfernen Wenn der linke Unterbaum des rechten Unterbaums null ist: Einfach den linken Unterbaum an diesen leeren Platz verschieben und den rechten Unterbaum zurückgeben (Wurzel ist jetzt weg). nur ein Unterbaum: durch diesen Unterbaum ersetzen Sonst: kleinstes Element aus rechtem Unterbaum mit Hilfsfunktion entfernen und Wurzel durch smallest ersetzen. Carina Fuss 25.4.2018 21

Übung 8 Aufgabe 3 binäre Suchbäume remove Baum zurückgeben wenn Element nicht gefunden wurde gesuchter key kleiner als momentaner key: links weitersuchen gesuchter key grösser als momentaner key: rechts weitersuchen Carina Fuss 25.4.2018 22

Bitweise Operatoren in Java Operator Beispiel Beschreibung ~ ~a Einerkomplement: alle Bits werden invertiert & a & b Bitweises Und a b Bitweises Oder ^ a ^ b Bitweises Exklusiv-Oder/XOR << a << b Linksschieben: a wird um b Bits nach links verschoben (b mal verdoppelt) >> a >> b Rechtsschieben: a wird um b Bits nach rechts verschoben (b mal halbiert) >>> a >>> b Rechtsschieben ohne Vorzeichen: wie Rechtsschieben, aber höchstwertiges Bit wird danach auf 0 gesetzt Carina Fuss 25.4.2018 23

Übung 7 Aufgabe 4 Reversi RandomPlayer Carina Fuss 25.4.2018 24

Vorbesprechung Übung 8 Carina Fuss 25.4.2018 25

binäre Suche 25<30 ähnlich wie Suche im binären Suchbaum: Vergleiche mit Wurzel: kleiner: gehe weiter im linken Unterbaum grösser: gehe weiter im rechten Unterbaum 25>20 gesucht: 25 Carina Fuss 25.4.2018 26

binäre Suche bei sortiertem Array: beginne in der Mitte vergleich mit mittlerem Element: kleiner: weiter mit dem mittleren Element der linken Hälfte grösser: weiter mit dem mittleren Element der rechten Hälfte Suche 25 andere Möglichkeiten: nach einem Drittel/zwei Dritteln/einem Viertel etc. des Arrays anfangen 10 20 25 30 40 45 50 25>20 25<30 Carina Fuss 25.4.2018 27

binäre Suche Entscheidungsbaum: Elemente, denen man auf seiner Suche «begegnet» ist 20 30 10 20 25 30 40 45 50 25>20 25<30 25 Carina Fuss 25.4.2018 28

Übung 8 Aufgabe 1 binäre Suche 1. 3. binäre Suche von Hand durchführen 4. 5. Implementierung des Interfaces IBinarySearch: Elemente des Arrays haben wieder key und value, gespeichert zusammen als Objekt vom Typ Unit: public class Unit<Key extends Comparable<Key>, Value> generisch: Unit besteht aus zwei Objekten, die hier von den Typen key und value sind key erweitert Comparable: man kan keys mit compareto vergleichen: a.compareto(b) > 0 a > b a.compareto(b) < 0 a < b a.compareto(b) = 0 a = b Carina Fuss 25.4.2018 29

Übung 8 Aufgabe 1 binäre Suche public interface IBinarySearch<Key extends Comparable<Key>, Value> zu implementierende Methode: public Value find(list<unit<key, Value>> haystack, Key needle); Man bekommt eine Liste von Units und muss den richtigen key finden (die Nadel im Heuhaufen ;) zusätzlich IMeasure implementieren: festlegen, nach welchem Bruchteil des Arrays man mit der Suche anfängt rekursive Aufrufe zählen in der main-methode einige Tests damit durchführen Carina Fuss 25.4.2018 30

Backtracking systematisches Durchlaufen eines grossen Zustandsraumes, um eine Lösung zu einem Problem zu finden «trial and error» ähnlich einem Entscheidungsbaum, der systematisch durchlaufen wird Beispiel Labyrinth: eine Richtung auswählen in diese Richtung weitergehen wenn sich der gewählte Weg als Sackgasse herausstellt: zurückgehen und andere Richtung wählen Carina Fuss 25.4.2018 31

Backtracking n-damen-problem Carina Fuss 25.4.2018 32

Übung 8 Aufgabe 2 Rucksackproblem x2 g2, w2 x3 g3, w3 x1 g1, w1 x4 g4, w4 x5 g5, w5 Carina Fuss 25.4.2018 33

Übung 8 Aufgabe 2 Rucksackproblem K Gegenstände x_1 bis x_k, Gesamtgewicht G darf nicht überschritten werden Gegenstände haben Wert w_i >= 0 und Gewicht g_i >= 0 Man sucht also eine Auswahl (Selektion) von beliebig vielen Gegenständen, deren Gesamtwert möglichst hoch und deren Gesamtgewicht kleiner als G ist. Selektion: b_1 bis b_k, wobei b_i jeweils 0 oder 1 0: Gegenstand i nicht ausgewählt 1: Gegenstand i ausgewählt Carina Fuss 25.4.2018 34

Übung 8 Aufgabe 2 Rucksackproblem Beispiele für Selektionen bei 4 Gegenständen: Frage: Gibt es immer genau eine optimale Lösung? Carina Fuss 25.4.2018 35

Übung 8 Aufgabe 2 Rucksackproblem Implementierung: Klasse Selection size: Grösse der Selection (Anzahl Gegenstände) bits: die Selection als Integer Funktionen: set: Ziffer an bestimmter Stelle auf 0 oder 1 setzen (bestimmten Gegenstand dalassen/mitnehmen) get: bestimmen, ob der Wert an einer bestimmten Stelle auf 1 gesetzt ist (Gegestand mitgenommen) sum: bei einer Liste mit den Gewichten/Werten aller Gegenstände werden diejenigen der ausgewählten Gegenstände zusammengezählt Carina Fuss 25.4.2018 36

Übung 8 Aufgabe 2 Rucksackproblem Implementierung der Schnittstelle IRucksack Ansatz 1: Brute Force alle Möglichkeiten durchprobieren und die beste davon zurückgeben Selection mit allen ausgewählten Gegenständen zurückgeben Methoden aus der Klasse Selection verwenden! Dokumentation durchlesen! Fabrikmethode zum Testen anpassen Carina Fuss 25.4.2018 37

Übung 8 Aufgabe 2 Rucksackproblem Implementierung der Schnittstelle IRucksack Ansatz 2: Backtracking neue rekursive Methode, der man zusätzlich noch die momentane Selection und deren Gewicht übergeben kann zwei Möglichkeiten: bestimmten Gegenstand nicht mitnehmen oder mitnehmen, Ergebnisse vergleichen Abbruchbedingung: Grösse der Selection ist gleich gross wie die Anzahl Gegenstände es wurde alles berücksichtigt Carina Fuss 25.4.2018 38

Übung 8 Aufgabe 2 Rucksackproblem Implementierung der Schnittstelle IRucksack Ansatz 2: Backtracking zwei Möglichkeiten: Gegenstand nicht mitnehmen Selection without = new Selection(...); Selection um eins vergrössern, bit auf 0 setzen und weiter nach unten im Baum prüfen, ob mit dem Gegenstand das Gesamtgewicht noch passt, falls ja den Gegenstand mitnehmen Selection with = new Selection(...); Selection um eins vergrössern, bit auf 1 setzen und weiter nach unten im Baum rekursive Aufrufe: immer mehr Gegenstände kommen dazu Carina Fuss 25.4.2018 39

Übung 8 Aufgabe 2 Rucksackproblem Vergleich der Implementierungen: Welche ist schneller? Wieso? Findet der Backtracking-Algorithmus immer eine optimale Lösung? Carina Fuss 25.4.2018 40

Reversi Teil 2 checkmove Methode checkmove selber implementieren: Implementierung des Interfaces ICheckMove gültiger Zug: senkrecht, waagrecht oder diagonal anliegend an schon gesetzte Steine zwischen dem neu gesetzten Stein und einem eigenen Stein müssen Steine des Gegners liegen in alle Richtungen überprüfen, ob das der Fall ist, wenn nicht ist das Feld kein gültiger Zug Dokumentation anschauen, nur checkmove und ismoveavailable aus der Klasse Gameboard dürfen nicht verwendet werden Carina Fuss 25.4.2018 41

Reversi Teil 2 GreedyPlayer wählt den Zug, bei dem er selbst danach am meisten Steine hat für alle möglichen Züge: GameBoard duplizieren (gb.clone) auf dupliziertem Gameboard den Zug ausführen auf dupliziertem Gameboard die Anzahl eigener Steine nach dem Zug zählen Zug mit grösster Anzahl Steine wählen Achtung: vor makemove muss immer nochmal checkmove ausgeführt werden! Carina Fuss 25.4.2018 42