Seminarausarbeitung Entwurf und Analyse von Datenstrukturen. Splay Trees. Mirco Lukas und Alexander Werthmann. Datum:

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Seminarausarbeitung Entwurf und Analyse von Datenstrukturen. Splay Trees. Mirco Lukas und Alexander Werthmann. Datum: 26.06.2013"

Transkript

1 Julius-Maximilians-Universität Würzburg Institut für Informatik Lehrstuhl für Informatik I Effiziente Algorithmen und wissensbasierte Systeme Seminarausarbeitung Entwurf und Analyse von Datenstrukturen Splay Trees Mirco Lukas und Alexander Werthmann Datum: Betreuer: Dr. Jan-Hendrik Haunert

2 Inhaltsverzeichnis 1 Anwendungsbereich des SplayTrees 3 2 Rotationen eines Splay Trees Einführung Zick-Rotation Zack-Rotation Zick-Zick-Rotation und Zack-Zack-Rotation Zack-Zick-Rotation und Zick-Zack-Rotation Wörterbuchoperationen Splay(x) Search(k) Insert(k,v) Remove(k) Laufzeitanalyse Einführung: Amortisierte Analyse Laufzeitanalyse von splay() Laufzeitanalyse von search() Laufzeitanalyse von insert() Laufzeitanalyse von remove() Zusammenfassung Anhang: Quellen der Präsentation 16 Literaturverzeichnis 17 2

3 1 Anwendungsbereich des SplayTrees Man stelle sich eine große Kundendatenbank vor, die als Binärbaum verwaltet werden soll. Die einzelnen Kundenfilialen, die diese Datenbank benutzen, benötigen allerdings hauptsächlich nur eine kleine Teilmenge der Datenbank, um ihre Arbeit zu erledigen (z.b. pro Filiale hauptsächliche die Kunden der Stadt von der entsprechenden Filiale). Trotzdem soll aber jede Filiale jederzeit auf die gesamte Datenbank zugreifen können. Die Abbildung 1.1 zeigt in einem Beispiel die Problematik dabei: Die Knoten x 8, x 9..., x 13 werden mit sehr hoher Wahrscheinlichkeit bearbeitet, die andere Knoten hingegen mit viel geringerer Wahrscheinlichkeit. Abb. 1.1: Bsp. Zugriffsstatistik auf Knoten der Kundendatenbank Der Splay-Tree optimiert den Zugriff auf wenige Knoten, die aber häufig benötigt werden. Dies erreicht er, indem er jeden aktuell gesuchten Knoten mit Hilfe geschickter Rotationen zur Wurzel macht. So wird erzielt, dass die häufig gesuchten Knoten sich nach einer gewissen Anzahl von Operationen in den oberen Schichten des Baumes befinden und so für weitere, noch folgende Operationen, schneller zur Verfügung stehen. 3

4 2 Rotationen eines Splay Trees 2.1 Einführung Beim Ausführen des Befehls splay() wird der angefragte Knoten nach oben transportiert. Es gibt insgesamt sechs mögliche Rotationen in einem Splay Tree, wobei jeweils zwei symmetrisch sind: Zick- oder Rechts-Rotation mit symmetrischer Zack- oder Linksrotation 1 Zick-Zick-Rotation mit symmetrischer Zack-Zack-Rotation Zick-Zack-Rotation mit symmetrischer Zack-Zick-Rotation Im folgenden werden die Rotationen genauer erläutert. Eine sehr gute Veranschaulichung liefert [Gog07] mit einer Web-Applikation auf Java-Basis. 2.2 Zick-Rotation Für einen Knoten, der nur einen Vaterknoten, aber keinen Großvaterknoten hat, verwendet man eine einfache Rotation. Ist der Knoten ein linkes Kind, so wird es rechtsrotiert. Abb. 2.1: Vorgehen bei der Rechtsrotation Man beachte, dass die Knoten wie in einem Binärbaum üblich in Abb. 2.1 so sortiert sind, dass der kleinste Knoten ganz links und der größte ganz rechts steht. Die 10, ursprünglich Vaterknoten der 5, wird nun zu deren linken Kind. Da die 5 ebenfalls Kinder hat, wird das linke an die 10 gehängt. Somit ergibt sich der Baum in Abb Bei der Abbildung 2.2 erkennt man, dass die Binärbaum-Eigenschaft 2 erhalten bleibt. Algorithmus 1 zeigt die Implementierung der Rechtsrotation. 1 Die Benennung der Rotationen als Zick bzw. Zack ist für Splay Trees gängig und in allen Quellen so zu finden. Daher werden wir den Begriff ebenfalls verwenden. 2 Kleinstes Element links, größtes Element rechts 4

5 Abb. 2.2: Der Baum nach der Rechtsrotation Algorithmus 1: Rechtsrotation Eingabe : Knoten h, um den rechtsrotiert werden soll 1 Node x = h.left 2 h.left = x.right 3 x.right = h 2.3 Zack-Rotation Hier tritt genau der symmetrische Fall ein. Nehmen wir die Grafik nach der Rechtsrotation (Abb. 2.2) her. Mit dem Pseudocode 2 kann der Baum wieder in den Ursprunszustand (Abb. 2.1) überführt werden. Algorithmus 2: Linksrotation Eingabe : Knoten h, um den linksrotiert werden soll 1 Node x = h.right 2 h.right = x.left 3 x.left = h Die Zick- und die Zackrotation zusammen bilden die Grundlage für alle erweiterten Rotationen. 2.4 Zick-Zick-Rotation und Zack-Zack-Rotation Diese Rotation wird durchgeführt, falls ein Knoten einen Großvater hat und es das linke Kind seines Vaters ist, der wiederum linkes Kind seines Vaters ist. Gegeben sei der Baum in Abb 2.3. Der Knoten soll nun an die Wurzel gespült werden. Hierzu führt man zwei Rechtsrotationen aus, zuerst um die 18, dann um die 15 (vgl. Abb. 2.4). 3. Die Zack-Zack-Rotation funktioniert wieder analog. Man lese die Abb 2.4 von rechts nach links. 3 [And10], 12f. 5

6 Abb. 2.3: Der Baum vor der Rotation Abb. 2.4: Das Aussehen eines Binärbaums bei einer Zick-Zick-Rotation 2.5 Zack-Zick-Rotation und Zick-Zack-Rotation Auch hier führt man zwei Rotationen durch. Allerdings ist hier der Knoten das rechte Kind (Vgl. Abb. 2.5). Abb. 2.5: Das Aussehen eines Binärbaums bei einer Zick-Zick-Rotation Die Zick-Zack-Rotation funktioniert wieder analog. Man lese die Abb 2.5 von rechts nach links. 6

7 3 Wörterbuchoperationen Wir wollen nun die Wörterbuchoperationen des SplayTrees, also die Operationen für das Suchen, Einfügen und Löschen von Knoten, anhand von Pseudocodes vorstellen Splay(x) Die Splaymethode analysiert die Grandparent-Parent-Konstellation des Eingabeknoten x. Es wird also festgestellt, ob x und sein Parent linke oder rechte Kinder ihres Parents sind. Nun führt die Splaymethode in den Zeilen 8-19 für jede Knotenkonstellation die jeweils richtige Doppelrotation (siehe Kap. 2.4 und 2.5) aus, um x nach oben zu rotieren. Falls x bereits Kind der Wurzel des Baumes ist, muss nur einmal rotiert werden. Die While-Schleife in Zeile 1 hat als Bedingung ϕ(x) nil, damit solange rotiert wird, bis x Wurzel des Baumes geworden ist, denn die Wurzel hat keinen Parent. 1 Die Pseudocodes wurden auf Basis von verschiedenen Implementierungen aus dem Internet oder teils auch völlig frei selbst erstellt. Sie haben daher keine Quellenangaben. 7

8 Algorithmus 3: Splay(Node x) Eingabe : Knoten x, der zur Wurzel transportiert werden soll 1 while ϕ(x)!= nil do 2 y = ϕ(x) 3 z = ϕ(y) 4 if x == root.left then 5 RightRotate(root) 6 if x == root.right then 7 LeftRotate(root) 8 if x == left[y] and y == left[z] then 9 Right-Rotate(z) 10 Right-Rotate(y) 11 else if x == right[y] and y == right[z] then 12 Left-Rotate(z) 13 Left-Rotate(y) 14 else if x == right[y] and y == left[z] then 15 Left-Rotate(y) 16 Right-Rotate(z) 17 else if x == left[y] and y == right[z] then 18 Right-Rotate(y) 19 Left-Rotate(z) 3.2 Search(k) Die Suchoperation soll den Knoten mit Schlüssel k im Baum finden und zur neuen Wurzel des Baumes machen. Der Pseudocode dazu ist denkbar einfach: Es wird in den Zeilen 3-10 die bereits bekannte Binärbaumsuche angewandt. Ist die Suche beendet, so wird der Knoten am Ende noch zur Wurzel gespült und zurückgegeben. Falls der Knoten mit dem gewünschten Schlüssel jedoch nicht gefunden wurde, wird der Knoten, an dem die Binärsuche endet also der potentielle Parent des Knoten x mit Schlüssel k zur Wurzel gespült. Diesen wichtigen Nebeneffekt werden wir uns bei den anderen beiden Wörterbuchoperationen noch zu Nutze machen. 8

9 Algorithmus 4: Search(Node root, Key k) Eingabe : Schlüssel k, dessen Knoten -falls vorhanden- zur Wurzel transportiert werden soll 1 z = root 2 p = root 3 while z!= nil do 4 p = z; 5 if z.key > k then 6 z = z.left 7 else if z.key < k then 8 z = z.right 9 else 10 break 11 if z == nil then 12 z = p 13 splay(z) 14 return root 3.3 Insert(k,v) Bei der Analyse der Einfügeoperation fallen sofort zwei Spezialfälle auf: 1. Der Fall, dass der Baum leer ist, in Zeilen 1-3: Hier können wir aus k und v einfach einen neuen Knoten erzeugen und diesen als Wurzel in den Baum einsetzen. 2. Die Möglichkeit, dass bereits ein anderer Knoten mit Schlüssel k im Baum existiert, in Zeile 17f.: Wenn nach der Binärbaumsuche in Zeile 4 der Schlüssel k weder größer noch kleiner als root.k ist, sind die Schlüssel identisch und wir überschreiben einfach die alten Nutzdaten root.v mit den neuen Daten v, ohne einen neuen Knoten zu erzeugen. Ist aber noch kein Schlüssel k im Baum benutzt, so spült search(k) den potentiellen Parent von einem Knoten mit Schlüssel k zur Wurzel. Wir können nun den Einfügevorgang bequem an der Wurzel durchführen, indem wir einen neuen Knoten n erzeugen und den bisherigen Wurzelknoten als linkes(rechtes) Kind von n setzen, falls die Wurzel kleiner(größer) n ist. 9

10 Algorithmus 5: Insert(Key k, Value v) Eingabe : Wertepaar aus Schlüssel k und Nutzdaten v, das nach der Operation als neuer Knoten im Splaytree stehen soll 1 if root == nil then 2 Let root be new node with Key k and Value v 3 return 4 search(root, k); 5 if k < root.key then 6 Let n be new node with Key k and Value v 7 n.left = root.left 8 n.right = root 9 root.left = nil 10 root = n 11 else if k > root.key then 12 Let n be new node with Key k and Value v 13 n.right = root.right 14 n.left = root 15 root.right = nil 16 root = n 17 else 18 root.value = value 3.4 Remove(k) Die Löschmethode geht nach einem sehr anschaulichen Plan vor: Sie sucht den Knoten mit Schlüssel k, um ihn zur Wurzel zu bringen (Zeile 3 ). Falls der Schlüssel der Wurzel nun k entspricht, wird die Wurzel gelöscht und der Baum in zwei Teile (einen linken und einen rechten Teilbaum) gespalten. Diese Teilbäume sollen nun wieder zu einem neuen Baum vereinigt werden. Die Lösung hierfür ist recht geschickt: Remove() holt sich mit einem Aufruf von Search() auf den linken Teilbaum das Maximum des linken Teilbaums in die Wurzel. Da dieses Maximum im linken Teilbaum kein rechtes Kind hat (da es ja selbst den größten Schlüssel hält), kann an die freie Stelle nun der rechte Teilbaum gesetzt werden und die Bäume sind wieder zu einem Ganzen vereinigt. 10

11 Algorithmus 6: Remove(Key k) Eingabe : Schlüssel k, dessen Knoten -falls vorhanden- aus dem Baum gelöscht werden soll 1 if root == nil then 2 return 3 search(root, k) 4 if k == root.key then 5 if root.left == nil then 6 root = root.right; 7 else 8 x = root.right 9 root = root.left 10 search(root, k) 11 root.right = x 11

12 4 Laufzeitanalyse 4.1 Einführung: Amortisierte Analyse Das Ziel dieses Abschnitts ist es, den folgenden Satz zu beweisen: Satz 4.1 (Amortisierte Laufzeit). Alle Operationen eines Splay Trees laufen in amortisiert O(log n) Zeit. Vorgehensweise beim Beweis: 1. Führe auf der Operation splay() eine amortisierte Laufzeitanalyse durch (kompliziert) 2. Analysiere die anderen Funktionen (einfach, wenn Laufzeit von splay() bekannt ist) Man weist jedem Zustand des Baumes ein Potential zu. Zur Erinnerung Definition 4.2 (Potentialfunktion). 1 Eine Potentialfunktion ist eine Funktion mit D i : i-ter Zustand der Datenstruktur. Φ : D i R Man betrachtet nun das Potential vor der Operation und nach der Operation. Die Datenstruktur darf niemals ein negatives Potential haben. Die Potentialfunktion sehe nun wie folgt aus: a = t + Φ + Φ, wobei Φ := Potential vor der Operation, Φ := Potential nach der Operation, t := tatsächliche Kosten und a := amorisierte Kosten. Das m-malige Ausführen einer Operation kostet somit m m m a j = t j + Φ j 1 Φ j = Φ 0 Φ m + t j. j=1 j=1 j=1 Der rechte Teil der Gleichung ergibt sich, da eine Teleskopsumme vorliegt. 1 [Wol12],

13 4.2 Laufzeitanalyse von splay() Pseudocode siehe Algorithmus 3. Rotationen haben konstante Laufzeit: O(1) Die while-schleife wird h mal durchlaufen, wobei h := Höhe des Baumes Wir zeigen, dass h O(log n) mit Hilfe des Lemmas 4.5. Zunächst definieren wir zwei wichtige Begriffe (Definitionen 4.3 und 4.4. Definition 4.3 (Größe). Die Größe s(x) ist definiert als s(x) := k Kind von s w(k). Definition 4.4 (Rang). Der Rang r(x) ist definiert als r(x) := log 2 s(x). Lemma 4.5 (Laufzeit von splay()). Die Funktion splay() hat die Laufzeit O (log(n)). Wir verwenden für den Beweis einen Ausschnitt aus dem Baum, wobei die Knoten wie in Abb. 4.1 benannt sind. Abb. 4.1: Referenzbaum für die Analyse Beweis. 2 Für n = 0 und n = 1 Knoten ist die Aussage sicher richtig, da keine Rotation ausgeführt werden muss. Sei also nun n > Eine Rotation wird ausgeführt. r (x) r(x) + r (y) r(y) 1 + r (x) r(x) (4.1) (r (x) r(x)) (4.2) (4.1) weil y einen höheren Rang bekommt, ist r(y) r (y) r (y) r(y) 0 (4.2) Wir zeigen in Fall 2, dass dies logarithmische Laufzeit hat. 2 [TS85], 658 und [Sch11], 3 13

14 2. Zwei Rotationen werden ausgeführt r (x) r(x) + r (y) r(y) + r (z) r(z) = 2 r(x) + r (y) r(y) + r (z) (4.3) 2 + r (x) + r (z) 2r(x) (4.4) 3r (x) 3r(x) (4.5) 2 + r (z) 2r (x) r(x) (4.6) 2 2r (x) r(x) r (z) (4.7) r(x) + r (z) 2r (x) 2 (4.8) log s(x) + log s (z) 2 log s (x) 2 (4.9) ( ) ( s(x) s ) (z) log s + log (x) s 2 (4.10) (x) (4.5) Diese Gleichung versteht man am besten, wenn man sich die Rotationen ansieht (vgl. Abb. 4.2). Abb. 4.2: Rotationsverhalten (4.10) Weil r = log s gilt, suchen wir nun max{x}, max{y}, sodass gilt: log x + log y 2 und x, y 1. Das stimmt für x = y = 1 2, denn log 1 2 = 1 also stimmt die Aussage für Fall 2. Summiert man nun die Zeiten für die Rotationen auf, so ergibt sich eine Teleskopsumme, die nach oben durch 1 + 3(r (x) r(x)) beschränkt ist. Nach Fall 2 ist das logarithmisch. Daraus folgt das Korollar 4.6. Ein Splaybaum hat die erwartete Höhe h O(log n). Mit diesem Satz werden die Analysen der anderen Funktionen sehr leicht. 3 Wir zeigen hier den Fall der Zick-Zick-Rotation. Der Beweis der Zick-Zack-Rotation funktioniert analog. 14

15 4.3 Laufzeitanalyse von search(). Pseudocode siehe Algorithmus 4 Alle Operationen in der while-schleife sind in O(1). Die while-schleife selbst wird h mal durchlaufen splay() O(log n) search() O(log n) = O(log n) + O(log n) 4.4 Laufzeitanalyse von insert() Pseudocode siehe Algorithmus 5. search() O(log n) Alle anderen Operationen sind in O(1). insert() O(log n) 4.5 Laufzeitanalyse von remove() Pseudocode siehe Algorithmus 6. search() O(log n) Alle anderen Operationen sind in O(1). search() O(log n) 4.6 Zusammenfassung Der Splay Tree implementiert alle Operationen in O(log n) Zeit. Ein Baum hat im schlechtesten Fall die Höhe O(n). Dadurch kostet splay() die Zeit O(n). Aber: Ein Splay-Baum wird für häufige Zugriffe weniger Elemente aus einer großen Datenmenge verwendet. Dadurch stehen diese nahe der Wurzel. Durch amortisierte Analyse kann man jedoch zeigen, dass h O(log n). 15

16 Anhang: Quellen der Präsentation Folgende Quellen wurden zusätzlich in der Präsentation verwendet: Folien 181f. (Rotation eines entarteten Baumes): [TS85], 657 Folien 187, : (Übungsaufgabe): [TS85],

17 Literaturverzeichnis [And10] James Anderson: Splay Trees. Online-Präsentation, swin.edu.au/~pbourke/stereographics/stereorender/. [Gog07] Arsen Gogeshvili: Binary Search Trees, DataStructures/Trees/BST.html, Java-Webanwendung. [Sch11] Joseph Schröer: Seminar Algorithmen: Splay Bäume. online, %20Zusammenfassung.pdf. [TS85] Robert Tarjan und Daniel Sleator: Self-Adjusting Binary Trees. Journal of the Association for Computing Machinery, 32(3): , [Wol12] Alexander Wolff: Amortisierte Analyse. In: Vorlesung Algorithmen und Datenstrukturen. WS 2011/12. 17

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)

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

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

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Kap. 4.2: Binäre Suchbäume

Kap. 4.2: Binäre Suchbäume Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:

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

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

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

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

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmen und Datenstrukturen Balancierte Suchbäume Algorithmen und Datenstrukturen Balancierte Suchbäume Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Einführung Einfügen und Löschen Einfügen

Mehr

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 13./14. VO DAP2 SS 2009 2./4. Juni 2009 1 2. Übungstest

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

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Robert Elsässer u.v.a. Paderborn, 29. Mai 2008 Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Aufgabe 1 (6 Punkte): Zunächst sollte klar sein, daß ein vollständiger Binärer

Mehr

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen 9.4 Binäre Suchbäume Erweiterung: Einfügen an der Wurzel Standardimplementierung: Der neue Schlüssel wird am Ende des Suchpfades angefügt (natürlich, weil zuerst festgestellt werden muss, ob der Schlüssel

Mehr

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y Die AVL-Eigenschaft soll bei Einfügungen und Streichungen erhalten bleiben. Dafür gibt es zwei mögliche Operationen: -1-2 Rotation Abbildung 3.1: Rotation nach rechts (analog links) -2 +1 z ±1 T 4 Doppelrotation

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 16.10.2015 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Suchen Binärsuche Binäre Suchbäume 16.10.2015 Dr. Werner

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

Lenstras Algorithmus für Faktorisierung

Lenstras Algorithmus für Faktorisierung Lenstras Algorithmus für Faktorisierung Bertil Nestorius 9 März 2010 1 Motivation Die schnelle Faktorisierung von Zahlen ist heutzutage ein sehr wichtigen Thema, zb gibt es in der Kryptographie viele weit

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 16. Vorlesung Rot-Schwarz-Bäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Dynamische Menge verwaltet Elemente einer sich ändernden Menge

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:

Mehr

Mergeable Heaps. C. Komusiewicz 7.1 Fibonacci-Heaps: Überblick 117

Mergeable Heaps. C. Komusiewicz 7.1 Fibonacci-Heaps: Überblick 117 C. Komusiewicz 7.1 Fibonacci-Heaps: Überblick 117 Mergeable Heaps Erweiterung von Standardheaps, die die folgenden fünf Operationen unterstützen. Make-Heappq liefert neuen, leeren Heap. InsertpH, xq fügt

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

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

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

Algorithmen und Datenstrukturen Heapsort

Algorithmen und Datenstrukturen Heapsort Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das

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

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

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee AVL-Bäume. Aufgabentyp Fügen Sie in einen anfangs leeren AVL Baum die folgenden Schlüssel ein:... Wenden Sie hierbei konsequent den Einfüge /Balancierungsalgorithmus an und dokumentieren Sie die ausgeführten

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

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

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April

Mehr

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

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

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

Mehr

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen

Mehr

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06 Balancierte Bäume Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06 2 Ziele AVL-Bäume als einen wichtigen Vertreter balancierter

Mehr

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

Mehr

Zeichnen von Graphen. graph drawing

Zeichnen von Graphen. graph drawing Zeichnen von Graphen graph drawing WS 2006 / 2007 Gruppe: D_rot_Ala0607 Christian Becker 11042315 Eugen Plischke 11042351 Vadim Filippov 11042026 Gegeben sei ein Graph G = (V; E) Problemstellung V E =

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

Wirtschaftsinformatik I

Wirtschaftsinformatik I Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015 Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter

Mehr

Sortierte Folgen 250

Sortierte Folgen 250 Sortierte Folgen 250 Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme:

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

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

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

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Suchen und Sortieren

Suchen und Sortieren (Folie 69, Seite 36 im Skript) 5 6 1 4 Als assoziatives Array geeignet Schlüssel aus geordneter Menge Linke Kinder kleiner, rechte Kinder größer als Elternknoten Externe und interne Knoten Externe Knoten

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

Mehr

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen.

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen. Linken von Bäumen: Zwei Bäume desselben Wurzel-Rangs werden unter Einhaltung der Heap-Bedingung verbunden. Sind k 1 und k 2 die Wurzeln der zwei zu linkenden Bäume, so wird ein neuer Baum aufgebaut, dessen

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

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

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: 1 Aufgabe 8.1 (P) (2, 3)-Baum a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: Zeichnen Sie, was in jedem Schritt passiert. b) Löschen Sie die Zahlen 65, 70 und 100 aus folgendem

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

Kapitel 9 Suchalgorithmen

Kapitel 9 Suchalgorithmen Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in

Mehr

Übung zur Vorlesung Algorithmische Geometrie

Übung zur Vorlesung Algorithmische Geometrie Übung zur Vorlesung Algorithmische Geometrie Dipl.-Math. Bastian Rieck Arbeitsgruppe Computergraphik und Visualisierung Interdisziplinäres Zentrum für Wissenschaftliches Rechnen 8. Mai 2012 B. Rieck (CoVis)

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können. 6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente

Mehr

1 Die Active Directory

1 Die Active Directory 1 Die Active Directory Infrastruktur Prüfungsanforderungen von Microsoft: Configuring the Active Directory Infrastructure o Configure a forest or a domain o Configure trusts o Configure sites o Configure

Mehr

Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &

Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem & Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem & Frank Heitmann heitmann@informatik.uni-hamburg.de 25. November 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/122

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

1. Übungsblatt zu Algorithmen II im WS 2011/2012

1. Übungsblatt zu Algorithmen II im WS 2011/2012 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders Moritz Kobitzsch, Dennis Schieferdecker. Übungsblatt zu Algorithmen II im WS 0/0 http://algo.iti.kit.edu/algorithmenii.php

Mehr

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen: 6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)

Mehr

Motivation Binäre Suchbäume

Motivation Binäre Suchbäume Kap..: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund Zusätzliche Lernraumbetreuung Morteza Monemizadeh: Jeden Montag von :00 Uhr-:00 Uhr in

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die

Mehr

Suchen in linearen Feldern. Datenstrukturen & Algorithmen. Laufzeitverhalten der Suchverfahren. Anzahl der Vergleiche für 10 9 Elemente

Suchen in linearen Feldern. Datenstrukturen & Algorithmen. Laufzeitverhalten der Suchverfahren. Anzahl der Vergleiche für 10 9 Elemente Suchen in linearen Feldern Datenstruturen & Algorithmen VO 708.031 11. Vorlesung, am 11.Dez. 2008 Ohne Vorsortierung Sequentielle Suche Speicherung nach Zugriffswahrscheinlicheiten Selbstanordnende Felder

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel 3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36

Mehr

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

Mehr

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein. Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen

Mehr

ContainerDatenstrukturen. Große Übung 4

ContainerDatenstrukturen. Große Übung 4 ContainerDatenstrukturen Große Übung 4 Aufgabenstellung Verwalte Kollektion S von n Objekten Grundaufgaben: Iterieren/Auflistung Suche nach Objekt x mit Wert/Schlüssel k Füge ein Objekt x hinzu Entferne

Mehr

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

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

Mehr

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

3. Übung Algorithmen I

3. Übung Algorithmen I Timo Bingmann, Christian Schulz INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Timo Universität Bingmann, des LandesChristian Baden-Württemberg Schulz und nationales Forschungszentrum in der

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 01/13 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Guten Morgen! Tipps für unseren ersten Test am 0. November: Lesen

Mehr

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN RALF HINZE Institut für Informatik III Universität Bonn Email: ralf@informatik.uni-bonn.de Homepage: http://www.informatik.uni-bonn.de/~ralf Februar, 2001 Binäre Suchbäume

Mehr

Datenstrukturen und Algorithmen SS07

Datenstrukturen und Algorithmen SS07 Datenstrukturen und Algorithmen SS0 Datum:.6.200 Michael Belfrage mbe@student.ethz.ch belfrage.net/eth Programm von Heute Minimaler Spannbaum (MST) Challenge der Woche Fibonacci Heap Minimaler Spannbaum

Mehr

8 Diskrete Optimierung

8 Diskrete Optimierung 8 Diskrete Optimierung Definition 8.1. Ein Graph G ist ein Paar (V (G), E(G)) besteh aus einer lichen Menge V (G) von Knoten (oder Ecken) und einer Menge E(G) ( ) V (G) 2 von Kanten. Die Ordnung n(g) von

Mehr

4.2 Fibonacci-Heaps Aufbau Potenzialfunktion. Knoten v hat folgende Felder:

4.2 Fibonacci-Heaps Aufbau Potenzialfunktion. Knoten v hat folgende Felder: 4.2 Fibonacci-Heaps 4.2.1 Aufbau Knoten v hat folgende Felder: Vaterzeiger p(v) Zeiger auf linkes Geschwister: prev(v) Zeiger auf rechtes Geschwister: next(v) Kindzeiger: child(v) Schlüssel: key: aus U

Mehr

Vorrangswarteschlangen:Operationen

Vorrangswarteschlangen:Operationen Fibonacci Heaps Vorrangswarteschlangen:Operationen (Vorrangs)warteschlange Q Operationen: Q.initialize(): erstellt die leere Schlange Q Q.isEmpty(): liefert true gdw. Q ist leer Q.insert(e): fügt Eintrag

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der

Mehr

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS Übersicht 8 Suchstrukturen Allgemeines Binäre Suchbäume AVL-Bäume H. Täubig (TUM) GAD SS 14 309 Allgemeines Übersicht 8 Suchstrukturen Allgemeines Binäre Suchbäume AVL-Bäume H. Täubig (TUM) GAD SS 14 310

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet

22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet 22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet Autor Volker Claus, Universität Stuttgart Volker Diekert, Universität Stuttgart Holger Petersen, Universität Stuttgart

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Mehr

B*-BÄUME. Ein Index ist seinerseits wieder nichts anderes als eine Datei mit unpinned Records.

B*-BÄUME. Ein Index ist seinerseits wieder nichts anderes als eine Datei mit unpinned Records. B*-Bäume 1 B*-BÄUME Beobachtung: Ein Index ist seinerseits wieder nichts anderes als eine Datei mit unpinned Records. Es gibt keinen Grund, warum man nicht einen Index über einem Index haben sollte, und

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