Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps
|
|
- Käthe Schmitt
- vor 5 Jahren
- Abrufe
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, 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
MehrBinä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
Mehr7 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,
MehrUmstrukturierung 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.
Mehr12/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
MehrInformatik 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
Mehr9. 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
MehrAnwendungsbeispiel 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
MehrInformatik 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
MehrAlgorithmen 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
Mehr18. 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
MehrInformatik 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
MehrInformatik 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
MehrNatü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
MehrDatenstrukturen 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
MehrInformatik 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:
MehrInformatik 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
MehrVorlesung 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
MehrVorlesung 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
MehrInformatik 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:
MehrWiederholung. 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
Mehr18. 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
MehrRandomisierte 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
Mehr7. 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
MehrKomplexitä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
MehrPrü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
MehrAlgorithmen und Datenstrukturen Musterlösung 5
Algorithmen und Datenstrukturen Musterlösung 5 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann
MehrDatenstrukturen & 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
Mehr13. 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),
MehrADS 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]
MehrChristian 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
MehrAlgorithmen 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)
MehrInformatik 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:
MehrInformatik 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,
MehrAlgorithmen 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
Mehr5 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,
MehrProgrammiertechnik 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
MehrInformatik 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
MehrPrü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
MehrAlgorithmen 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
Mehr18. 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
Mehrelementare 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 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 (
Mehr7. 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
Mehr1 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.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
MehrVorlesung 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
MehrEinfü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
MehrEinfü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 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
Mehr1 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
MehrLiteratur: 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
MehrBä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
MehrBalancierte 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
MehrVorlesung 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
MehrEinfache 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,
Mehr19. 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
MehrAlgorithmen 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
MehrEinfü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
Mehr18. 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
MehrAlgorithmen 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
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
MehrAufgaben, 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
MehrBinä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,
MehrINSTITUT 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.
MehrGliederung. 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
MehrGrundlagen 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).
Mehr19. 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
MehrDynamische 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
MehrVereinfachen 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,
MehrKapitel 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
MehrKapitel 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
MehrAlgorithmentheorie Treaps
Algorithentheorie 04 - Treaps Prof. Dr. S. Albers Das Wörterbuch-Proble Gegeben: Universu (U,
MehrProgramm 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
MehrPrü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
MehrDatenkapselung: public / private
627 18. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Datenkapselung:
MehrBä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
MehrDatenstrukturen & 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
MehrSuchen 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,
MehrAlgorithmen 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
MehrB6.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
MehrAlgorithmen 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,
MehrProgrammiertechnik 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,...
MehrAlgorithmen 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
MehrVorlesung 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
Mehr2 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
Mehr2.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
MehrTeil 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 -
MehrDatenstrukturen. 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
MehrKap. 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
MehrBä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
Mehr3. 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
MehrProgrammiertechnik 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,...
MehrTrees. 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
MehrDatenstrukturen 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-,
MehrTeil 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