Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Größe: px
Ab Seite anzeigen:

Download "Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps"

Transkript

1 Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

2 Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen:

3 Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: n Einfügen eines Elements n Löschen eines Elements

4 Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: n Einfügen eines Elements n Löschen eines Elements n Suchen eines Elements

5 Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: n Einfügen eines Elements n Löschen eines Elements n Suchen eines Elements n Anforderung: effizient auch bei grossen Mengen!

6 Mengen: Anwendungen (I) n Telefonbuch (Menge von Namen mit zugehörigen Telefonnummern) n Einfügen: Neue Telefonanschlüsse n Löschen: Aufgegebene Telefonanschlüsse n Suchen: Telefonnummer einer Person

7 Mengen: Anwendungen (II) n Nutzerverwaltung (Menge von Nutzern mit Passwörtern und/oder weiteren Informationen) n Einfügen: Neue Nutzer n Löschen: Ex-Nutzer n Suchen: Einloggen

8 Mengen: Anwendungen (II) n Nutzerverwaltung (Menge von Nutzern mit Passwörtern und/oder weiteren Informationen) n Einfügen: Neue Nutzer n Löschen: Ex-Nutzer n Suchen: Einloggen n Effizienz: Keine Wartezeit beim Einloggen, auch bei Millionen von Nutzern.

9 Mengen: Lösung mit Listen n Menge wird als Liste gespeichert

10 Mengen: Lösung mit Listen n Menge wird als Liste gespeichert. n Einfügen: zum Beispiel vorne anfügen (effizient)

11 Mengen: Lösung mit Listen n Menge wird als Liste gespeichert. n Einfügen: zum Beispiel vorne anfügen (effizient)

12 Mengen: Lösung mit Listen n Menge wird als Liste gespeichert. n Löschen: Durchlaufen der Liste bis zum Element (oder bis zum Ende, falls nicht vorhanden), Zeiger umhängen

13 Mengen: Lösung mit Listen n Menge wird als Liste gespeichert. n Suchen: Durchlaufen der Liste bis zum Element (oder bis zum Ende, falls nicht vorhanden)

14 Mengen: Lösung mit Listen n Falls die Menge n Elemente enthält, so ist der Aufwand fürs Suchen eines Elements im schlimmsten Fall proportional zu n.

15 Mengen: Lösung mit Listen n Falls die Menge n Elemente enthält, so ist der Aufwand fürs Suchen eines Elements im schlimmsten Fall proportional zu n. n Facebook: Zeit zum Einloggen wäre proportional zur Anzahl der Nutzer.

16 Mengen: Lösung mit Listen n Beispiel: Suche nach den letzten 100 Elementen in einer Liste von 10,000,000 Elementen

17 Mengen: Lösung mit Listen n Beispiel: Suche nach den letzten 100 Elementen in einer Liste von 10,000,000 Elementen List l; for (int i=0; i< ; ++i) l.push_front(i); //...and search for the 100 first ones for (int i=0; i<100; ++i) l.find(i);

18 Mengen: Lösung mit Listen n Beispiel: Suche nach den letzten 100 Elementen in einer Liste von 10,000,000 Elementen List l; for (int i=0; i< ; ++i) l.push_front(i); //...and search for the 100 first ones for (int i=0; i<100; ++i) l.find(i); 6.5 Sekunden

19 Mengen: Lösung mit Listen n Beispiel: Suche nach den letzten 100 Elementen in einer Liste von 10,000,000 Elementen List l; for (int i=0; i< ; ++i) l.push_front(i); dauern! //...and search for the 100 first ones for (int i=0; i<100; ++i) l.find(i); Facebook hat 1,000,000,000 Nutzer, eine Suche würde 6.5 Sekunden 6.5 Sekunden

20 Mengen: Lösung mit Listen n Beispiel: Suche nach den letzten 100 Elementen in einer Liste von 10,000,000 Elementen n Finden eines Elements: const Node* List::find (int key) { } for (const Node* p = head_; p!= 0; p = p>get_next()) if (p->get_key() == key) return p; return 0;

21 Mengen: Lösung mit Binären Suchbäumen. n Falls die Menge n Elemente enthält, so ist der Aufwand fürs Suchen eines Elements im schlimmsten Fall proportional zu log 2 n. n Facebook: Zeit zum Einloggen ist proportional zum Logarithmus der Anzahl der Nutzer.

22 Mengen: Lösung mit Binären Suchbäumen. n Falls die Menge n Elemente enthält, so ist der Aufwand fürs Suchen eines Elements im schlimmsten Fall proportional zu log 2 n. n Facebook: Zeit zum Einloggen ist proportional zum Logarithmus der Anzahl der Nutzer. log 2 (1,000,000,000) 30.

23 Mengen: Lösung mit Binären Suchbäumen. n Falls die Menge n Elemente enthält, so ist der Aufwand fürs Suchen eines Elements im schlimmsten Fall proportional zu log 2 n. n Auch Einfügen und Löschen geht in Zeit proportional to log 2 n.

24 Binärbäume, Definition und Terminologie n Ein binärer Baum ist entweder leer,...

25 Binärbäume, Definition und Terminologie n Ein binärer Baum ist entweder leer,... n oder er besteht aus einem Knoten (Kreis) n mit einem Schlüssel (hier: ganze Zahl),... 3

26 Binärbäume, Definition und Terminologie n Ein binärer Baum ist entweder leer,... n oder er besteht aus einem Knoten (Kreis) n mit einem Schlüssel (hier: ganze Zahl),... n und einem linken und rechten Teilbaum, die jeweils Binärbäume sind. 3

27 Binärbäume, Definition und Terminologie n Ein binärer Baum ist entweder leer,... n oder er besteht aus einem Knoten (Kreis) n mit einem Schlüssel (hier: ganze Zahl),... n und einem linken und rechten Teilbaum, die jeweils Binärbäume sind. 3 Wurzel des Baums Linker Teilbaum Rechter Teilbaum

28 Binäre Suchbäume n Ein Binärbaum heisst binärer Suchbaum, wenn er leer ist, oder wenn folgende Bedingungen gelten: n Sowohl der linke als auch der rechte Teilbaum sind binäre Suchbäume. n Der Schlüssel der Wurzel ist n > alle Schlüssel im linken Teilbaum, und n alle Schlüssel im rechten Teilbaum.

29 Binäre Suchbäume: Beispiel

30 Binäre Suchbäume: Beispiel Blätter des Baums

31 Binäre Suchbäume: Suchen nach einem Schlüssel 4 5?

32 Binäre Suchbäume: Suchen nach einem Schlüssel 4 = 5? nein

33 Binäre Suchbäume: Suchen nach einem Schlüssel ja 4 > 5? Nein, also muss die 5 rechts sein

34 Binäre Suchbäume: Suchen nach einem Schlüssel = 5? nein

35 Binäre Suchbäume: Suchen nach einem Schlüssel 4 3 Ja, also muss die 8 5 links sein. > 5? 1 nein

36 Binäre Suchbäume: Suchen nach einem Schlüssel = 5? nein

37 Binäre Suchbäume: Suchen nach einem Schlüssel Ja, also muss die 5 links sein. 6 > 5? 9 nein 2 5 7

38 Binäre Suchbäume: Suchen nach einem Schlüssel = 5? 7 Ja, Schlüssel gefunden!

39 Binäre Suchbäume: Suchen nach einem Schlüssel 4 0? müsste links von der 1 sein, Teilbaum ist aber leer 0 nicht da

40 Mengen: Lösung mit binären Suchbäumen n Speichere die Elemente der Menge als Schlüssel in einem binären Suchbaum!

41 Mengen: Lösung mit binären Suchbäumen n Speichere die Elemente der Menge als Schlüssel in einem binären Suchbaum! n Suchzeit ist proportional zur Höhe des Baums (Länge des längsten Pfades von der Wurzel bis zu einem Blatt).

42 Mengen: Lösung mit binären Suchbäumen Höhe 3 7

43 Mengen: Lösung mit binären Suchbäumen n Speichere die Elemente der Menge als Schlüssel in einem binären Suchbaum! n Suchzeit ist proportional zur Höhe des Baums (Länge des längsten Pfades von der Wurzel bis zu einem Blatt). n Einfügen und Löschen von Elementen?

44 Binäre Suchbäume: Einfügen n Neues Element suchen und als Blatt an der passenden Stelle anhängen!

45 Binäre Suchbäume: Einfügen 4 0 einfügen müsste links von der 1 sein, Teilbaum ist aber leer neues Blatt 2 5 7

46 Binäre Suchbäume: Einfügen 4 0 einfügen

47 Binäre Suchbäume: Einfügen n Neues Element suchen und als Blatt an der passenden Stelle anhängen! n Auch die Einfügezeit ist proportional zur Höhe des Baums.

48 Binäre Suchbäume: Löschen n Element suchen, seinen Knoten durch Rotationen zu einem Blatt machen, Blatt löschen!

49 Binäre Suchbäume: Löschen n Element suchen, seinen Knoten durch Rotationen zu einem Blatt machen, Blatt löschen! n Rotation: lokale Operation, welche die Positionen von Knoten verändert, nicht jedoch die Suchbaumeigenschaften.

50 Rotation eines Teilbaums s t B A B

51 Rotation eines Teilbaums s t C A B A < t B < s C

52 Rotation eines Teilbaums Rechtsrotation s t t s C A A B B C A < t B < s C = A < t B < s C

53 Rotation eines Teilbaums Rechtsrotation s Linksrotation t t s C A A B B C A < t B < s C = A < t B < s C

54 Binäre Suchbäume: Löschen 4 8 löschen

55 Binäre Suchbäume: Löschen 4 8 löschen C A 7 B Rechtsrotation (Linksrotation wäre auch möglich)

56 Binäre Suchbäume: Löschen 4 8 löschen A 8 2 B 7 9 C

57 Binäre Suchbäume: Löschen 4 8 löschen 3 6 B und C sind leere Bäume A 7 9 Linksrotation (Rechtsrotation wäre auch möglich) B C

58 Binäre Suchbäume: Löschen 4 8 löschen 3 6 B und C sind leere Bäume A 8 B C 7

59 Binäre Suchbäume: Löschen 4 8 löschen 3 6 A, B, C sind leere Bäume C Rechtsrotation (Linksrotation wäre nicht möglich) A 7 B

60 Binäre Suchbäume: Löschen 4 8 löschen 3 6 A, B, C sind leere Bäume A B 8 C

61 Binäre Suchbäume: Löschen 4 8 löschen delete 8

62 Binäre Suchbäume: Löschen n Element suchen, seinen Knoten durch Rotationen zu einem Blatt machen, Blatt löschen! n Rotation: lokale Operation, welche die Positionen von Knoten verändert, nicht jedoch die Suchbaumeigenschaften. n Auch die Löschzeit ist proportional zur Höhe des Baums (nicht mehr ganz so offensichtlich)

63 Die Höhe eines binären Suchbaums... n bestimmt die Laufzeit des n Suchens, n Einfügens, n Löschens.

64 Die Höhe eines binären Suchbaums... n bestimmt die Laufzeit des n Suchens, n Einfügens, n Löschens. n kann aber bereits bei einer ungünstigen Einfügereihenfolge sehr gross werden!

65 Die Höhe eines binären Suchbaums... n bestimmt die Laufzeit des n Suchens, n Einfügens, n Löschens. n kann aber bereits bei einer ungünstigen Einfügereihenfolge sehr gross werden! n Laufzeit im schlimmsten Fall nicht besser als bei einer Liste!

66 Die Höhe eines binären Suchbaums... Beispiel: Einfügen in sortierter Reihenfolge 1

67 Die Höhe eines binären Suchbaums... Beispiel: Einfügen in sortierter Reihenfolge 1 2

68 Die Höhe eines binären Suchbaums... Beispiel: Einfügen in sortierter Reihenfolge 1 2 3

69 Die Höhe eines binären Suchbaums... Beispiel: Einfügen in sortierter Reihenfolge Höhe = n-1, Baum sieht aus und verhält sich wie eine Liste. n

70 Abhilfe: Balancierung n Beim Einfügen und Löschen stets darauf achten, dass der Baum balanciert ist, (d.h. keine grossen Höhenunterschiede zwischen linken und rechten Teilbäumen)

71 Abhilfe: Balancierung n Beim Einfügen und Löschen stets darauf achten, dass der Baum balanciert ist, (d.h. keine grossen Höhenunterschiede zwischen linken und rechten Teilbäumen) n Verschiedene Möglichkeiten (mehr oder weniger kompliziert): n AVL-Bäume, Rot-Schwarz-Bäume,...

72 Abhilfe: Balancierung n Beim Einfügen und Löschen stets darauf achten, dass der Baum balanciert ist, (d.h. keine grossen Höhenunterschiede zwischen linken und rechten Teilbäumen) n Verschiedene Möglichkeiten (mehr oder weniger kompliziert): n AVL-Bäume, Rot-Schwarz-Bäume,... n Hier: Treaps (randomisierte Suchbäume)

73 Treap = Tree + Heap n Ein Binärbaum heisst Heap, wenn er leer ist, oder wenn folgende Bedingungen gelten: n Sowohl der linke als auch der rechte Teilbaum sind Heaps. n Der Schlüssel der Wurzel ist n das Maximum aller Schlüssel.

74 Heap: Schlüssel heissen Prioritäten n Ein Binärbaum heisst Heap, wenn er leer ist, oder wenn folgende Bedingungen gelten: n Sowohl der linke als auch der rechte Teilbaum sind Heaps. n Die Priorität der Wurzel ist n das Maximum aller Prioritäten.

75 Heap: Beispiel

76 Treaps n Ein Binärbaum heisst Treap, wenn jeder Knoten einen Schlüssel und eine Priorität hat, so dass folgende Eigenschaften gelten: n Der Baum ist ein binärer Suchbaum bzgl. der Schlüssel. n Der Baum ist ein Heap bzgl. der Prioritäten.

77 Treap: Beispiel Schlüssel Prioritäten 4, 9 3, 7 8, 8 1, 4 6, 6 9, 5 2, 3 5, 2 7, 1

78 Treaps: Eindeutigkeit n Satz: Für n Knoten mit verschiedenen Schlüsseln und Prioritäten gibt es genau einen Treap mit diesen Knoten.

79 Treaps: Eindeutigkeit n Satz: Für n Knoten mit verschiedenen Schlüsseln und Prioritäten gibt es genau einen Treap mit diesen Knoten. n Beweis: Die Wurzel ist der Knoten mit der höchsten Priorität; im linken Teilbaum sind alle Knoten mit kleineren und im rechten Teilbaum alle Knoten mit grösseren Schlüsseln. Mit Induktion sind die Teilbäume auch eindeutig.

80 Treaps mit zufälligen Prioritäten n Wir benutzen einen Treap als binären Suchbaum.

81 Treaps mit zufälligen Prioritäten n Wir benutzen einen Treap als binären Suchbaum. n Beim Einfügen eines neuen Schlüssels wird seine Priorität zufällig gewählt.

82 Treaps mit zufälligen Prioritäten n Wir benutzen einen Treap als binären Suchbaum. n Beim Einfügen eines neuen Schlüssels wird seine Priorität zufällig gewählt. n Wie bei normalen binären Suchbäumen: neuer Knoten wird neues Blatt.

83 Treaps mit zufälligen Prioritäten n Wir benutzen einen Treap als binären Suchbaum. n Beim Einfügen eines neuen Schlüssels wird seine Priorität zufällig gewählt. n Wie bei normalen binären Suchbäumen: neuer Knoten wird neues Blatt. n Zusätzlich muss die Treap-Eigenschaft wieder hergestellt werden!

84 Treaps: Einfügen 4, 9 0 einfügen, mit zufälliger Priorität 7.5 3, 7 8, 8 1, 4 6, 6 9, 5 2, 3 5, 2 7, 1

85 Treaps: Einfügen 4, 9 0 einfügen, mit zufälliger Priorität 7.5 3, 7 8, 8 1, 4 6, 6 9, 5 0, 7.5 2, 3 5, 2 7, 1 Neues Blatt

86 Treaps: Einfügen 4, 9 0 einfügen, mit zufälliger Priorität 7.5 3, 7 8, 8 1, 4 6, 6 9, 5 Heap-Eigenschaft verletzt: 4 < 7.5 0, 7.5 2, 3 5, 2 7, 1

87 Treaps: Einfügen 4, 9 0 einfügen, mit zufälliger Priorität 7.5 3, 7 8, 8 1, 4 6, 6 9, 5 0, 7.5 2, 3 5, 2 7, 1 Rechtsrotation!

88 Treaps: Einfügen 4, 9 0 einfügen, mit zufälliger Priorität 7.5 3, 7 8, 8 0, 7.5 6, 6 9, 5 1, 4 2, 3 5, 2 7, 1

89 Treaps: Einfügen 4, 9 0 einfügen, mit zufälliger Priorität 7.5 3, 7 8, 8 0, 7.5 Heap-Eigenschaft verletzt: 7 < 7.5 6, 6 9, 5 1, 4 2, 3 5, 2 7, 1

90 Treaps: Einfügen 4, 9 0 einfügen, mit zufälliger Priorität 7.5 3, 7 8, 8 0, 7.5 6, 6 9, 5 1, 4 2, 3 5, 2 Rechtsrotation! 7, 1

91 Treaps: Einfügen 4, 9 0 einfügen, mit zufälliger Priorität 7.5 0, 7.5 8, 8 3, 7 6, 6 9, 5 1, 4 2, 3 5, 2 7, 1

92 Treaps: Einfügen 4, 9 0 einfügen, mit zufälliger Priorität 7.5 0, 7.5 Heap-Eigenschaft ok, wir haben wieder einen Treap! 8, 8 3, 7 6, 6 9, 5 1, 4 2, 3 5, 2 7, 1

93 Treaps: Löschen n Element suchen, seinen Knoten durch Rotationen zu einem Blatt machen, Blatt löschen!

94 Treaps: Löschen n Element suchen, seinen Knoten durch Rotationen zu einem Blatt machen, Blatt löschen! n Stets so rotieren, dass der Knoten mit seinem Nachfolger höherer Priorität vertauscht wird. Das erhält die Heap- Eigenschaft.

95 Treaps: Löschen n Element suchen, seinen Knoten durch Rotationen zu einem Blatt machen, Blatt löschen! n Stets so rotieren, dass der Knoten mit seinem Nachfolger höherer Priorität vertauscht wird. Das erhält die Heap- Eigenschaft. n Suchbaum-Eigenschaft gilt wieder nach Löschen des Blatts.

96 Treaps: Laufzeit n Satz (Seidel, Aragon 1996): In einem Treap über n Knoten mit zufälligen Prioritäten ist der zeitliche Aufwand für eine Einfüge-, Lösch- oder Suchoperation im Erwartungswert proportional zu log 2 n.

97 Treaps: Laufzeit n Satz (Seidel, Aragon 1996): In einem Treap über n Knoten mit zufälligen Prioritäten ist der zeitliche Aufwand für eine Einfüge-, Lösch- oder Suchoperation im Erwartungswert proportional zu log 2 n. n Mehr dazu in der nächsten Stunde.

98 Mengen: Lösung mit Treaps n Zur Erinnerung: Suche nach den letzten 100 Elementen in einer Liste von 10,000,000 Elementen List l; for (int i=0; i< ; ++i) l.push_front(i); //...and search for the 100 first ones for (int i=0; i<100; ++i) l.find(i); 6.5 Sekunden

99 Mengen: Lösung mit Treaps n Neu: Suche nach den letzten 100 Elementen in einem Treap von 10,000,000 Elementen Treap t; for (int i=0; i< ; ++i) t.insert(i); //...and search for the 100 first ones for (int i=0; i<100; ++i) t.find(i); Sekunden

100 Sortieren mit Treaps n Folgerung: Durch Einfügen einer Folge von n Zahlen in einen Treap mit zufälligen Prioritäten kann die Folge in Zeit proportional zu n log 2 n sortiert werden.

101 Sortieren mit Treaps n Folgerung: Durch Einfügen einer Folge von n Zahlen in einen Treap mit zufälligen Prioritäten kann die Folge in Zeit proportional zu n log 2 n sortiert werden. n Gleicher optimaler Proportionalitätsfaktor wie Mergesort

102 Sortieren mit Treaps n Folgerung: Durch Einfügen einer Folge von n Zahlen in einen Treap mit zufälligen Prioritäten kann die Folge in Zeit proportional zu n log 2 n sortiert werden. n Gleicher optimaler Proportionalitätsfaktor wie Mergesort n Das Treap-basierte Verfahren ist im wesentlichen äquivalent zu Quicksort.

103 Treaps in C++ n Aehnlich wie bei Listen: n Klasse TreapNode für die Knoten n Jeder TreapNode speichert ausser Schlüssel und Priorität zwei Zeiger auf TreapNodes (linkes und rechtes Kind = Wurzeln des linken und rechten Teilbaums)

104 Treaps in C++ n Aehnlich wie bei Listen: n Klasse TreapNode für die Knoten n Jeder TreapNode speichert ausser Schlüssel und Priorität zwei Zeiger auf TreapNodes (linkes und rechtes Kind = Wurzeln des linken und rechten Teilbaums) n Klasse Treap; jeder Treap ist durch einen Zeiger auf den Wurzelknoten repräsentiert.

105 Die Klasse TreapNode class TreapNode! {! public:! // constructor! TreapNode( int key, int priority, TreapNode* left = 0, TreapNode* right = 0);!! // Getters! int get_key() const;! int get_priority() const;! const TreapNode* get_left() const;! const TreapNode* get_right() const;!!! private:! int key_;! double priority_;! TreapNode* left_;! TreapNode* right_;!! friend class Treap;! };!

106 Die Klasse TreapNode class TreapNode! {! public:! // constructor! TreapNode( int key, int priority, TreapNode* left = 0, TreapNode* right = 0);!! // Getters! int get_key() const;! int get_priority() const;! const TreapNode* get_left() const;! const TreapNode* get_right() const;!!! private:! int key_;! double priority_;! TreapNode* left_;! TreapNode* right_;!! friend class Treap;! };! Wie bei Facebook: Freunde dürfen auf private Daten und Methoden (Mitgliedsfunktionen) zugreifen.

107 Die Klasse Treap Die Viererbande class Treap { public: // default constructor: // POST: *this is an empty tree Treap(); // copy constructor // POST *this is a copy of other Treap(const Treap& other); // assignment operator // Post: other was assigned to *this Treap& operator= (const Treap& other); Konstruktor Copy- Konstruktor Zuweisungsoperator // Destructor ~Treap(); Destruktor

108 Die Klasse Treap Die Viererbande + Wurzel class Treap { public: // default constructor: // POST: *this is an empty tree Treap(); // copy constructor // POST *this is a copy of other Treap(const Treap& other); // assignment operator // Post: other was assigned to *this Treap& operator= (const Treap& other); Konstruktor Copy- Konstruktor Zuweisungsoperator // Destructor ~Treap(); private: TreapNode* root_; Destruktor Zeiger auf die Wurzel (0: leerer Treap)

109 Die Klasse Treap Einfügen void Treap::insert(const int key)! {! insert (root_, key, std::rand());! }!

110 Die Klasse Treap Einfügen void Treap::insert(const int key)! {! insert (root_, key, std::rand());! }! private Hilfsfunktion Zufällige Priorität

111 Die Klasse Treap Einfügen // PRE: current is a pointer in *this // POST: a new TreapNode with key and priority is inserted into the // subtree hanging off current void Treap::insert (TreapNode*& current, const int key, const int priority) { if (current == 0) current = new TreapNode (key, priority); else if (key < current->key_) { } insert (current->left_, key, priority); if (priority > current->get_priority()) rotate_right (current); } else { insert (current->right_, key, priority); } if (priority > current->get_priority()) rotate_left (current);

112 Die Klasse Treap Einfügen // PRE: current is a pointer in *this // POST: a new TreapNode with key and priority is inserted into the // subtree hanging off current void Treap::insert (TreapNode*& current, const int key, const int priority) { } if (current == 0) current = new TreapNode (key, priority); else if (key < current->key_) { insert (current->left_, key, priority); if (priority > current->get_priority()) rotate_right (current); } else { insert (current->right_, key, priority); } if (priority > current->get_priority()) rotate_left (current); 9, 10 current verweist auf eine leere Blattposition. 8, 8 current

113 Die Klasse Treap Einfügen // PRE: current is a pointer in *this // POST: a new TreapNode with key and priority is inserted into the // subtree hanging off current void Treap::insert (TreapNode*& current, const int key, const int priority) { } if (current == 0) current = new TreapNode (key, priority); else if (key < current->key_) { insert (current->left_, key, priority); if (priority > current->get_priority()) rotate_right (current); } else { insert (current->right_, key, priority); } if (priority > current->get_priority()) rotate_left (current); 9, 10 current verweist auf eine leere Blattposition. 8, 8 current 9, 10

114 Die Klasse Treap Einfügen // PRE: current is a pointer in *this // POST: a new TreapNode with key and priority is inserted into the // subtree hanging off current void Treap::insert (TreapNode*& current, const int key, const int priority) { } if (current == 0) current = new TreapNode (key, priority); else if (key < current->key_) { insert (current->left_, key, priority); if (priority > current->get_priority()) rotate_right (current); } else { insert (current->right_, key, priority); } if (priority > current->get_priority()) rotate_left (current); 9, 10 current verweist auf eine leere Blattposition. 8, 8 current 9, 10 Damit das klappt, muss current ein Alias des entsprechenden Zeigers im Baum sein, keine Kopie!

115 Die Klasse Treap Einfügen // PRE: current is a pointer in *this // POST: a new TreapNode with key and priority is inserted into the // subtree hanging off current void Treap::insert (TreapNode*& current, const int key, const int priority) { } if (current == 0) current = new TreapNode (key, priority); else if (key < current->key_) { insert (current->left_, key, priority); if (priority > current->get_priority()) rotate_right (current); } else { insert (current->right_, key, priority); } if (priority > current->get_priority()) rotate_left (current); 9, 10 current verweist auf eine leere Blattposition. 8, 8 current 9, 10 Heap-Eigenschaft ist noch verletzt; das wird weiter oben in der Rekursion repariert.

116 Die Klasse Treap Einfügen // PRE: current is a pointer in *this // POST: a new TreapNode with key and priority is inserted into the // subtree hanging off current void Treap::insert (TreapNode*& current, const int key, const int priority) { } if (current == 0) current = new TreapNode (key, priority); else 9 8 if (key < current->key_) { insert (current->left_, key, priority); if (priority > current->get_priority()) rotate_right (current); } else { insert (current->right_, key, priority); } if (priority > current->get_priority()) rotate_left (current); 9, 10 current verweist auf einen Knoten. 8, 8 current

117 Die Klasse Treap Einfügen // PRE: current is a pointer in *this // POST: a new TreapNode with key and priority is inserted into the // subtree hanging off current void Treap::insert (TreapNode*& current, const int key, const int priority) { } if (current == 0) current = new TreapNode (key, priority); else if (key < current->key_) { insert (current->left_, key, priority); if (priority > current->get_priority()) rotate_right (current); } else { insert (current->right_, key, priority); } if (priority > current->get_priority()) rotate_left (current); 9, 10 current verweist auf einen Knoten. A 8, 8 current 9, 10

118 Die Klasse Treap Einfügen // PRE: current is a pointer in *this // POST: a new TreapNode with key and priority is inserted into the // subtree hanging off current void Treap::insert (TreapNode*& current, const int key, const int priority) { } if (current == 0) current = new TreapNode (key, priority); else if (key < current->key_) { insert (current->left_, key, priority); if (priority > current->get_priority()) rotate_right (current); } else { 10 8 insert (current->right_, key, priority); } if (priority > current->get_priority()) rotate_left (current); 9, 10 current verweist auf einen Knoten. A 8, 8 current 9, 10

119 Die Klasse Treap Einfügen // PRE: current is a pointer in *this // POST: a new TreapNode with key and priority is inserted into the // subtree hanging off current void Treap::insert (TreapNode*& current, const int key, const int priority) { } if (current == 0) current = new TreapNode (key, priority); else if (key < current->key_) { insert (current->left_, key, priority); if (priority > current->get_priority()) rotate_right (current); } else { insert (current->right_, key, priority); } if (priority > current->get_priority()) rotate_left (current); 9, 10 current verweist auf einen Knoten. 8, 8 current 9, 10

120 Die Klasse Treap Einfügen // PRE: current is a pointer in *this // POST: a new TreapNode with key and priority is inserted into the // subtree hanging off current void Treap::insert (TreapNode*& current, const int key, const int priority) { } if (current == 0) current = new TreapNode (key, priority); else if (key < current->key_) { insert (current->left_, key, priority); if (priority > current->get_priority()) rotate_right (current); } else { insert (current->right_, key, priority); } if (priority > current->get_priority()) rotate_left (current); A 9, 10 current verweist auf einen Knoten. 8, 8 9, 10 current

121 Die Klasse Treap Einfügen // PRE: current is a pointer in *this // POST: a new TreapNode with key and priority is inserted into the // subtree hanging off current void Treap::insert (TreapNode*& current, const int key, const int priority) { } if (current == 0) current = new TreapNode (key, priority); else if (key < current->key_) { insert (current->left_, key, priority); if (priority > current->get_priority()) rotate_right (current); } else { insert (current->right_, key, priority); } if (priority > current->get_priority()) rotate_left (current); A 9, 10 current verweist auf einen Knoten. 8, 8 9, 10 current Fertig!

Mengen. Binäre Suchbäume. Mengen: Anwendungen (II) Mengen: Lösung mit Listen 12/3/12. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Mengen. Binäre Suchbäume. Mengen: Anwendungen (II) Mengen: Lösung mit Listen 12/3/12. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps // Mengen Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps n Ziel: ufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: n eines Elements n eines Elements

Mehr

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: Mengen n Ziel: Aufrechterhalten einer

Mehr

7 Weitere Baumstrukturen und Heapstrukturen

7 Weitere Baumstrukturen und Heapstrukturen 7 Weitere Baumstrukturen und Heapstrukturen Man kann kurze Suchzeiten in Baumstrukturen erreichen durch Rebalancierung bei Einfügungen und Löschungen (AVL Bäume, gewichtsbalancierte Bäume, Bruderbäume,

Mehr

Umstrukturierung durch Rotationen

Umstrukturierung durch Rotationen Umstrukturierung durch Rotationen (Folie 109, Seite 52 im Skript) P P T A A D B T B C C D Eine Rechtsrotation um T. Die Suchbaumeigenschaft bleibt erhalten. B, C, D können nur aus externen Knoten bestehen.

Mehr

12/18/12 // POST: values of a and b are interchanged void swap (int& a, int& b) { int c = a; a = b; b = c;

12/18/12 // POST: values of a and b are interchanged void swap (int& a, int& b) { int c = a; a = b; b = c; Generische Funktionalität Generisches Programmieren Template-Funktionen, Template- Klassen, generisches Sortieren, Fibonacci- und Ackermann-Zahlen zur Kompilierungszeit n Viele Funktionen braucht man für

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 11 (1.6.2016) Binäre Suchbäume III Algorithmen und Komplexität Tiefe eines binären Suchbaums Worst-Case Laufzeit der Operationen in binären

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

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

Informatik II Bäume zum effizienten Information Retrieval

Informatik II Bäume zum effizienten Information Retrieval lausthal Informatik II Bäume zum effizienten Information Retrieval. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Binäre Suchbäume (binary search tree, BST) Speichere wieder Daten als "Schlüssel

Mehr

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen Algorithmen und Datenstrukturen 2 Dynamische Datenstrukturen Algorithmen für dynamische Datenstrukturen Zugriff auf Variable und Felder durch einen Ausdruck: Namen durch feste Adressen referenziert Anzahl

Mehr

18. Natürliche Suchbäume

18. Natürliche Suchbäume Wörterbuchimplementationen 1. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Hashing: Implementierung von Wörterbüchern mit erwartet sehr schnellen Zugriffszeiten. Nachteile

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 10 (28.5.2018) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch

Mehr

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

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16 Natürliche Bäume (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 18:16 Natürliche Bäume 1/16 Bäume Begriffe (1/2) Bäume sind verallgemeinerte Listenstrukturen ein

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

Informatik II, SS 2016

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

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Balancieren eines Suchbaums Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 396 Baumgestalt vs. Zeitkomplexität Vorteile eines ausgeglichenen binären Suchbaums

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

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

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

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen. Wiederholung Baum: Gerichteter Graph, der die folgenden drei Bedingungen erfüllt: Es gibt einen Knoten, der nicht Endknoten einer Kante ist. (Dieser Knoten heißt Wurzel des Baums.) Jeder andere Knoten

Mehr

18. Natürliche Suchbäume

18. 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

Randomisierte Datenstrukturen

Randomisierte Datenstrukturen Seminar über Algorithmen DozentInnen: Helmut Alt, Claudia Klost Randomisierte Datenstrukturen Ralph Schäfermeier 13. 2. 2007 Das Verwalten von Mengen, so dass ein schneller Zugriff auf deren Elemente gewährleistet

Mehr

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

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure 7. Dynamische Datenstrukturen Bäume Informatik II für Verkehrsingenieure Übersicht dynamische Datenstrukturen Wozu? Oft weiß man nicht von Beginn an, wieviele Elemente in einer Datenstruktur untergebracht

Mehr

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT Komplexität eines Algorithmus Algorithmen verbrauchen Ressourcen Rechenzeit

Mehr

Prüfung Algorithmen und Datenstrukturen I

Prüfung Algorithmen und Datenstrukturen I Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IF 3 B Wintersemester 2014/15 Prüfung Algorithmen und Datenstrukturen I Datum : 20.01.2015, 10:30 Uhr

Mehr

Algorithmen und Datenstrukturen Musterlösung 5

Algorithmen und Datenstrukturen Musterlösung 5 Algorithmen und Datenstrukturen Musterlösung 5 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

ADS 1: Algorithmen und Datenstrukturen

ADS 1: Algorithmen und Datenstrukturen ADS 1: Algorithmen und Datenstrukturen Teil IX Uwe Quasthoff Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 1 Dezember 017 [Letzte Aktualisierung: 04/1/017, 10:56]

Mehr

Christian Rieck, Arne Schmidt

Christian Rieck, Arne Schmidt Institute of Operating Systems and Computer Networks Algorithms Group Algorithmen und Datenstrukturen Wintersemester 207/208 Übung#5, 2.2.207 Christian Rieck, Arne Schmidt Bäume Satz Jeder gerichtete Baum

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II und Red-Black-Trees Dr. Georg Sauthoff 1 AG Praktische Informatik July 1, SoSe 2011 1 gsauthof@techfak.uni-bielefeld.de Suchbäume (Indexdatenstrukturen) Zugriff in O(logn)

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

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

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

5 Bäume. 5.1 Suchbäume. ein geordneter binärer Wurzelbaum. geordnete Schlüsselwertmenge. heißt (schwach) sortiert, g.d.w. gilt:

5 Bäume. 5.1 Suchbäume. ein geordneter binärer Wurzelbaum. geordnete Schlüsselwertmenge. heißt (schwach) sortiert, g.d.w. gilt: 5 Bäume 5.1 Suchbäume Sei ein geordneter binärer Wurzelbaum. Sei Abbildung der Knotenmenge eine in eine vollständig geordnete Schlüsselwertmenge. heißt (schwach) sortiert, g.d.w. gilt: Falls sortiert ist,

Mehr

Programmiertechnik II

Programmiertechnik II 2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 15b (13.06.2018) Graphenalgorithmen IV Algorithmen und Komplexität Prims MST-Algorithmus A = while A ist kein Spannbaum do e = u, v ist

Mehr

Prüfung Algorithmen und Datenstrukturen I

Prüfung Algorithmen und Datenstrukturen I Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IF 3 B Wintersemester 2016/17 Prüfung Algorithmen und Datenstrukturen I Datum : 23.01.2017, 08:30 Uhr

Mehr

Algorithmen und Datenstrukturen. Kapitel 4: Suchverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen. Kapitel 4: Suchverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Algorithmen und Datenstrukturen Kapitel 4: Suchverfahren Skript zur Vorlesung Algorithmen und Datenstrukturen Sommersemester

Mehr

18. Vererbung und Polymorphie

18. Vererbung und Polymorphie 590 18. Vererbung und Polymorphie Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens (Ausdrucks-)Bäume 591 -(3-(4-5))*(3+4*5)/6

Mehr

elementare Datenstrukturen

elementare Datenstrukturen elementare Datenstrukturen Wie die Daten das Laufen lernten Andreas Ferber af@myipv6.de elementare Datenstrukturen p./40 KISS elementare Datenstrukturen p./40 KISS (Keep It Simple, Stupid) Immer die einfachste

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

7. Vererbung und Polymorphie

7. Vererbung und Polymorphie 210 7. Vererbung und Polymorphie Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens (Ausdrucks-)Bäume -(3-(4-5))*(3+4*5)/6

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

Übung Algorithmen I

Übung Algorithmen I Übung Algorithmen I.6.5 Christoph Striecks Christoph.Striecks@kit.edu (Mit Folien von Julian Arz, Timo Bingmann und Sebastian Schlag.) Roadmap Hinweise zur Übungsklausur (Weitere) Traversierungen von Binärbäumen

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 17/18. Kapitel 14. Bäume. Bäume 1 Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1 Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume Übersicht Datenstrukturen und lgorithmen Vorlesung : Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-/dsal/ 1 Suche Einfügen

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

Literatur: Kapitel 2.1 des Skripts Rot-Schwarz-Bäume Kapitel 2.2 des Skripts Treaps Cormen. Kapitel 13, Red-Black-Trees

Literatur: Kapitel 2.1 des Skripts Rot-Schwarz-Bäume Kapitel 2.2 des Skripts Treaps Cormen. Kapitel 13, Red-Black-Trees Algorithmische Anwendungen WS 2006/2007 Praktikum 3: Aufgabe 1: Einfügen eines Knotens ist einen Rot-Schwarz-Baum Aufgabe 2: Erklärungen für die Beobachtungen auf Folie 2.1/67 Aufgabe 3: Zeige wie RB-DELETE-FIXUP

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

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für "balanciert":

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für balanciert: Balancierte Bäume Aufwand, ein Element zu finden, entspricht der Tiefe des gefundenen Knotens im worst case = Tiefe des Baumes liegt zwischen log N und N Definition für "balanciert": es gibt verschiedene

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Sortierte Folgen Maike Buchin 30.5., 1.6., 13.6.2017 Sortierte Folgen Häufiges Szenario: in einer Menge von Objekten mit Schlüsseln (aus geordnetem Universum) sollen Elemente

Mehr

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

Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden 5.6.2 AVL-Bäume Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden AVL-Bäume, benannt nach ihren Erfindern G. M. Adelson- Velskii und E. M. Landis,

Mehr

19. Vererbung und Polymorphie

19. Vererbung und Polymorphie 667 19. Vererbung und Polymorphie Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens (Ausdrucks-)Bäume -(3-(4-5))*(3+4*5)/6

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 13. Vorlesung Binäre Suchbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Dynamische Menge verwaltet Elemente einer sich ändernden Menge

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 13. Bäume. Bäume 1 Kapitel 13 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

Mehr

18. Vererbung und Polymorphie

18. Vererbung und Polymorphie 617 18. Vererbung und Polymorphie Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens (Ausdrucks-)Bäume -(3-(4-5))*(3+4*5)/6

Mehr

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

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel Algorithmen und Datenstrukturen Bäume M. Herpers, Y. Jung, P. Klingebiel 1 Lernziele Baumstrukturen und Ihre Verwendung kennen Grundbegriffe zu Bäumen anwenden können Baumstruktur in C anlegen können Suchbäume

Mehr

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen Datenstrukturen & Algorithmen Übersicht Rot-schwarz Bäume Eigenschaften Einfügen Matthias Zwicker Universität Bern Frühling 2009 2 Rot-schwarz Bäume Binäre Suchbäume sind nur effizient wenn Höhe des Baumes

Mehr

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion Abschnitt 1 Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion Aufgabe 1: Binäre Suchbäume: Iteratives Suchen/Einfügen/Löschen Das Material dieser Übung enthält in der Klasse Tree0 die

Mehr

Binäre Suchbäume. Organisatorisches. VL-10: Binäre Suchbäume. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger.

Binäre Suchbäume. Organisatorisches. VL-10: Binäre Suchbäume. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger. Organisatorisches VL-10: inäre Suchbäume (Datenstrukturen und lgorithmen, SS 17) Gerhard Woeginger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11: 12:00 Übungen: Tim Hartmann,

Mehr

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS KIT Julian Universität Arz, des Timo LandesBingmann, Baden-Württemberg Sebastian und Schlag nationales 7.

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6 Grundlagen der Algorithmen und Datenstrukturen Kapitel 6 Christian Scheideler + Helmut Seidl SS 2009 25.05.09 Kapitel 6 1 Priority Queue M: Menge von Elementen Jedes Element e identifiziert über key(e).

Mehr

19. Vererbung und Polymorphie

19. Vererbung und Polymorphie (Ausdrucks-)Bäume 19. Vererbung und Polymorphie Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens -(3-(4-5))*(3+4*5)/6

Mehr

Dynamische Mengen. Realisierungen durch Bäume

Dynamische Mengen. Realisierungen durch Bäume Dynamische Mengen Eine dynamische Menge ist eine Datenstruktur, die eine Menge von Objekten verwaltet. Jedes Objekt x trägt einen eindeutigen Schlüssel key[x]. Die Datenstruktur soll mindestens die folgenden

Mehr

Vereinfachen wir diese Rekursionsgleichung zunächst: E ˆT n = 1 n. = 1 n

Vereinfachen wir diese Rekursionsgleichung zunächst: E ˆT n = 1 n. = 1 n Problem: E(max{X, Y }) E(X ) + E(Y ) korrekt, aber zu ungenau. (Folie 83, Seite 41 im Skript) E(max{X, Y }) max{e(x ), E(Y )} genau genug, aber zu unkorrekt. Führe neue Zufallsvariablen ein: ˆT n = 2 Tn,

Mehr

Kapitel Andere dynamische Datenstrukturen

Kapitel Andere dynamische Datenstrukturen Institute of Operating Systems and Computer Networks Algorithms Group Kapitel 4.8-4.11 Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2017/2018 Vorlesung#13, 12.12.2017

Mehr

Kapitel Andere dynamische Datenstrukturen

Kapitel Andere dynamische Datenstrukturen Institute of Operating Systems and Computer Networks Algorithms Group Kapitel 4.8-4.11 Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2018/2019 Vorlesung#15, 18.12.2018

Mehr

Algorithmentheorie Treaps

Algorithmentheorie Treaps Algorithentheorie 04 - Treaps Prof. Dr. S. Albers Das Wörterbuch-Proble Gegeben: Universu (U,

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr. Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Fortgeschrittene Datenstrukturen Such-Algorithmen

Mehr

Prüfung Informatik D-MATH/D-PHYS :00 17:00

Prüfung Informatik D-MATH/D-PHYS :00 17:00 Prüfung Informatik D-MATH/D-PHYS 9. 8. 0 5:00 7:00 Prof. Bernd Gartner Kandidat/in: Name:. Vorname:. Stud.-Nr.:. Ich bezeuge mit meiner Unterschrift, dass ich die Prufung unter regularen Bedingungen ablegen

Mehr

Datenkapselung: public / private

Datenkapselung: public / private 627 18. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Datenkapselung:

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

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 156, Seite 56 im Skript) Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die letzte Ebene vollständig besetzt ist,

Mehr

Algorithmen I. Tutorium 1-6. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-6. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-6. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-23 Überblick 1 Binäre Suchbäume 2 Dennis Felsing Algorithmen I 2/20 Binäre

Mehr

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

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden Algorithmen und Datenstrukturen 11. April 2018 B6. Binäre Suchbäume a Algorithmen und Datenstrukturen B6. Binäre Suchbäume 1 Marcel Lüthi and Gabriele Röger Universität Basel 11. April 2018 a Folien basieren

Mehr

Algorithmen und Datenstrukturen I Bruder-Bäume

Algorithmen und Datenstrukturen I Bruder-Bäume Algorithmen und Datenstrukturen I Bruder-Bäume Prof. Dr. Oliver Braun Letzte Änderung: 11.12.2017 10:50 Algorithmen und Datenstrukturen I, Bruder-Bäume 1/24 Definition ein binärer Baum heißt ein Bruder-Baum,

Mehr

Programmiertechnik II

Programmiertechnik II Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B7. Balancierte Bäume 1 Marcel Lüthi and Gabriele Röger Universität Basel 13. April 2018 1 Folien basieren auf Vorlesungsfolien von Sedgewick & Wayne https://algs4.cs.princeton.edu/lectures/33balancedsearchtrees-2x2.pdf

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - Balancierte Bäume, AVL-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei

Mehr

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form. für Informatik Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Vollständige Induktion): Finden Sie eine geschlossene Form für die

Mehr

2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus

2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus 2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus {0, 1,..., B 1} d in Zeit O(d(n + B)) sortiert werden, indem sie zuerst gemäß dem letzten

Mehr

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume. B-Bäume. AVL-Bäume Treaps Splay-Bäume

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume. B-Bäume. AVL-Bäume Treaps Splay-Bäume Teil 1: Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume AVL-Bäume Treaps Splay-Bäume B-Bäume M.O.Franz; Oktober 2007 Algorithmen und Datenstrukturen -

Mehr

Datenstrukturen. einfach verkettete Liste

Datenstrukturen. einfach verkettete Liste einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten

Mehr

Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume

Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 12./13. VO DAP2 SS 2009 28.5./2.6.2009 1 Motivation Warum soll

Mehr

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

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume

Mehr

3. Funktionales Programmieren 3.2 Algorithmen auf Listen und Bäumen. Heapsort verfeinert die Idee des Sortierens durch Auswahl:

3. Funktionales Programmieren 3.2 Algorithmen auf Listen und Bäumen. Heapsort verfeinert die Idee des Sortierens durch Auswahl: Heapsort 3. Funktionales Programmieren 3.2 Algorithmen auf Listen und Bäumen Heapsort verfeinert die Idee des Sortierens durch Auswahl: Minimum bzw. Maximum wird nicht durch lineare Suche gefunden, sondern

Mehr

Programmiertechnik II

Programmiertechnik II Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...

Mehr

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

Trees. November 14, Algorithms & Datastructures 2 Exercises WT 2017 Trees November 14, 2017 Algorithms & Datastructures 2 Exercises WT 2017 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz anzengruber@pervasive.jku.at Binärbaum

Mehr

Datenstrukturen und Algorithmen SS07

Datenstrukturen und Algorithmen SS07 Datenstrukturen und Algorithmen SS07 Datum: 25.4.2007 Michael Belfrage mbe@student.ethz.ch belfrage.net/eth Programm von Heute Nachbesprechung Serie 4 Challenge der Woche Traversierung von Bäumen Pre-,

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