Informatik II Übung 8. Pascal Schärli

Größe: px
Ab Seite anzeigen:

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

Transkript

1 Informatik II Übung 8 [email protected]

2 Was gibts heute? Warm-Up Nachbesprechung Serie 7 Best-Of Vorlesung: Binäre Suche Key-Value Paare Backtracking Vorbesprechung Serie 8 2

3 Warm - Up

4 Warm - Up 6 inorder: richtig: postorder: preorder: richtig:

5 Warm - Up 6 remove 10, 1, 6 ersetzten vom grössten Element im linken Teilbaum 3 10 richtig:

6 Nachbesprechung

7 Nachbesprechung U7A1 public ArrayList filterraw(arraylist groups) { ArrayList result = new ArrayList(); for (int i=0; i<groups.size(); i++) { ArrayList group = (ArrayList) groups.get(i); for (int j=0; j<group.size(); j++) { Student student = (Student) group.get(j); if (filter(student)) { result.add(student); return result; private boolean filter(student student) { return student.getpoints() >= (IFilter.criteria / 100 * IFilter.maxNumberofPoints); 7

8 Nachbesprechung U7A1 public ArrayList<Student> filtergeneric(arraylist<arraylist<student>> groups) { ArrayList<Student> result = new ArrayList<Student>(); for (int i=0; i<groups.size(); i++) { ArrayList<Student> group = groups.get(i); for (int j=0; j<group.size(); j++) { Student student = group.get(j); if (filter(student)) { result.add(student); public ArrayList filterraw(arraylist groups) { ArrayList result = new ArrayList(); for (int i=0; i<groups.size(); i++) { ArrayList group = (ArrayList) groups.get(i); return result; for (int j=0; j<group.size(); j++) { Student student = (Student) group.get(j); if (filter(student)) { result.add(student); return result; 8

9 Nachbesprechung U7A2 9

10 Nachbesprechung U7A2 10

11 Nachbesprechung U7A3 public int height(binarysearchtree<t> tree) { if (tree == null) return 0; return 1 + Math.max(height(tree.left), height(tree.right)); 11

12 Nachbesprechung U7A3 public boolean hasonechild(binarysearchtree<t> tree) { return (tree.left!= null) ^ (tree.right!= null); //XOR ;) 12

13 Nachbesprechung U7A3 private ArrayList<T> postorder(binarysearchtree<t> tree, ArrayList<T> arraylist) { if (tree == null) return arraylist; arraylist = postorder(tree.left, arraylist); arraylist = postorder(tree.right, arraylist); arraylist.add(tree.thing); return arraylist; public ArrayList<T> postorder(binarysearchtree<t> tree) { return postorder(tree, new ArrayList<T>()); 13

14 Nachbesprechung U7A3 private ArrayList<T> preorder(binarysearchtree<t> tree, ArrayList<T> arraylist) { if (tree == null) return arraylist; ArrayList.add(tree.thing); ArrayList = preorder(tree.left, arraylist); ArrayList = preorder(tree.right, arraylist); return arraylist; public ArrayList<T> preorder(binarysearchtree<t> tree) { return preorder(tree, new ArrayList<T>()); 14

15 Nachbesprechung U7A3 private ArrayList<T> inorder(binarysearchtree<t> tree, ArrayList<T> ArrayList) { if (tree == null) return ArrayList; ArrayList = inorder(tree.left, ArrayList); ArrayList.add(tree.thing); ArrayList = inorder(tree.right, ArrayList); return ArrayList; public ArrayList<T> inorder(binarysearchtree<t> tree) { return inorder(tree, new ArrayList<T>()); 15

16 Nachbesprechung U7A3 public BinarySearchTree<T> insert(binarysearchtree<t> tree, int key, T thing) { if (tree == null) { return new BinarySearchTree<T>(key, thing); if (tree.key == key) { tree.thing = thing; else if (key < tree.key) { tree.left = insert(tree.left, key, thing); else { tree.right = insert(tree.right, key, thing); return tree; 16

17 Nachbesprechung U7A3 public T find(binarysearchtree<t> tree, int key) { if (tree == null) return null; if (key == tree.key) { return tree.thing; if (key < tree.key) { return find(tree.left, key); return find(tree.right, key); 17

18 Nachbesprechung U7A3 private BinarySearchTree<T> getsmallest(binarysearchtree<t> tree) { BinarySearchTree<T> smallest; // If left child is smallest, re-link. Otherwise, look further left. if (tree.left.left == null) { smallest = tree.left; tree.left = smallest.right; else { smallest = getsmallest(tree.left); return smallest; 18

19 Nachbesprechung U7A3 public BinarySearchTree<T> remove(binarysearchtree<t> tree, int key) { if (tree == null) return null; if (tree.key == key) { if (isleaf(tree)) return null; if (hasonechild(tree)) { if (tree.left!= null) return tree.left; else return tree.right; null else if (tree.right.left == null) { tree.right.left = tree.left; return tree.right; else { BinarySearchTree<T> smallest = getsmallest(tree.right); smallest.left = tree.left; smallest.right = tree.right; return smallest; null if (key < tree.key) tree.left = remove(tree.left, key); else tree.right = remove(tree.right, key); return tree; 19

20 Nachbesprechung U7A3 public BinarySearchTree<T> remove(binarysearchtree<t> tree, int key) { if (tree == null) return null; if (tree.key == key) { if (isleaf(tree)) return null; if (hasonechild(tree)) { if (tree.left!= null) return tree.left; else return tree.right; 6 else if (tree.right.left == null) { tree.right.left = tree.left; return tree.right; else { BinarySearchTree<T> smallest = getsmallest(tree.right); smallest.left = tree.left; smallest.right = tree.right; return smallest; null if (key < tree.key) tree.left = remove(tree.left, key); else tree.right = remove(tree.right, key); return tree; 20

21 Nachbesprechung U7A3 public BinarySearchTree<T> remove(binarysearchtree<t> tree, int key) { if (tree == null) return null; if (tree.key == key) { if (isleaf(tree)) return null; if (hasonechild(tree)) { 6 if (tree.left!= null) return tree.left; else return tree.right; 4 else if (tree.right.left == null) { tree.right.left = tree.left; return tree.right; else { BinarySearchTree<T> smallest = getsmallest(tree.right); smallest.left = tree.left; smallest.right = tree.right; return smallest; if (key < tree.key) tree.left = remove(tree.left, key); else tree.right = remove(tree.right, key); return tree;

22 Nachbesprechung U7A3 public BinarySearchTree<T> remove(binarysearchtree<t> tree, int key) { if (tree == null) return null; if (tree.key == key) { if (isleaf(tree)) return null; if (hasonechild(tree)) { if (tree.left!= null) return tree.left; 6 else return tree.right; 8 else if (tree.right.left == null) { tree.right.left = tree.left; return tree.right; else { BinarySearchTree<T> smallest = getsmallest(tree.right); smallest.left = tree.left; smallest.right = tree.right; return smallest; 8 if (key < tree.key) tree.left = remove(tree.left, key); else tree.right = remove(tree.right, key); return tree;

23 Nachbesprechung U7A3 public BinarySearchTree<T> remove(binarysearchtree<t> tree, int key) { if (tree == null) return null; if (tree.key == key) { if (isleaf(tree)) return null; if (hasonechild(tree)) { if (tree.left!= null) return tree.left; else return tree.right; else if (tree.right.left == null) { tree.right.left = tree.left; return tree.right; 8 else { BinarySearchTree<T> smallest = getsmallest(tree.right); smallest.left = tree.left; smallest.right = tree.right; return smallest; 7 if (key < tree.key) tree.left = remove(tree.left, key); else tree.right = remove(tree.right, key); return tree;

24 Nachbesprechung U7A3 public BinarySearchTree<T> remove(binarysearchtree<t> tree, int key) { if (tree == null) return null; if (tree.key == key) { if (isleaf(tree)) return null; if (hasonechild(tree)) { if (tree.left!= null) return tree.left; else return tree.right; else if (tree.right.left == null) { tree.right.left = tree.left; return tree.right; 9 8 else { BinarySearchTree<T> smallest = getsmallest(tree.right); smallest.left = tree.left; smallest.right = tree.right; return smallest; if (key < tree.key) tree.left = remove(tree.left, key); else tree.right = remove(tree.right, key); return tree;

25 Nachbesprechung U7A3 public BinarySearchTree<T> remove(binarysearchtree<t> tree, int key) { if (tree == null) return null; if (tree.key == key) { if (isleaf(tree)) return null; if (hasonechild(tree)) { if (tree.left!= null) return tree.left; else return tree.right; else if (tree.right.left == null) { tree.right.left = tree.left; return tree.right; else { BinarySearchTree<T> smallest = getsmallest(tree.right); smallest.left = tree.left; smallest.right = tree.right; return smallest; Falls nicht die Wurzel entfernt werden soll weitersuchen bis richtiges Element gefunden wird if (key < tree.key) tree.left = remove(tree.left, key); else tree.right = remove(tree.right, key); return tree; 25

26 Nachbesprechung U7A4 - Reversi public Coordinates nextmove(gameboard gb) { ArrayList<Coordinates> validmoves = new ArrayList<Coordinates>(gb.getSize() * gb.getsize()); for (int row = 1; row <= gb.getsize(); row++){ for (int col = 1; col <= gb.getsize(); col++){ Coordinates coord = new Coordinates(row, col); if (gb.checkmove(color, coord)){ validmoves.add(coord); if (validmoves.size() > 0){ int randindex = rand.nextint(validmoves.size()); return validmoves.get(randindex); else return null; 26

27 Vorlesung

28 Binäre Suche Gegeben ein sortierter Array [1,2,4,6,9,10,14,16,17,20,23,26] Man könnte alle Elemente Durchprobieren, bis man die 16 gefunden hat Welcher Index hat das Element 16? Nicht sehr effizient Besser: Man kann ausnutzen, dass der Array sortiert ist! Binäre Suche! 28

29 Binäre Suche Algorithmus: Falls gleich fertig Grösser als die Mitte? 1 Mit Element in der Mitte vergleichen. 0 rechts suchen. Kleiner als die Mitte? findme: 16 from: 0 to: 11 links suchen. 29

30 Binäre Suche Algorithmus: Falls gleich fertig Grösser als die Mitte? 1 Mit Element in der Mitte vergleichen. 0 rechts suchen. Kleiner als die Mitte? findme: 16 from: 0 to: 11 links suchen. 30

31 Binäre Suche Algorithmus: Falls gleich fertig Grösser als die Mitte? 1 Mit Element in der Mitte vergleichen. 0 rechts suchen. Kleiner als die Mitte? findme: 16 from: 6 to: 11 links suchen. 31

32 Binäre Suche Algorithmus: Falls gleich fertig Grösser als die Mitte? 1 Mit Element in der Mitte vergleichen. 0 rechts suchen. Kleiner als die Mitte? findme: 16 from: 6 to: 7 links suchen. 32

33 Binäre Suche Algorithmus: Falls gleich fertig Grösser als die Mitte? 1 Mit Element in der Mitte vergleichen. 0 rechts suchen. Kleiner als die Mitte? findme: 16 from: 7 to: 7 links suchen. 33

34 Hash-functions (nicht prüfungsrelevant, aber goot to know) Eine Hashfunktion ist eine Abbildung, die eine große Eingabemenge auf eine kleinere Zielmenge abbildet. - Wikipedia Eine Hashfunktion nimmt ein Objekt und wandelt es in eine scheinbar Zufällige Zahl, zb int um. Das gleiche Objekt bekommt immer den selben Hash, es kann jedoch passieren, dass zwei unterschidliche Objekte zufällig den selben Hash bekommen (ist jedoch nicht sehr wahrschienlich) So ist es möglich, grosse Objekte mit relativ wenig aufwand zu ordnen und wieder zu finden. 34

35 Hash-functions - Beispiel (nicht prüfungsrelevant, aber goot to know) Beispiel: Ich will alle Info II Memes an einem Ort speichern. Immer wenn ich ein neues Meme finde, will ich überprüfen, ob ich das Meme nicht bereits gespeichert habe. Anstatt bei jedem neuen Bild jedes einzelne Pixel mit allen Pixeln der bereits vorhandenen Bilder zu vergleichen, könnte man auch den Hash der Bilder einmal berechnen und dann nur die vergleichen. Man speichert dann also immer den Hash als Key und das Bild als Value ab. 35

36 Key Value Paare memetree: key: 54 int key = zucc.hashcode(); if(find(memetree,key)!= null){ System.out.println( Meme already stored ) else{ insert(memetree,key,zucc); key: 15 key: 103 key: 21 key: 23 zucc = key = 67 36

37 Key Value Paare memetree: key: 54 int key = zucc.hashcode(); if(find(memetree,key)!= null){ System.out.println( Meme already stored ) else{ insert(memetree,key,zucc); key: 15 key: 103 key: 21 key: 23 key: 67 37

38 Backtracking Demo auf meiner Website 38

39 Backtracking Annahme: Möglichkeiten/Sekunde Brute Force 88 = Möglichkeiten 28 min Backtracking Möglichkeiten. (Wikipedia) 1.5 sek 39

40 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 40

41 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 41

42 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 42

43 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 43

44 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 44

45 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 45

46 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 46

47 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 47

48 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 48

49 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 49

50 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 50

51 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 51

52 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Falls in der ersten unbesetzen Zeile Platz vorhanden ist: Falls nicht: setze möglichst weit unten Backtracking Zeile vor mir machte Backtracking: Falls noch mehr Platz oberhalb in der Zeile Dame verschieben Sonst: Backtracking 52

53 Backtracking - Beispiel Setze in jeder Spalte eine Dame, so dass keine zwei Damen sich in einem Zug erreichen können. Lösung gefunden! 53

54 Vorbesprechung

55 U8A1 Binäre Suche Gegeben sei das Array [3, 7, 17, 25, 33, 47, 56, 62, 65, 66, 68, 70, 78, 89, 92] a) Welcher Entscheidungsbaum gibt es, wenn man nach der Zah 47 sucht? Binäre Suche Der Entscheidungsbaum für die Suche nach der Zahl 3 im Array [1,2,3,4,5,6,7] würde folgendermassen aussehen:

56 U8A1 Binäre Suche Alle Entscheidungsäume für die Suche nach allen Zahlen im Array übereinander legen Was für eine Datenstruktur ergibt sich dann? Was passiert, wenn man bei der Suche den Teilarray nicht halbiert, sondern aufteilt in 1/3 und 2/3? 56

57 U8A2 Binäre Suche Programmieren BinarySearch<Key extends Comparable<Key>, Value> Suchbaum mit zwei generischen Typen Key und Value(ähnlich wie hier) Key extends Comparable<Key> zwei Objekte vom Typ Key können mit compareto verglichen werden Das Interface IMeasure gibt vor, wie man das Verhältnis, in welchem der Baum beim Suchen aufgeteilt werden soll, bestimmen kann. 57

58 U8A3 Rucksackproblem Gibt es immer nur genau eine Lösung? Brute-Force! Alle Kombinationen ausprobieren Backtracking: Wenn eine Selection mit dem nächsten Element schon zu schwer ist Backtrack 58

59 U8A3 Rucksackproblem Klasse Selection: Effizientere Art Boolean zu speichern: anstatt bits = [true, false, true, true, false, false] wird geschrieben: bits = 0b (= 44 ) Platzsparend 59

60 U8A3 Rucksackproblem Für euch ist aber vorallem wichtig wie man die Klasse anwendet, nicht wie sie funktioniert: Selection s = new Selection(size, bits) neue Selektion s.set(index, value) bestimmtes Bit auf true oder false setzen s.sum(werte) bestimmt den Wert einer Bestimmten Selektion aufgrund einer Werteliste (ArrayList<Integer>) 60

61 U8A3 Rucksackproblem Rekursiver Backtrackingalgorithmus: gegeben: public Selection findbest(arraylist<integer> values, ArrayList<Integer> weights, int maxweight); 1. Kreiert eine Helferfunktion: public Selection findbest(arraylist<integer> values,arraylist<integer> weights, int maxweight, int ptr, Selection s); int ptr Pointer (äquivalent zum roten Pfeil bei diesem Beispiel) Selection s Die Selektion (wie beim Schachspiel das Spielbrett) 61

62 U8A3 Rucksackproblem Vorgehen: findbest(arraylist<integer> values,arraylist<integer> weights, int maxweight, int ptr, Selection s); 1. Falls ptr zu gross Selektion[s] zurückgeben 2. Beste Selektion [s1] finden, wenn man das Objekt bei ptr nicht nimmt 3. Falls das Objekt bei ptr in der bisherigen Selektion keinen platz hat: 4. Selektion[s1] zurückgeben 4. Sonst: 5. beste Selekition[s2] finden, wenn man das Objekt bei ptr nimmt 6. Max von s1 und s2 zurückgeben 62

63 U8A3 Rucksackproblem 1. Falls ptr zu gross Selektion[s] zurückgeben 2. Beste Selektion [s1] finden, wenn man das Objekt bei ptr nicht nimmt 3. Falls das Objekt bei ptr in der bisherigen Selektion keinen platz hat: maxweight = 10kg ptr = 2 ptr 4. Selektion[s1] zurückgeben 4. Sonst: 5. beste Selekition[s2] finden, wenn man das Objekt bei ptr nimmt values = 5.- weights = 1kg 6. Max von s1 und s2 zurückgeben 1. ptr = 2 nicht zu gross 2. Beste Selektion[s1] gefunden mit Wert Objekt bei ptr hatt in s platz 5. Beste Selektion[s2] gefunden mit Wert Selektion[s1] zurückgeben, da sie mehr Wert hat return kg 5kg 7kg s = false true false false s1 = false true false true s2 = false true true false 63

64 U8A4 Reversi Schnittstelle ICheckMove implementieren Überprüft, ob an einer bestimmten Position gespielt werden kann falls ihr es nicht macht, könnt ihr später auch die Funktion GameBoard.checkMove aus der Bibliothek nehmen. Greedy-Player: implementiert einen Spieler, der immer denjenigen Zug auswählt, welcher am meisten Steine umdreht. 64

65 U8A4 Reversi Preise dieses Jahr: 1x UE Boom 2 2x Drone 5x Raspberry Pi 3 B+ 1x Pimoroni Pirate Radio 1x Pimoroni Scroll Bot 1x Pimoroni Mood Light 3x Moleskin 1x Amphiro 1x Reversi Spielbrett 1x Tile 65

66 Viel Spass! 66

Informatik II Übung 8 Gruppe 3

Informatik II Übung 8 Gruppe 3 Informatik II Übung 8 Gruppe 3 Leyna Sadamori [email protected] Informatik II Übung 8 Leyna Sadamori 26. April 2017 1 Debriefing Übung 7 2 U7A1 Generics Grundprinzip sehr simpel Iteration über

Mehr

Informatik II - Übung 08

Informatik II - Übung 08 Informatik II - Übung 08 Katja Wolff [email protected] Ü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 (D-ITET) Übungsstunde 8,

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

Mehr

Informatik II - Übung 08

Informatik II - Übung 08 Informatik II - Übung 08 Christian Beckel [email protected] 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 8

Informatik II Übung 8 Informatik II Übung 8 Gruppe 2 Carina Fuss [email protected] 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 09

Informatik II Übung 09 Informatik II Übung 09 Michael Baumann [email protected] 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 [email protected] 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 Übung 7. Pascal Schärli

Informatik II Übung 7. Pascal Schärli Informatik II Übung 7 [email protected] 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 9. Pascal Schärli

Informatik II Übung 9. Pascal Schärli Informatik II Übung 9 [email protected] Was gibts heute? Warm-Up Nachbesprechung Serie 8 Best-Of Vorlesung: Minimax Alpha Beta Vorbesprechung Serie 9 Info zur Auffahrt 2 Warm - Up Warm-Up (Basisprüfung

Mehr

Informatik II - Übung 07. Christian Beckel

Informatik II - Übung 07. Christian Beckel Informatik II - Übung 07 Christian Beckel [email protected] 15.04.2015 Heute Besprechung Blatt 06 Demo: Objektorientierte Programmierung Hinweise zu Blatt 07 Christian Beckel 15/04/15 2 Besprechung Übungsblatt

Mehr

Informatik II - Übung 07

Informatik II - Übung 07 Informatik II - Übung 07 Katja Wolff [email protected] Besprechung Übungsblatt 6 Informatik II Übung 07 12.04.2017 2 Übungsblatt 6 1.) Klassen, Schnittstellen, Typumwandlung 2.) Schnittstellen und

Mehr

Informatik II Übung 7. Gruppe 2 Carina Fuss

Informatik II Übung 7. Gruppe 2 Carina Fuss Informatik II Übung 7 Gruppe 2 Carina Fuss [email protected] 18.4.2018 Carina Fuss 16.4.2018 1 Übung 7 Hinweise zum Programmieren Nachbesprechung Übung 6 Vorbesprechung Übung 7 ArrayList und Generics

Mehr

Informatik II (D-ITET)

Informatik II (D-ITET) Informatik II (D-ITET) [email protected] Distributed Systems Group, ETH Zürich Informatik II (D-ITET) 1 Ablauf Nachbesprechung Übung 6 Besprechung der Vorlesung Die neue Serie... Zeit zum Programmieren

Mehr

Informatik II Übung 9

Informatik II Übung 9 Informatik II Übung 9 Katja Wolff [email protected] 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 7 Gruppe 3

Informatik II Übung 7 Gruppe 3 Informatik II Übung 7 Gruppe 3 Julia Gygax [email protected] Julia Gygax 18.04.2018 1 Nachbesprechung Übung 6 Julia Gygax 18.04.2018 2 Aufgabe 1 Klassen, Schnittstellen und Typumwandlungen Julia Gygax

Mehr

Informatik II Übung 7

Informatik II Übung 7 Informatik II Übung 7 Florian Scheidegger [email protected] Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer [email protected], [email protected] 18.04.2013

Mehr

Informatik II Übung, Woche 10

Informatik II Übung, Woche 10 Giuseppe Accaputo 10. März, 2016 Plan für heute 1. Typumwandlung (Typecasts) 2. Ordnerstruktur für Übungen 3. Vorbesprechung Übung 3 4. Nachbesprechung Übung 2 (inkl. Live Programmierung) Informatik II

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo [email protected] 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

Informatik II Übung 11. Pascal Schärli

Informatik II Übung 11. Pascal Schärli Informatik II Übung 11 [email protected] 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 10. Benjamin Hepp 10 May 2017

Informatik II Übung 10. Benjamin Hepp 10 May 2017 Informatik II Übung 10 Benjamin Hepp [email protected] 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 9 Gruppe 3

Informatik II Übung 9 Gruppe 3 Informatik II Übung 9 Gruppe 3 Julia Gygax [email protected] 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

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

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

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

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

Informatik II - Übung 11

Informatik II - Übung 11 Informatik II - Übung 11 Christian Beckel [email protected] 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

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 { Hochschule Harz Programmierung1 Aufgabe 10: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Hashing und Generische Klassen Versuchsziele Kenntnisse

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

Prof. Dr. Uwe Schmidt. 30. Januar 2017

Prof. Dr. Uwe Schmidt. 30. Januar 2017 Prof. Dr. Uwe Schmidt 30. Januar 2017 Aufgaben zur Klausur Algorithmen und Datenstrukturen im WS 2016/17 ( B Inf, B TInf, B MInf, B CGT, B WInf, B Ecom, B ITE) Zeit: 75 Minuten erlaubte Hilfsmittel: keine

Mehr

Probeklausur zur Vorlesung

Probeklausur zur Vorlesung Dr. Jochen Hoenicke Alexander Nutz Probeklausur zur Vorlesung Einführung in die Informatik Sommersemester 2014 Die Klausur besteht aus diesem Deckblatt und elf Blättern mit den Aufgaben, sowie einem Blatt

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

Was ist ein assoziativer Speicher?

Was ist ein assoziativer Speicher? Überblick 17. Datenstrukturen 17.1 Einleitung 17.2 Listen 17.3 Assoziative Speicher 17.4 Bäume 17.5 Mengen 17.6 Das Collections-Framework in Java 17.7 Zusammenfassung 17 Datenstrukturen 3 Assoziative Speicher

Mehr

9. Natürliche Suchbäume

9. Natürliche Suchbäume Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten

Mehr

Tutoraufgabe 1 (2 3 4 Bäume):

Tutoraufgabe 1 (2 3 4 Bäume): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe ( Bäume): a) Löschen Sie den Wert aus dem folgenden Baum und geben Sie den dabei

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 11: Generic Methods Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2017 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 15 Inhalt

Mehr

Informatik II - Übung 11

Informatik II - Übung 11 Informatik II - Übung 11 Katja Wolff [email protected] 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 Vorlesung am D-BAUG der ETH Zürich

Informatik II Vorlesung am D-BAUG der ETH Zürich Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:

Mehr

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 217 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Graphen, Suchbäume, AVL Bäume Heute: Graphen und Bäume Binäre Suchbäume AVL-Bäume Nächste

Mehr

Informatik II Übung 11 Gruppe 3

Informatik II Übung 11 Gruppe 3 Informatik II Übung 11 Gruppe 3 Leyna Sadamori [email protected] Informatik II Übung 11 Leyna Sadamori 17. Mai 2017 1 Nachtrag zu Übung 10 Alpha-Beta-Algorithmus Knotenwerte: Beide Varianten sind

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

Mehr

elementare Datenstrukturen

elementare Datenstrukturen elementare Datenstrukturen Wie die Daten das Laufen lernten Andreas Ferber [email protected] elementare Datenstrukturen p./40 KISS elementare Datenstrukturen p./40 KISS (Keep It Simple, Stupid) Immer die einfachste

Mehr

Informatik II - Übung 10

Informatik II - Übung 10 Informatik II - Übung 10 Katja Wolff [email protected] 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 Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo [email protected] 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,

Mehr

Informatik II Übung 2. Pascal Schärli

Informatik II Übung 2. Pascal Schärli Informatik II Übung 2 Pascal Schärli [email protected] 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

Bäume, Suchbäume und Hash-Tabellen

Bäume, Suchbäume und Hash-Tabellen Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche

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 Übung 9

Informatik II Übung 9 Informatik II Übung 9 Florian Scheidegger [email protected] Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer [email protected], [email protected] Informatik

Mehr

Informatik II Übung 2

Informatik II Übung 2 Informatik II Übung 2 Florian Scheidegger [email protected] Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer [email protected], [email protected] 7.3.2013

Mehr

Die Schnittstelle Comparable

Die Schnittstelle Comparable Die Schnittstelle Comparable Wir wollen Such- und Sortieroperationen für beliebige Objekte definieren. Dazu verwenden wir die vordefinierte Schnittstelle Comparable: public interface Comparable { int compareto(object

Mehr

Übungen zum Vortrag Backtracking mit Heuristiken

Übungen zum Vortrag Backtracking mit Heuristiken Übungen zum Vortrag Backtracking mit Heuristiken A) Java-Implementierung studieren von Backtracking im Labyrinth B) Pseudocode schreiben zu Backtracking beim n Damen Problem C) Implementierung der Springerwege

Mehr

Datenstrukturen und Algorithmen. Vorlesung 5

Datenstrukturen und Algorithmen. Vorlesung 5 Datenstrukturen und Algorithmen Vorlesung 5 Inhaltsverzeichnis Vorige Woche: Sortierte Listen Zyrkuläre Listen Verkettete Listen auf Arrays Heute betrachten wir: Skip Listen ADT Set ADT Map Iterator ADT

Mehr

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition. 1 Informatik I: Einführung in die Programmierung 11. Bäume e e Albert-Ludwigs-Universität Freiburg Bernhard Nebel 13. November 2015 13. November 2015 B. Nebel Info I 3 / 33 Bäume in der Informatik Bäume

Mehr

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Primitive Datentypen Fließkommazahlen float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Vorzeichen Exponent 8 bit Mantisse 23 bit double: Fließkommazahl nach IEEE 754 Standard mit 64 bit Vorzeichen

Mehr

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition. 1 Informatik I: Einführung in die Programmierung 11. Bäume e e Albert-Ludwigs-Universität Freiburg Bernhard Nebel 17. November 2017 17. November 2017 B. Nebel Info I 3 / 33 Bäume in der Informatik Bäume

Mehr

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 4 ArrayList, PriorityQueue, HashSet und HashMap

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 4 ArrayList, PriorityQueue, HashSet und HashMap Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 4 ArrayList, PriorityQueue, HashSet und HashMap Array List Dynamisches Array ArrayList vertritt ein Array mit variabler Länge Kapazität passt sich automatisch

Mehr

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

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 Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene

Mehr