Informatik II Übung 9. Pascal Schärli

Größe: px
Ab Seite anzeigen:

Download "Informatik II Übung 9. Pascal Schärli"

Transkript

1 Informatik II Übung 9 pascscha@student.ethz.ch

2 Was gibts heute? Warm-Up Nachbesprechung Serie 8 Best-Of Vorlesung: Minimax Alpha Beta Vorbesprechung Serie 9 Info zur Auffahrt 2

3 Warm - Up

4 Warm-Up (Basisprüfung 2012) Ein XY-Baum sei ein spezieller rekursiv definierter Binärbaum: Der XY-Baum der Tiefe 0 ist der leere Baum. Der XY-Baum der Tiefe 1 ist ein Baum, der aus nur einem Knoten besteht Der XY-Baum der Tiefe n 2 besteht aus einem Wurzelknoten, dessen linker Nachfol-ger ein XY-Baum der Tiefe n 1 und dessen rechter Nachfolger ein XY-Baum der Tiefe n 2 ist. A Zeichnet einen XY-Baum der Tiefe 3. B F C 4

5 Warm-Up Baum: in Knoten out Der Baum H(I(J,K),(L,-)) Kann mit dem Syntaxdiagramm generiert werden Ist ein XY Baum ( Baum Der Baum M(N(O,P),Q(R,-),S(T,U(V,W))) Kann mit dem Syntaxdiagramm generiert werden Ist ein XY Baum, Baum ) Knoten: A in out B A Der Baum A(B(C(D,-),E),F(G,-)) Kann mit dem Syntaxdiagramm generiert werden Ist ein XY Baum... B C D F E G Z 5

6 Nachbesprechung

7 Nachbesprechung U8A1 Gegeben: [3, 7, 17, 25, 33, 47, 56, 62, 65, 66, 68, 70, 78, 89, 92] 7

8 Nachbesprechung U8A1 [3, 7, 17, 25, 33, 47, 56, 62, 65, 66, 68, 70, 78, 89, 92] - Aufteilung 1/3 2/3 8

9 Nachbesprechung U8A2 public class BinarySearch<Key extends Comparable<Key>, Value> implements IBinarySearch<Key, Value>, IMeasure { private int factor; private int numberofcalls; BinarySearch() { factor = 2; numberofcalls = 0; public void setfactor(int factor){ this.factor = factor; public int getnumberofcalls(){ return numberofcalls; 9

10 Nachbesprechung U8A2 public Value find(list<unit<key, Value>> haystack, Key needle) { numberofcalls = 0; return findrec(haystack, needle, 0, haystack.size()); private Value findrec(list<unit<key, Value>> haystack, Key needle, int begin, int end) { numberofcalls++; // IMeasure if (begin == end) { return null; int middle = begin + (end - begin) / factor; Unit<Key, Value> middlething = haystack.get(middle); int match = needle.compareto(middlething.key); if (match == 0) return middlething.value; else if (match < 0) return findrec(haystack, needle, begin, middle); else return findrec(haystack, needle, middle + 1, end); 10

11 Nachbesprechung U8A2 public class Measure { static final int[] keys = { 3, 7, 17, 25, 33, 47, 56, 62, 65, 66, 68, 70, 78, 89, 92 ; static ArrayList<Unit<Integer, Integer>> numbers; private static void createkeys() { numbers = new ArrayList<Unit<Integer, Integer>>(); for (int key : keys) { numbers.add(new Unit<Integer, Integer>(key, key)); 11

12 Nachbesprechung U8A2 private static void measure1(int factor){ BinarySearch<Integer, Integer> search = new BinarySearch<Integer, Integer>(); search.setfactor(factor); double result = 0; for (int key : keys) { search.find(numbers, key); result += search.getnumberofcalls(); result = result / keys.length; System.out.println(String.format("Messung Frage 1, Faktor: %d, mittlere Suchtiefe: %.2f",factor, result)); 12

13 Nachbesprechung U8A2 private static void measure2(int factor){ BinarySearch<Integer, Integer> search = new BinarySearch<Integer, Integer>(); search.setfactor(factor); double result = 0; for (int i = 0; i < 100; i++) { search.find(numbers, i); result += search.getnumberofcalls(); result = result / 100; System.out.println(String.format("Messung Frage 2, Faktor: %d, mittlere Suchtiefe: %.2f",factor, result)); 13

14 Nachbesprechung U8A2 private static void measure2(int factor){ BinarySearch<Integer, Integer> search = new BinarySearch<Integer, Integer>(); search.setfactor(factor); double result = 0; for (int i = 0; i < 10; i++) { search.find(numbers, i); result += search.getnumberofcalls(); result = result / 10; System.out.println(String.format("Messung Frage 3, Faktor: %d, mittlere Suchtiefe: %.2f",factor, result)); 14

15 Nachbesprechung U8A2 Messung Frage 1, Faktor: 2, mittlere Suchtiefe: 3.27 Messung Frage 1, Faktor: 3, mittlere Suchtiefe: 3.40 Messung Frage 2, Faktor: 2, mittlere Suchtiefe: 4.74 Messung Frage 2, Faktor: 3, mittlere Suchtiefe: 4.96 Messung Frage 3, Faktor: 2, mittlere Suchtiefe: 4.70 Messung Frage 3, Faktor: 3, mittlere Suchtiefe:

16 Nachbesprechung U8A3 Rucksackproblem - Gibt es immer genau eine optimale Lösung? Nein - Gegenbeispiel: Gewichte: 1, 2, 3 Werte: 1, 1, 2 maximales Gesamtgewicht: 3 erste Lösung: true, true, false zweite Lösung: false, false, true 16

17 Nachbesprechung U8A4 Brute Force public Selection findbest(arraylist<integer> values, ArrayList<Integer> weights, int maxweight) { if (values.size()!= weights.size()) throw new IllegalArgumentException("sizes of values and weights vectors are not equal"); final int max = 1 << values.size(); //max = 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; 17

18 Nachbesprechung U8A4 values = weights = kg 5kg 3kg 1kg 0000 maxweight = 8kg

19 Nachbesprechung U8A4 values = weights = kg 5kg 3kg 1kg 0000 maxweight = 8kg

20 Nachbesprechung U8A4 values = weights = Sobald wir wissen, dass ein Ast zu schwer ist, können wir ihn abschneiden! kg 5kg 3kg 1kg 0000 maxweight = 8kg

21 Nachbesprechung U8A4 public Selection findbest(arraylist<integer> values, ArrayList<Integer> weights, int maxweight) { if (values.size()!= weights.size()) throw new IllegalArgumentException("sizes of values and weights vectors are not equal"); Selection result = find(new Selection(0), 0, values, weights, maxweight); return result; 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()); //linker Ast without.set(depth, false); Selection resultwithout = find(without, weight, values, weights, maxweight); if (weight + weights.get(depth) <= maxweight) { //falls Ast zu schwer Abschneiden Selection with = new Selection(depth + 1, selection.bits());//rechter Ast 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; 21

22 Nachbesprechung U8A3 Test complex: Brute force: test took 127 milliseconds Backtracking: test took 13 milliseconds Backtracking ist viel schneller und findet trotzdem eine Optimale Lösung 22

23 Nachbesprechung U8A5 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; private int eval(gameboard gb) { return bestmove; return gb.countstones(mycolor) - gb.countstones(utils.other(mycolor)); 23

24 Vorlesung

25 Minimax MAX MIN MAX 7 MIN 25

26 Alpha/Beta Beispiel an der Tafel 26

27 Alpha/Beta α β Pruning: -, α Best Möglicher Zug für MAX 3 -, 7 7 Wurzel hat immernoch den Wert 7 7, 7, 7 β Best Möglicher -, Zug für MIN Falls α β CUT MAX 7 8 -, 7 8 8, 7 β MIN 5 7, 7, , 8 3 7, 7, 5 7, 5 α 5 MAX 7, 8 2 MIN 27

28 Alpha/Beta Beispiel an der Tafel 28

29 Alpha/Beta Super Seite fürs üben: Alpha-Beta Pruning Practice Computer Science Game Trees Beispiele als PDF 29

30 Vorbesprechung

31 U9A1 - Spieltheorie Tiefe? Minimax Bester Zug für Max Optimale Strategie für Max (Für jeden Max-Knoten den besten Zug bestimmen) α-β-methode 31

32 U9A2 Minimax Spieler: Konfigurierbare Suchtiefe Bewertungsfunktion wieder die Differenz der Spielsteine 32

33 U9A2 Zeitmanagement: Begrenzte Spielzeit (Am Turnier 5 sek) Minimax-Analyse ständig mit grösserer Suchtiefe wiederholen bis Zeit fertig ist mit System.currentTimeMillis schauen ob man noch Zeit hat, sonst Exception werfen. 33

34 U9A2 private BestMove max(int maxdepth, long timeout, GameBoard gb, int depth) throws Timeout { if (time is up)... //abort //TODO: Abbruchbedingung mit maxdepth und depth => here you use eval()! for (all possible moves) clone board; make move; temp_move = min(maxdepth, timeout, cloned_board, depth+1); save in best_move if best move so far; return best_move Min-Funktion ist analog, nimmt aber schlechtesten Move! Die best bzw. worst Variable kann mit Integer.MIN_VALUE bzw. Integer.MAX_VALUE initialisiert werden 34

35 U9A2 Bessere Bewertungsfunktion eval() Mobility Wie viel Zugmöglichkeiten habe ich bzw. der Gegner? Ecken Ecken sind strategisch sehr wertvoll Anzahl Steine Zumindest am Anfang vom Spiel ist es meistens besser, möglichst wenige Steine zu haben. Am Schluss vom Spiel ändert sich das dann offensichtlich Gute Gewichtung durch trial and error herausfinden Wenn ihr bei der Run-Configuration -f anfügt werden die langsamen Animationen nicht mehr gemacht ;) 35

36 Auffahrt Nächste Woche ist Auffahrt es findet keine Übungsstunde statt. Ich werde die Folien trotzdem machen (mit extra Erklärungen) Ihr könnt am Mittwoch von Uhr in eine andere Übungsstunde gehen (zb. im HG G 3 bei Vincent) Korrekturen ganz normal Nächste Lektion mit mir:

37 Viel Spass! 37

Informatik II Übung 09

Informatik II Übung 09 Informatik II Übung 09 Michael Baumann mbauman@student.ethz.ch n.ethz.ch/~mbauman 04.05.2015 Ablauf 1) Nachbesprechung Serie 8 2) Minimax & Alpha-Beta 3) Vorbesprechung Serie 9 2 Serie 8 3 Aufgabe 1 a,

Mehr

Informatik II Übung 09. Benjamin Hepp 3 May 2017

Informatik II Übung 09. Benjamin Hepp 3 May 2017 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

Mehr

Informatik II - Tutorium 9

Informatik II - Tutorium 9 Informatik II - Tutorium 9 Vincent Becker vincent.becker@inf.ethz.ch 02.05.2018 Vincent Becker 02.05.2018 1 Übungsblatt 8 Vincent Becker 02.05.2018 2 U8.A1 Binäre Suche Suche nach 47 mi = li + (re-li)/2;

Mehr

Informatik II Übung 9

Informatik II Übung 9 Informatik II Übung 9 Katja Wolff Katja.wolff@inf.ethz.ch 1 Othelligence Event Program: Game strategies and game theory Duell Human (German Champion) vs. Machine Panel Apéro Time: Friday, 19.05.2017, 16:00

Mehr

Informatik II Übung 8 Gruppe 4

Informatik II Übung 8 Gruppe 4 Informatik II Übung 8 Gruppe 4 (Folien teils von Christian B. und Christelle G.) Lukas Burkhalter lubu@inf.ethz.ch Informatik II Übung 8 Lukas Burkhalter 24. April 2018 1 https://xkcd.com/1270/ Nachbesprechung

Mehr

Informatik II Übung 08

Informatik II Übung 08 Informatik II Übung 08 Michael Baumann mbauman@student.ethz.ch n.ethz.ch/~mbauman 27.04.2016 Ablauf 1) Nachbesprechung Serie 7 2) Backtracking 3) Vorbesprechung Serie 8 2 Serie 7 3 Aufgabe 1 Wir Gegner

Mehr

Informatik II Übung 9 Gruppe 3

Informatik II Übung 9 Gruppe 3 Informatik II Übung 9 Gruppe 3 Julia Gygax jgygax@student.ethz.ch Julia Gygax 02.05.2018 1 Administratives Am 23. Mai beginnt die Übung erst um 13.15 Julia Gygax 02.05.2018 2 Warm up Spielbaum / Generics

Mehr

Informatik II Übung 11 Gruppe 4

Informatik II Übung 11 Gruppe 4 Informatik II Übung 11 Gruppe 4 (Folien teils von Christian B. und Christelle G.) Lukas Burkhalter lubu@inf.ethz.ch Informatik II Übung 11 Lukas Burkhalter 16. Mai 2018 1 Alpha-Beta klarer 4 oder 2, beides

Mehr

Informatik II - Übung 08

Informatik II - Übung 08 Informatik II - Übung 08 Katja Wolff katja.wolff@inf.ethz.ch Übungsblatt 7 Informatik II Übung 08 26.04.2017 2 U7.A1: IFilter public ArrayList filterraw( ArrayList groups ) { ArrayList result = new ArrayList();

Mehr

Informatik II - Übung 11

Informatik II - Übung 11 Informatik II - Übung 11 Christian Beckel beckel@inf.ethz.ch 15.05.2014 Blatt 10 1) Merge sort 2) Türme von Hanoi 3) Reversi: alpha-beta-suche Außerdem: Sortierverfahren und ihre Komplexität Christian

Mehr

Informatik II - Übung 11

Informatik II - Übung 11 Informatik II - Übung 11 Katja Wolff katja.wolff@inf.ethz.ch Blatt 10 1) Merge sort 2) Türme von Hanoi 3) Reversi: alpha-beta-suche Außerdem: Sortierverfahren und ihre Komplexität Informatik II Übung 11

Mehr

Informatik II (D-ITET) Übungsstunde 11,

Informatik II (D-ITET) Übungsstunde 11, Informatik II (D-ITET) Übungsstunde 11, 17.05.2017 Hossein Shafagh, shafagh@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Besprechung von Übung 10 Hinweise für Übung 11 (Sortieren, O-Notation)

Mehr

Informatik II (D-ITET) Übungsstunde 10,

Informatik II (D-ITET) Übungsstunde 10, Informatik II (D-ITET) Übungsstunde 10, 11.05.2017 Hossein Shafagh, shafagh@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Besprechung von Übung 9 Hinweise für Übung 10 (Mergesort, Türme von

Mehr

Informatik II Übung 8

Informatik II Übung 8 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

Mehr

Informatik II Übung 9

Informatik II Übung 9 Informatik II Übung 9 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch Informatik

Mehr

Informatik II Übung 11 Gruppe 3

Informatik II Übung 11 Gruppe 3 Informatik II Übung 11 Gruppe 3 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 11 Leyna Sadamori 17. Mai 2017 1 Nachtrag zu Übung 10 Alpha-Beta-Algorithmus Knotenwerte: Beide Varianten sind

Mehr

Informatik II - Übung 08

Informatik II - Übung 08 Informatik II - Übung 08 Christian Beckel beckel@inf.ethz.ch 17.04.2014 U7.A1: IFilter public ArrayList filterraw( ArrayList groups ) dynamic ArrayList result = new ArrayList(); cast for( int i = 0; i

Mehr

Informatik II - Übung 10

Informatik II - Übung 10 Informatik II - Übung 10 Katja Wolff katja.wolff@inf.ethz.ch U9.A1: Mini-Max-Algorithmus Strategie von MAX 4 Höhe: 4 Suchtiefe: 3 bester Zug: links MAX 4 0-2 MIN 4 7 3 0 2-2 8 MAX 7-5 2 1 7 8 MIN Informatik

Mehr

Informatik II Übung 11 Gruppe 7

Informatik II Übung 11 Gruppe 7 Informatik II Übung 11 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 11 Leyna Sadamori 15. Mai 2014 1 Debriefing Übung 10 Informatik II Übung 11 Leyna Sadamori 15. Mai 2014 2 U10A1a

Mehr

Informatik II Übung 8. Pascal Schärli

Informatik II Übung 8. Pascal Schärli Informatik II Übung 8 pascscha@student.ethz.ch Was gibts heute? Warm-Up Nachbesprechung Serie 7 Best-Of Vorlesung: Binäre Suche Key-Value Paare Backtracking Vorbesprechung Serie 8 2 Warm - Up Warm - Up

Mehr

Informatik II Übung 11. Pascal Schärli

Informatik II Übung 11. Pascal Schärli Informatik II Übung 11 pascscha@student.ethz.ch Was gibts heute? Warm-Up Nachbesprechung Serie 10 Best-Of Vorlesung: Laufzeitkomplexität Vorbesprechung Serie 11 2 Warm - Up Warm - Up Anzahl Rechenschritte

Mehr

Informatik II Übung 8 Gruppe 3

Informatik II Übung 8 Gruppe 3 Informatik II Übung 8 Gruppe 3 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 8 Leyna Sadamori 26. April 2017 1 Debriefing Übung 7 2 U7A1 Generics Grundprinzip sehr simpel Iteration über

Mehr

Informatik II - Tutorium 8

Informatik II - Tutorium 8 Informatik II - Tutorium 8 Vincent Becker vincent.becker@inf.ethz.ch 25.04.2017 Vincent Becker 26.04.2018 1 Altklausuren verfügbar Für regisitrierte AMIV-Mitglieder Mehrere Altklausuren Disclaimer lesen!

Mehr

Informatik II Übung 3. Pascal Schärli

Informatik II Übung 3. Pascal Schärli Informatik II Übung 3 pascscha@student.ethz.ch Warm up Ist das ein Baum? Left child: Right child: Parent: [A B C _ E _ G H I _] 0 2 3 4 5 6 7 8 9 1 2*i + 1 2*i + 2 (i-1)/2 2 Überblick Serie 3 Aufgabe 1

Mehr

Informatik II Übung 10. Benjamin Hepp 10 May 2017

Informatik II Übung 10. Benjamin Hepp 10 May 2017 Informatik II Übung 10 Benjamin Hepp benjamin.hepp@inf.ethz.ch 10 May 2017 Nachbesprechung U9 10 May 2017 Informatik II - Übung 01 2 Nachbesprechung U9 1. Spieltheorie 2. Reversi Teil 3 (Vorbesprechung

Mehr

Informatik II Übung 7. Pascal Schärli

Informatik II Übung 7. Pascal Schärli Informatik II Übung 7 pascscha@student.ethz.ch Was gibts heute? Warm-Up Nachbesprechung Serie 6 Best-Of Vorlesung: Generics Binäre Suchbäume Spielbäume Vorbesprechung Serie 7 2 Warm - Up Warm-Up interface

Mehr

Informatik II - Übung 10

Informatik II - Übung 10 Informatik II - Übung 10 Christian Beckel beckel@inf.ethz.ch 08.05.2014 Blatt 08 1) Binäre Suche 2) TicTacToe 3) Reversi: checkmove() & GreedyPlayer 4) Backtracking Christian Beckel 09/05/14 2 U8.A3: checkmove()

Mehr

Übungsstunde 10. Einführung in die Programmierung

Übungsstunde 10. Einführung in die Programmierung Übungsstunde 10 Einführung in die Programmierung Probleme bei Übung 9 [TODO Assistent] Nachbesprechung Übung 10 Aufgabe 1: Klassen (Bonus!) Feedback nach der Korrektur direkt per SVN Aufgabe 2: Interfaces

Mehr

Informatik II Übung 2. Pascal Schärli

Informatik II Übung 2. Pascal Schärli Informatik II Übung 2 Pascal Schärli pascscha@student.ethz.ch 08.03.2018 Code Expert Pascal Schärli 08.03.2018 2 Nachbesprechung Serie 1 Aufgabe 1 a) Induktionsbeweis über a möglich? Nein! Der Induktionsanfang

Mehr

Informatik II Übung 02. Benjamin Hepp 8 March 2017

Informatik II Übung 02. Benjamin Hepp 8 March 2017 Informatik II Übung 02 Benjamin Hepp benjamin.hepp@inf.ethz.ch 8 March 2017 Nachbesprechung U1 08.03.2017 Informatik II - Übung 01 2 Nachbesprechung U1.1 f(a,b) = a x b = a) Induktionsbeweis ueber a nicht

Mehr

Informatik II - Übung 07

Informatik II - Übung 07 Informatik II - Übung 07 Katja Wolff katja.wolff@inf.ethz.ch Besprechung Übungsblatt 6 Informatik II Übung 07 12.04.2017 2 Übungsblatt 6 1.) Klassen, Schnittstellen, Typumwandlung 2.) Schnittstellen und

Mehr

Informatik II (D-ITET) Übungsstunde 8,

Informatik II (D-ITET) Übungsstunde 8, Informatik II (D-ITET) Übungsstunde 8, 27.04.2017 Hossein Shafagh, shafagh@inf.ethz.ch Distributed Systems Group, ETH Zürich The Heartbleed Bug *http://heartbleed.com/ 2 Ablauf Besprechung von Übung 7

Mehr

Übungsstunde 9. Einführung in die Programmierung I

Übungsstunde 9. Einführung in die Programmierung I Übungsstunde 9 Einführung in die Programmierung I Probleme bei Übung 8 [TODO Assistent] Nachbesprechung Übung 9 Aufgabe 1 Spieler Spieler[] spieler = { new ZufallsWortSpieler(), new ZufallsWortSpielerMitGedaechtnis(),

Mehr

Übungsstunde 11. Einführung in die Programmierung

Übungsstunde 11. Einführung in die Programmierung Übungsstunde 11 Einführung in die Programmierung Probleme bei Übung 9 [TODO Assistent] Nachbesprechung Übung 10 Aufgabe 1: Mini-Taschenrechner (Bonus!) Feedback nach der Korrektur direkt per Git Lösungsvorschlag

Mehr

Informatik II Übung 2. Gruppe 4. Lukas Burkhalter (Folien teils von Christian B. und Leyna S.)

Informatik II Übung 2. Gruppe 4. Lukas Burkhalter (Folien teils von Christian B. und Leyna S.) Informatik II Übung 3 Gruppe 4 (Folien teils von Christian B. und Leyna S.) Lukas Burkhalter lubu@inf.ethz.ch Informatik II Übung 2 Lukas Burkhalter 14. März 2018 1 Ablauf der Übung Nachbesprechung der

Mehr

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe;

Mehr

Übungsstunde 5. Einführung in die Programmierung

Übungsstunde 5. Einführung in die Programmierung Übungsstunde 5 Einführung in die Programmierung Probleme bei Übung 4 [TODO Assistent] Nachbesprechung Übung 5 Aufgabe 1: Testen mit JUnit Aufgabe 2: Wörter Raten do-while benötigt keinen Dummy-Wert für

Mehr

Übungsstunde 11. Einführung in die Programmierung

Übungsstunde 11. Einführung in die Programmierung Übungsstunde 11 Einführung in die Programmierung Probleme bei Übung 10 [TODO Assistent] Nachbesprechung Übung 11 Aufgabe 1: Linked List (Bonus!) Ergebnisse nach der Korrektur direkt per SVN Aufgabe 2:

Mehr

Übungsstunde 6. Einführung in die Programmierung

Übungsstunde 6. Einführung in die Programmierung Übungsstunde 6 Einführung in die Programmierung Probleme bei Übung 4 [TODO Assistent] Nachbesprechung Übung 5 Aufgabe 1: Testen mit JUnit Aufgabe 2: Wörter Raten do-while benötigt keinen Dummy-Wert für

Mehr

Anwendungsbeispiel MinHeap

Anwendungsbeispiel MinHeap Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n

Mehr

Übungsstunde 10. Einführung in die Programmierung I

Übungsstunde 10. Einführung in die Programmierung I Übungsstunde 10 Einführung in die Programmierung I Probleme bei Übung 9 [TODO Assistent] Nachbesprechung Übung 10 Aufgabe 1 Comparable boolean lessthan(comparable other) Ziel: Schreiben von Methoden,

Mehr

Überblick. Rekursive Methoden. Backtracking. Memorization. Einfache rekursive Datenstrukturen. Aufzählen, Untermengen, Permutationen, Bitmengen

Überblick. Rekursive Methoden. Backtracking. Memorization. Einfache rekursive Datenstrukturen. Aufzählen, Untermengen, Permutationen, Bitmengen Überblick 2 Rekursive Methoden Backtracking Memorization Bäume Aufzählen, Untermengen, Permutationen, Bitmengen Memorization Nochmals Fibonacci-Zahlen int fibo(int n) { if(n == 0) { return 0; else if(n

Mehr

Übung 4: Die generische Klasse AvlBaum in Java 1

Übung 4: Die generische Klasse AvlBaum in Java 1 Übung 4: Die generische Klasse AvlBaum in Java 1 Ein binärer Suchbaum hat die AVL -Eigenschaft, wenn sich in jedem Knoten sich die Höhen der beiden Teilbäume höchstens um 1 unterscheiden. Diese Last (

Mehr

Informatik II - Tutorium 2

Informatik II - Tutorium 2 Informatik II - Tutorium 2 Vincent Becker vincent.becker@inf.ethz.ch 07.03.2018 Vincent Becker 08.03.2018 1 Übungsblatt 1 Vincent Becker 08.03.2018 2 U1.A1 f(a, b) = a x b = a) Induktionsbeweis über a

Mehr

Informatik II Übung 5 Gruppe 3

Informatik II Übung 5 Gruppe 3 Informatik II Übung 5 Gruppe 3 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 5 Leyna Sadamori 29. März 2017 1 Administrativ Die Übung am 5. April fällt aus! Bitte in die Übung in HG G 3

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 09: Generics and Comparison Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2017 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 /

Mehr

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

16. Dezember 2004 Dr. M. Schneider, P. Ziewer Technische Universität München WS 2004/2005 Fakultät für Informatik Lösungsvorschläge zu Blatt 8 A. Berlea, M. Petter, 16. Dezember 2004 Dr. M. Schneider, P. Ziewer Übungen zu Einführung in die Informatik

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 12/13 Einführung in die Informatik I Wiederholungsklausur Prof. Dr. Helmut Seidl, A. Lehmann,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Hashtags - Klausuraufgaben

Hashtags - Klausuraufgaben Hashtags - Klausuraufgaben (1.) Welche Ausgabe hat folgender Quellkode? public class Test public static void main(string args[]) HashMap y = new HashMap(); y.put("paper","x"); y.put("pen","y"); y.put("pencil","z");

Mehr

Aufgabe 1.1. Wählen Sie jene Variablendeklarationen mit Initialisierungen aus, die in Java hinsichtlich der Typen korrekt sind:

Aufgabe 1.1. Wählen Sie jene Variablendeklarationen mit Initialisierungen aus, die in Java hinsichtlich der Typen korrekt sind: Test 1 in Programmkonstruktion 59 / 100 Punkte 1. Multiple-Choice-Aufgaben 20 / 30 Punkte Bitte wählen Sie alle zutreffenden Antwortmöglichkeiten aus. Es können beliebig viele Antwortmöglichkeiten zutreffen,

Mehr

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich Informatik II (D-ITET) Informatik II (D-ITET) simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Übungsstunde 1 Informatik II (D-ITET) 1 Ablauf Nachbesprechung Übung 1 und Übung 2 Besprechung

Mehr

Informatik II Übung 2

Informatik II Übung 2 Informatik II Übung 2 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 7.3.2013

Mehr

Informatik II - Tutorium 12

Informatik II - Tutorium 12 Informatik II - Tutorium 12 Vincent Becker vincent.becker@inf.ethz.ch 23.05.2018 Vincent Becker 24.05.2018 1 Reversi-Turnier 30.5.2018 Deadline für Einreichung SONNTAG NACHT!!! Umfrage Bitte an Umfrage

Mehr

Übungsstunde 4. Einführung in die Programmierung

Übungsstunde 4. Einführung in die Programmierung Übungsstunde 4 Einführung in die Programmierung Probleme bei Übung 3 [TODO Assistent] Nachbesprechung Übung 4 Aufgabe 1: Sieb des Eratosthenes //Initialisiere das Array sieb und setze alle Werte auf true

Mehr

Informatik II - Übung 03

Informatik II - Übung 03 Informatik II - Übung 03 Katja Wolff katja.wolff@inf.ethz.ch 15.03.2014 Besprechung Übungsblatt 2 Informatik II - Übung 03 15.03.2017 2 U2.A1 S Klammerdarstellung und eingerückter Form R P V S(R(H(K)),P(A(N,O),Q,T),V(J,F(G)))

Mehr

Übungsstunde 7. Einführung in die Programmierung

Übungsstunde 7. Einführung in die Programmierung Übungsstunde 7 Einführung in die Programmierung Probleme bei Übung 5 [TODO Assistent] Nachbesprechung Übung 6 Aufgabe 1: Talsohlen (Bonus!) Feedback nach der Korrektur direkt per Git Lösungsvorschlag von

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

Informatik II PVK Tag 2

Informatik II PVK Tag 2 Informatik II PVK Tag 2 Michael Baumann mbauman@student.ethz.ch n.ethz.ch/~mbauman Themen Theorie 1) Java Basics 2) Theorie: Komplexität und Laufzeit 3) OOP 2 Themen Praxis 1) Syntaxbäume 2) Verkettete

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 11/12 Einführung in die Informatik I Probe-Klausur Prof. Dr. Helmut Seidl, M. Schwarz, A. Herz,

Mehr

Schnittstellen, Stack und Queue

Schnittstellen, Stack und Queue Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 16 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Fragen zum zweiten Übungsblatt? 2. Vorbesprechung des dritten Übungsblatts 3. Beispielaufgaben

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)

Mehr

Beispielprüfung CuP WS 2015/2016

Beispielprüfung CuP WS 2015/2016 Beispielprüfung CuP WS 2015/2016 Univ.-Prof. Dr. Peter Auer 23. Dezember 2015 Informationen zur Prüfung Die Prüfung wird als Multiple-Choice-Test mit 10 Fragen am Computer abgehalten. (Bei manchen Fragen

Mehr

Spiele als Suchproblem

Spiele als Suchproblem Spiele als Suchproblem betrachten Spiele für zwei Personen, diese sind abwechselnd am Zug Spiel endet in einem aus einer Menge möglicher Terminalzustände deterministische, im Prinzip zugängliche Umgebung

Mehr

Wiederholungsblatt Einführung in die Programmierung Lösungen

Wiederholungsblatt Einführung in die Programmierung Lösungen Ludwig-Maximilians-Universität München Institut für Informatik Prof. Dr. Peer Kröger Michael Fromm, Florian Richter WiSe 2018/2019 09.02.2019 Wiederholungsblatt Einführung in die Programmierung Lösungen

Mehr

Wiederholungsblatt Einführung in die Programmierung Lösungen

Wiederholungsblatt Einführung in die Programmierung Lösungen Ludwig-Maximilians-Universität München Institut für Informatik PD Dr. Peer Kröger Janina Bleicher, Florian Richter 09.02.2017 Wiederholungsblatt Lösungen Dies ist eine Wiederholung der Vorlesung EIP. Das

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Informatik II Übung 6. Pascal Schärli

Informatik II Übung 6. Pascal Schärli Informatik II Übung 6 pascscha@student.ethz.ch Was gibts heute? Warm-Up Nachbesprechung Serie 5 Best-Of Vorlesung: Klassenhierarichie Abstrakte Klassen Factories Vorbesprechung Serie 6 2 Warm - Up Warm

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

Informatik II. Woche 15, Giuseppe Accaputo

Informatik II. Woche 15, Giuseppe Accaputo Informatik II Woche 15, 13.04.2017 Giuseppe Accaputo g@accaputo.ch 1 Themenübersicht Repetition: Pass by Value & Referenzen allgemein Repetition: Asymptotische Komplexität Live-Programmierung Aufgabe 7.1

Mehr

Programmiertechnik Übungen zu Klassen & -methoden

Programmiertechnik Übungen zu Klassen & -methoden Programmiertechnik Übungen zu Klassen & -methoden Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Übung 1 Ein Verfahren, den größten gemeinsamen Teiler (ggt) zweier Zahlen a und b, a

Mehr

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

Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen 2 Ziele Bäume Standardimplementierungen für Bäume kennen lernen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 02/0 4 Bäume (abstrakt) Implementierung von Knoten Bäume

Mehr

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

Bäume. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang.   WS 07/08 Bäume Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Standardimplementierungen für Bäume kennen lernen 3 Bäume (abstrakt) Bäume sind

Mehr

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Spieltheorie 15.07.2015 Axel Jena Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Vortrag SP: Gliederung Was ist Spieltheorie? Strategien Gefangenendilemma

Mehr

Technische Universität München WiSe 2018/19 Fakultät für Informatik Übungsblatt 6 Dr. Ch. Herzog 26. November 2018

Technische Universität München WiSe 2018/19 Fakultät für Informatik Übungsblatt 6 Dr. Ch. Herzog 26. November 2018 Technische Universität München WiSe 2018/19 Fakultät für Informatik Übungsblatt 6 Dr. Ch. Herzog 26. November 2018 Übungen zu Grundlagen der Programmierung Aufgabe 19 (Lösungsvorschlag) Rekursive Datenstruktur

Mehr

Informatik II - Übung 02

Informatik II - Übung 02 Informatik II - Übung 02 Katja Wolff katja.wolff@inf.ethz.ch Themen 1. Ein Algorithmus und seine Implementierung in Java 2. Java: Elementare Aspekte 3. Klassen und Referenzen 4. Syntaxanalyse und Compiler

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1

Mehr

Tagesprogramm. Werte und Typen Methoden und Parameter Ergebnisse und Seiteneffekte.

Tagesprogramm. Werte und Typen Methoden und Parameter Ergebnisse und Seiteneffekte. 1 2017-03-13 Tagesprogramm Werte und Typen Methoden und Parameter Ergebnisse und Seiteneffekte http://pingo.upb.de/839558 Skriptum ab Seite 43 git clone https://github.com/markus2330/pk17s03 2 2017-03-13

Mehr

Ausnahmebehandlung in Java

Ausnahmebehandlung in Java Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception

Mehr

Der Alpha-Beta-Algorithmus

Der Alpha-Beta-Algorithmus Der Alpha-Beta-Algorithmus Maria Hartmann 19. Mai 2017 1 Einführung Wir wollen für bestimmte Spiele algorithmisch die optimale Spielstrategie finden, also die Strategie, die für den betrachteten Spieler

Mehr

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri Informatik II PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri KAUM JAVA Kaum Java Viel Zeit wird für Java-spezifisches Wissen benützt Wenig wichtig für Prüfung Letztjähriger Assistent

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Suchen und Amortisierte Analyse Heute: Suchen / Schreibtischtest Amortisierte Analyse Nächste

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo g@accaputo.ch 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Übungsstunde 6. Einführung in die Programmierung

Übungsstunde 6. Einführung in die Programmierung Übungsstunde 6 Einführung in die Programmierung Probleme bei Übung 5 [TODO Assistent] Nachbesprechung Übung 6 Feedback nach der Korrektur direkt per SVN public class Person { int alter; double gewicht;

Mehr

Nachtragstest in Programmkonstruktion 1. Phase. 1. Multiple-Choice-Aufgaben

Nachtragstest in Programmkonstruktion 1. Phase. 1. Multiple-Choice-Aufgaben Nachtragstest in Programmkonstruktion 1. Phase 29.5 / 60 Punkte 1. Multiple-Choice-Aufgaben 14.5 / 24 Punkte Bitte wählen Sie alle zutreffenden Antwortmöglichkeiten aus. Es können beliebig viele Antwortmöglichkeiten

Mehr

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139 Aufgabe 139 Aufgabe 139 Aufgabenstellung Stellen Sie den folgenden in Feldbaum-Darstellung beschriebenen Binärbaum a) graphisch (welcher Knoten ist die Wurzel?), b) in halbsequentieller Darstellung, c)

Mehr

MB2-ALG, SS15 Seite 1 Hauptklausur, geschrieben am

MB2-ALG, SS15 Seite 1 Hauptklausur, geschrieben am MB-ALG, SS1 Seite 1 Hauptklausur, geschrieben am.07.01 Vorname Nachname Matrikel-Nr Diese Klausur ist mein letzter Prüfungsversuch (bitte ankreuzen): Ja Nein Ihre Lösung für Aufgabe 1 können Sie direkt

Mehr

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen 1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new

Mehr

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 3. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Potenzieren von Matrizen Testlauf der Klasse Matrix.java: 10 Punkte Erzeuge Matrix

Mehr