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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 Übersicht Datenstrukturen und lgorithmen Vorlesung : Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group 1 Suche Einfügen Einige Operationen (die das Löschen vereinfachen) Löschen 2 8. Mai Joost-Pieter Katoen Datenstrukturen und lgorithmen 1/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 2/3 Übersicht Motivation 1 Suche Einfügen Einige Operationen (die das Löschen vereinfachen) Löschen 2 Suchbäume unterstützen Operationen auf dynamischen Mengen, wie: Suchen, Einfügen, Löschen, bfragen (z.. Nachfolger oder minimales Element) Die asisoperationen auf binären Suchbäumen benötigen eine Laufzeit, die proportional zur Höhe des aums ist. Für vollständige binäre äume mit n Elementen liefert dies eine Laufzeit in Θ(log(n)) für eine asisoperation. Für einen aum, der einer linearen Kette entspricht, ist dies jedoch in Θ(n). Wir werden später binäre Suchbäume kennen lernen, deren Operationen immer Laufzeiten in Θ(log(n)) haben (s. nächste Vorlesung). Joost-Pieter Katoen Datenstrukturen und lgorithmen 3/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 4/3

2 (I) (II) inärer Suchbaum Ein binärer Suchbaum (ST) ist ein inärbaum, der Elemente mit Schlüsseln enthält, wobei der Schlüssel jedes Knotens mindestens so groß wie jeder Schlüssel im linken Teilbaum und höchstens so groß wie jeder Schlüssel im rechten Teilbaum ist. Knoten in einem binären Suchbaum bestehen aus vier Feldern: Einem Schlüssel dem Wert des Knotens, einem (möglicherweise leeren) linken und rechten Teilbaum (bzw. Zeiger darauf) sowie einem Zeiger auf den Vater-/Mutterknoten (bei der Wurzel leer) Schlüssel 12 null Vater/Mutter von und 2 Zwei binäre Suchbäume, die jeweils die Schlüssel 2, 3,,, 7, 9 enthalten Linkes Kind von left parent right 22 Rechtes Kind von Joost-Pieter Katoen Datenstrukturen und lgorithmen /3 Joost-Pieter Katoen Datenstrukturen und lgorithmen /3 (III) Sortieren in linearer Zeit? eispiel (inärer Suchbaum in /++) 1 typedef struct _* Node; 2 struct _ { 3 int key; 4 Node left, right; Node parent; //... evtl. eigene Datenfelder 7 }; 9 struct _tree { Node root; 11 }; 12 typedef struct _tree* Tree; Sortieren Eine Inorder Traversierung eines binären Suchbaumes gibt alle Schlüssel im Suchbaum in sortierter Reihenfolge aus. Die Korrektheit dieses Sortierverfahrens folgt per Induktion direkt aus der ST-Eigenschaft. eispiel eispiel Inorder Traversierung ST am Overheadprojektor. Zeitkomplexität Da die Zeitkomplexität einer Inorder Traversierung eines aumes mit n Knoten Θ(n) ist, liefert uns dies einen Sortieralgorithmus in Θ(n). Dies setzt jedoch voraus, dass alle Daten als ein ST gespeichert sind. Joost-Pieter Katoen Datenstrukturen und lgorithmen 7/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 8/3

3 Suche nach Schlüssel k im ST k = Suche nach Schlüssel k im ST k = 18 (erfolglos) 1 Node bstsearch(node root, int k) { 2 while (root) { 3 if (k < root.key) { 4 root = root.left; } else if (k > root.key) { root = root.right; 7 } else { // k == root.key return root; } } 11 return null; // nicht gefunden 12 } 1 1 Node bstsearch(node root, int k) { 2 while (root) { 3 if (k < root.key) { 4 root = root.left; } else if (k > root.key) { root = root.right; 7 } else { // k == root.key return root; } } 11 return null; // nicht gefunden 12 } 1 Die Worst-ase Komplexität ist linear in der Höhe h des aumes: Θ(h). Für einen kettenartigen aum mit n Knoten ergibt das Θ(n). Ist der ST so balanciert wie möglich, erhält man Θ(log(n)). Funktioniert dieses Suchverfahren auch bei Heaps? Nein. Die Worst-ase Komplexität ist linear in der Höhe h des aumes: Θ(h). Für einen kettenartigen aum mit n Knoten ergibt das Θ(n). Ist der ST so balanciert wie möglich, erhält man Θ(log(n)). Funktioniert dieses Suchverfahren auch bei Heaps? Nein. Joost-Pieter Katoen Datenstrukturen und lgorithmen 9/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 9/3 Einfügen eines Knotens mit Schlüssel k Strategie Einfügen von 18 in den ST t eispiel Einfügen Man kann einen neuen Knoten mit Schlüssel k in den ST t einfügen, ohne die ST-Eigenschaft zu zerstören: Suche einen geeigneten, freien Platz: Wie bei der regulären Suche, außer dass, selbst bei gefundenem Schlüssel, weiter abgestiegen wird, bis ein Knoten ohne entsprechendes Kind erreicht ist. Hänge den neuen Knoten an: Verbinde den neuen Knoten mit dem gefundenen Vaterknoten. eispiel 14 bstins(t, Node(18)) Komplexität: Θ(h), wegen der Suche. Joost-Pieter Katoen Datenstrukturen und lgorithmen /3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 11/3

4 Einfügen in einen ST lgorithmus 1 void bstins(tree t, Node ) { // Füge in den aum t ein 2 // Suche freien Platz 3 Node root = t.root, parent = null; 4 while (root) { parent = root; if (.key < root.key) { 7 root = root.left; 8 } else { 9 root = root.right; } 11 } // Einfügen 12.parent = parent; 13 if (!parent) { // t war leer => neue Wurzel 14 t.root = ; } else if (.key < parent.key) { // richtige Seite... 1 parent.left = ; 17 } else { 18 parent.right = ; 19 } } bfragen im ST: Minimum Wir suchen den Knoten mit kleinstem Schlüssel im durch root gegebenen (Teil-)aum. 1 Node bstmin(node root) { // root!= null 2 while (root.left) { 3 root = root.left; 4 } return root; } Komplexität: Θ(h) bei aumhöhe h. nalog kann das Maximum gefunden werden. Joost-Pieter Katoen Datenstrukturen und lgorithmen 12/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 13/3 bfragen im ST: Nachfolger (I) Wir suchen den Nachfolger-Knoten von, also den bei Dessen Schlüssel ist mindestens so groß wie.key. bfragen im ST: Nachfolger (I) Wir suchen den Nachfolger-Knoten von, also den bei Dessen Schlüssel ist mindestens so groß wie.key Joost-Pieter Katoen Datenstrukturen und lgorithmen 14/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 14/3

5 bfragen im ST: Nachfolger (I) Wir suchen den Nachfolger-Knoten von, also den bei Dessen Schlüssel ist mindestens so groß wie.key. bfragen im ST: Nachfolger (I) Wir suchen den Nachfolger-Knoten von, also den bei Dessen Schlüssel ist mindestens so groß wie.key. Der rechte Teilbaum existiert: Der Nachfolger ist der kleinste Knoten im rechten Teilbaum Der rechte Teilbaum existiert: Der Nachfolger ist der kleinste Knoten im rechten Teilbaum. ndernfalls: Der Nachfolger ist der jüngste Vorfahre, dessen linker Teilbaum enthält Joost-Pieter Katoen Datenstrukturen und lgorithmen 14/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 14/3 bfragen im ST: Nachfolger (I) Wir suchen den Nachfolger-Knoten von, also den bei Dessen Schlüssel ist mindestens so groß wie.key. bfragen im ST: Nachfolger (I) Wir suchen den Nachfolger-Knoten von, also den bei Dessen Schlüssel ist mindestens so groß wie.key. Der rechte Teilbaum existiert: Der Nachfolger ist der kleinste Knoten im rechten Teilbaum. ndernfalls: Der Nachfolger ist der jüngste Vorfahre, dessen linker Teilbaum enthält Der rechte Teilbaum existiert: Der Nachfolger ist der kleinste Knoten im rechten Teilbaum. ndernfalls: Der Nachfolger ist der jüngste Vorfahre, dessen linker Teilbaum enthält Komplexität: Θ(h) bei aumhöhe h. Komplexität: Θ(h) bei aumhöhe h. nalog kann der Vorgänger gefunden werden. Joost-Pieter Katoen Datenstrukturen und lgorithmen 14/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 14/3

6 bfragen im ST: Nachfolger (II) Der rechte Teilbaum existiert: Der Nachfolger ist der kleinste Knoten im rechten Teilbaum. ndernfalls: Der Nachfolger ist der jüngste Vorfahre, dessen linker Teilbaum enthält. 1 Node bstsucc(node ) { //!= null 2 if (.right) { 3 return bstmin(.right); 4 } // bbruch, wenn nicht mehr rechtes Kind ist (also linkes!) // oder.parent leer ist (also kein Nachfolger existiert). 7 while (.parent &&.parent.right == ) { 8 =.parent; 9 } return.parent; 11 } Ersetzen von Teilbäumen im ST 1 // Ersetzt im aum t den Teilbaum old durch 2 // den Teilbaum (ohne Sortierung!) 3 void bstreplace(tree t, Node old, Node ) { 4 if () { // erlaube == null!.parent = old.parent; } 7 if (!old.parent) { // war die Wurzel 8 t.root = ; 9 } else if (old == old.parent.left) { // war linkes Kind 11 old.parent.left = ; 12 } else { // rechtes Kind 13 old.parent.right = ; 14 } } Das Ersetzen eines Teilbaums hat die Zeitkomplexität Θ(1). Joost-Pieter Katoen Datenstrukturen und lgorithmen /3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 1/3 ustauschen von Knoten im ST 1 // Tauscht den Knoten old gegen aus; 2 // die Kinder von old sind weiter im ST! 3 void bstswap(tree t, Node old, Node ) { 4 // übernimm linken Teilbaum.left = old.left; // auch möglich: swap() if (.left) { 7.left.parent = ; 8 } 9 // rechten Teilbaum.right = old.right; 11 if (.right) { 12.right.parent = ; 13 } 14 // füge den Knoten ein bstreplace(t, old, ); 1 } Löschen im ST: Die beiden einfachen Fälle Das ustauschen eines Knotens hat die Zeitkomplexität Θ(1). Joost-Pieter Katoen Datenstrukturen und lgorithmen 17/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 18/3

7 Löschen im ST: Der aufwändigere Fall Löschen im ST Strategie Löschen Um Knoten aus dem ST zu löschen, verfahren wir folgendermaßen: hat keine Kinder: Ersetze im Vaterknoten von den Zeiger auf durch null. hat ein Kind: Wir schneiden aus, indem wir den Vater und das Kind direkt miteinander verbinden (den Teilbaum ersetzen). hat zwei Kinder: Wir finden den Nachfolger von, entfernen ihn aus seiner ursprünglichen Position und tauschen gegen den Nachfolger. 14 Es tritt nur der erste Fall (bstmin(.right)) aus bstsucc auf. Der gesuchte Nachfolger hat kein linkes Kind. Joost-Pieter Katoen Datenstrukturen und lgorithmen 19/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen /3 Löschen im ST lgorithmus Komplexität der Operationen auf STs 1 // Entfernt aus dem aum. 2 // Danach kann ggf. auch aus dem Speicher entfernt werden. 3 void bstdel(tree t, Node ) { 4 if (.left &&.right) { // zwei Kinder Node tmp = bstmin(.right); bstdel(t, tmp); // höchstens ein Kind, rechts 7 bstswap(t,, tmp); 8 } else if (.left) { // ein Kind, links 9 bstreplace(t,,.left); } else { // ein Kind, oder kein Kind (.right == null) 11 bstreplace(t,,.right); 12 } 13 } Operation Zeit bstsearch Θ(h) bstsucc Θ(h) bstmin Θ(h) bstins Θ(h) bstdel Θ(h) lle Operationen sind linear in der Höhe h des STs. Die Höhe ist log 2 (n), wenn der aum nicht zu unbalanciert ist. Man kann einen binären aum mittels wieder balancieren. Joost-Pieter Katoen Datenstrukturen und lgorithmen 21/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 22/3

8 Zufällig erzeugte binäre Suchbäume Übersicht Zufällig erzeugter ST Ein zufällig erzeugter ST mit n Elementen ist ein ST, der durch das Einfügen von n (unterschiedlichen) Schlüsseln in zufälliger Reihenfolge in einen anfangs leeren aum entsteht. nnahme: jede der n! möglichen Einfügungsordnungen hat die gleiche Wahrscheinlichkeit. Theorem (ohne eweis) Die erwartete Höhe eines zufällig erzeugten STs mit n Elementen ist O(log(n)). 1 Suche Einfügen Einige Operationen (die das Löschen vereinfachen) Löschen 2 Fazit: Im Schnitt verhält sich eine binäre Suchbaum wie ein (fast) balancierter Suchbaum. Joost-Pieter Katoen Datenstrukturen und lgorithmen 23/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 24/3 leftrotate Konzept und eispiel 1 leftrotate(1) 2 1 rightrotate(2) eispiel leftrotate() : Eigenschaften und Komplexität 1 leftrotate(1) 2 1 rightrotate(2) 2 Lemma Ein rotierter ST ist ein ST Die Inorder-Traversierung beider äume bleibt unverändert. Zeitkomplexität Die Zeitkomplexität von Links- oder Rechtsrotieren ist in Θ(1). Joost-Pieter Katoen Datenstrukturen und lgorithmen 2/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 2/3

9 leftrotate lgorithmus 1 void leftrotate(tree t, Node 1) { // analog: rightrotate() 2 Node 2 = 1.right; 3 // aum verschieben 4 1.right = 2.left; 1 if (1.right) { 2 1.right.parent = 1; 7 } 8 // 2 wieder einhängen 9 2.parent = 1.parent; if (!1.parent) { // 1 war die Wurzel 11 t.root = 2; 12 } else if (1 == 1.parent.left) { // war linkes Kind 13 2.parent.left = 2; 2 } else { // war rechtes Kind 2.parent.right = 2; } // 1 einhängen 18 2.left = 1; 19 1.parent = 2; } VL-aum n welchen Knoten müssen die durchgeführt werden? VL-aum Ein VL-aum ist ein balancierter ST, bei dem für jeden Knoten die Höhe der beiden Teilbäume höchstens um 1 differiert. ei VL-äumen wird die Höhe der Teilbäume der Knoten balanciert. Dazu wird (in einem zusätzlichem Datenfeld) an jedem Knoten über die Höhe dieses Unterbaums uch geführt. Nach jeder (kritischen) Operation wird die alance wiederhergestellt. Dies ist in Θ(h) möglich! Dadurch bleibt stets h Θ(log(n)) und Θ(log(n)) kann für die Operationen auf dem ST garantiert werden. Eine andere Möglichkeit, um äume zu balancieren, sind Rot-Schwarz-äume (nächste Vorlesung). Joost-Pieter Katoen Datenstrukturen und lgorithmen 27/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 28/3 VL-äume: alancieren nach Einfügen etrachten wir einen VL-aum. Jeder VL-aum ist (höhen-)balanciert, d. h., für alle Knoten x: rechte Teilbaumhöhe linke Teilbaumhöhe 1. }{{} balance(x) VL-äume: alancieren nach Einfügen Sei der tiefste unbalancierte Knoten auf dem Pfad von der Wurzel zum neu eingefügten Knoten (unbalanciert: linke Teilbaumhöhe rechte Teilbaumhöhe = ±2). RR: Linksrotation auf : Wir fügen einen neuen Knoten in den aum ein. Dadurch kann der aum unbalanciert werden. alancierung durch Rotation. Rechter Teilbaum ist größer: Zwei Fälle RR und RL Rechtsrotation auf : Linksrotation auf : Einfachrotation, wenn die tieferen lätter außen liegen. Doppelrotation, wenn die tieferen lätter innen liegen. RL: Zwei analoge Fälle: Joost-Pieter Katoen Datenstrukturen und lgorithmen 29/3 Rechtsrotation auf : Linksrotation auf : Joost-Pieter Katoen Datenstrukturen und lgorithmen 30/3

10 VL-äume: alancieren nach Einfügen Sei der tiefste unbalancierte Knoten auf dem Pfad von der Wurzel zum neu eingefügten Knoten (unbalanciert: linke Teilbaumhöhe rechte Teilbaumhöhe = ±2). VL-äume: alancieren nach Einfügen Linker Teilbaum ist größer: Zwei Fälle LL und LR LL: Rechtsrotation auf : Linksrotation auf : Rechtsrotation auf : 1 void VLIns(Tree t, Node ) { 2 bstins(t,); 3 //Node deepestunbalancednode(tree t, Node ) 4 //gibt null zurück wenn t balanciert ist //und den tiefsten unbalancierten Knoten in t sonst //(der Parameter wird zur effizienten Implementierung 7 //verwendet) 8 Node = deepestunbalancednode(t,); 9 if (!= null) balance(t, ); } LR: Zwei analoge Fälle: Linksrotation auf : Rechtsrotation auf : Joost-Pieter Katoen Datenstrukturen und lgorithmen 31/3 Joost-Pieter Katoen Datenstrukturen und lgorithmen 32/3 VL-äume: alancieren nach Einfügen 1 void balance(tree t, Node ){ 2 // ist tiefster unbalancierter Knoten in t 3 if (height(.left) > height(.right)) { 4 if (height(.left.left) >= height(.left.right)) { //LL rightrotate(t,); } else { //LR 7 leftrotate(.left); rightrotate(); 8 } 9 } else { if (height(.right.right) >= height(.right.left)) { //RR 11 leftrotate(t,); 12 } else { //RL 13 rightrotate(.right); leftrotate(); 14 } } 1 } Joost-Pieter Katoen Datenstrukturen und lgorithmen 33/3 VL-äume: alancieren nach Löschen aumhöhe von nach der Rotation ist wieder die gleiche wir vor dem Einfügen des neuen Knotens. Das heißt, nach dem alancieren von ist der gesamte aum wieder balanciert. Die zweite Operation, die Unbalanciertheit verursachen kann, ist das Löschen eines Knotens. Die alancierung des tiefsten unbalancierten Knotens kann auf die gleiche Weise erreicht werden wie beim Einfügen. ber: der Teilbaum hat nicht die gleiche Höhe wie vor dem Löschen (sie ist um 1 kleiner)! Im schlimmsten Fall müssen alle unbalancierten Knoten einzeln balanciert werden. Da aber die alancierung eines Knotens nur einen konstanten ufwand erfordert und es nur O(log(n)) unbalancierte Knoten geben kann, ist der ufwand immer noch logarithmisch. Joost-Pieter Katoen Datenstrukturen und lgorithmen 34/3

11 VL-äume: alancieren nach Löschen 1 void VLDel(Tree t, Node ) { 2 bstdel(t,); 3 //Node deepestunbalancednode(tree t, Node ) 4 //gibt null zurück wenn t balanciert ist //und den tiefsten unbalancierten Knoten in t sonst //(der Parameter wird zur effizienten Implementierung 7 //verwendet) 8 Node = deepestunbalancednode(t,); 9 while (!= null) { //bool balanced(tree t, Node ) 11 //gibt true zurück wenn balanciert ist in t 12 //und false sonst 13 if (!balanced(t, )) { 14 balance(t, ); =.parent.parent; 1 } else { 17 =.parent; 18 } 19 } } Joost-Pieter Katoen Datenstrukturen und lgorithmen 3/3

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

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

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

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

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

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

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

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

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

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

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

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

Kapitel 9 Suchalgorithmen

Kapitel 9 Suchalgorithmen Kapitel 9 Suchalgorithmen Technische Universität München Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für

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

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

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

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

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

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes

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

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

Seminarausarbeitung Entwurf und Analyse von Datenstrukturen. Splay Trees. Mirco Lukas und Alexander Werthmann. Datum: 26.06.2013 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

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

Tutorium Algorithmen & Datenstrukturen

Tutorium Algorithmen & Datenstrukturen June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten

Mehr

Grundlagen der Programmierung 2. Bäume

Grundlagen der Programmierung 2. Bäume Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)

Mehr

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

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

Mehr

Gegeben Zieladresse, finde Nachbarknoten, an den Paket zu senden ist ("Routing-Tabelle")

Gegeben Zieladresse, finde Nachbarknoten, an den Paket zu senden ist (Routing-Tabelle) 8 Digitalbäume, Tries,, Suffixbäume 8.0 Anwendungen Internet-outer egeben Zieladresse, finde Nachbarknoten, an den Paket zu senden ist ("outing-tabelle") 3 network addr Host id 00 0000 000 0 00 0 0000

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

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

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

RWTH Aachen, Lehrstuhl für Informatik IX Kapitel 3: Suchen in Mengen - Datenstrukturen und Algorithmen - 51

RWTH Aachen, Lehrstuhl für Informatik IX Kapitel 3: Suchen in Mengen - Datenstrukturen und Algorithmen - 51 RWTH Aacen, Lerstul für Informatik IX Kapitel 3: Sucen in Mengen - Datenstrukturen und Algoritmen - 51 Sucbäume Biser betractete Algoritmen für Suce in Mengen Sortierte Arrays A B C D - Nur sinnvoll für

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

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

Einführung in (Binäre) Bäume

Einführung in (Binäre) Bäume edeutung und Ziele inführung in (inäre) äume Marc Rennhard http://www.tik.ee.ethz.ch/~rennhard rennhard@tik.ee.ethz.ch äume gehören ganz allgemein zu den wichtigsten in der Informatik auftretenden atenstrukturen,

Mehr

10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm 10. Kapitel (Teil1) BÄUME GRUNDLAGEN Algrithmen & Datenstrukturen Prf. Dr. Wlfgang Schramm Übersicht 1 1. Einführung 2. Algrithmen 3. EigenschaCen vn Prgrammiersprachen 4. Algrithmenparadigmen 5. Suchen

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

Beispielblatt 2 186.813 VU Algorithmen und Datenstrukturen 1 VU 6.0

Beispielblatt 2 186.813 VU Algorithmen und Datenstrukturen 1 VU 6.0 Beispielblatt 2 186.813 VU Algorithmen und Datenstrukturen 1 VU 6.0 25. September 2013 Aufgabe 1 Gegeben sei ein binärer Suchbaum mit Werten im Bereich von 1 bis 1001. In diesem Baum wird nach der Zahl

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

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

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

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Werner Struckmann Wintersemester 2005/06 6. Bäume 6.1 Bäume 6.2 Binäre Suchbäume 6.3 Ausgeglichene Bäume 6.4 Heapsort Listen und Bäume Listen und Bäume: Listen: Jedes Listenelement

Mehr

13 Rekonfigurierende binäre Suchbäume

13 Rekonfigurierende binäre Suchbäume 13 Rekonfigurierende inäre Suchäume U.-P. Schroeder, Uni Pderorn inäräume, die zufällig erzeugt wurden, weisen für die wesentlichen Opertionen Suchen, Einfügen und Löschen einen logrithmischen ufwnd uf.

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

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

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011 Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 19.04.2011 Überlagern von Kartenebenen Beispiel: Gegeben zwei

Mehr

Algorithmen und Datenstrukturen SS09

Algorithmen und Datenstrukturen SS09 Foliensatz 8 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 29 TU Ilmenau Seite / 54 Binärbäume TU Ilmenau Seite 2 / 54 Binäre Bäume Bäume und speziell

Mehr

Kurs 1613 Einführung in die imperative Programmierung

Kurs 1613 Einführung in die imperative Programmierung Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum

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

Suchen in Listen und Hashtabellen

Suchen in Listen und Hashtabellen Kapitel 12: Suchen in Listen und Hashtabellen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Einleitung Lineare Suche Binäre Suche (in sortierten Listen) Hashverfahren

Mehr

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Lösungsvorschläge. zu den Aufgaben im Kapitel 4 Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere

Mehr

EndTermTest PROGALGO WS1516 A

EndTermTest PROGALGO WS1516 A EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von

Mehr

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP B-Bäume I Annahme: Sei die Anzahl der Objekte und damit der Datensätze. Das Datenvolumen ist zu groß, um im Hauptspeicher gehalten zu werden, z.b. 10. Datensätze auf externen Speicher auslagern, z.b. Festplatte

Mehr

2 Java: Bäume. 2.1 Implementierung von Bäumen. 2.2 Implementierung eines binären Suchbaums. 2.3 Traversierung von Bäumen

2 Java: Bäume. 2.1 Implementierung von Bäumen. 2.2 Implementierung eines binären Suchbaums. 2.3 Traversierung von Bäumen 2 2 Java: Bäume 2.1 Implementierung von Bäumen 2.2 Implementierung eines binären Suchbaums 2.3 Traversierung von Bäumen 2.4 Implementierung von Heapsort 19 Teil II Java: Bäume Überblick Implementierung

Mehr

6-1 A. Schwill Grundlagen der Programmierung II SS 2005

6-1 A. Schwill Grundlagen der Programmierung II SS 2005 6-1 A. Schwill Grundlagen der Programmierung II SS 25 6. Suchen Suchen = Tätigkeit, in einem vorgegebenen Datenbestand alle Objekte zu ermitteln, die eine best. Bedingung, das Suchkriterium, erfüllen und

Mehr

Suchen und Sortieren (Die klassischen Algorithmen)

Suchen und Sortieren (Die klassischen Algorithmen) Suchen und Sortieren (Die klassischen Algorithmen) Lineare Suche und Binäre Suche (Vorbedingung und Komplexität) Sortieralgorithmen (allgemein) Direkte Sortierverfahren (einfach aber langsam) Schnelle

Mehr

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

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

Mehr

Binäre Suchbäume. Ein Leitprogramm von Timur Erdag und Björn Steffen

Binäre Suchbäume. Ein Leitprogramm von Timur Erdag und Björn Steffen Binäre Suchbäume Ein Leitprogramm von Timur Erdag und Björn Steffen Inhalt: Bäume gehören zu den bedeutendsten Datenstrukturen in der Informatik. Dieses Leitprogramm gibt eine Einführung in dieses Thema

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

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

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10 Binäre Bäume Bäume gehören zu den wichtigsten Datenstrukturen in der Informatik. Sie repräsentieren z.b. die Struktur eines arithmetischen Terms oder die Struktur eines Buchs. Bäume beschreiben Organisationshierarchien

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

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

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Vortrag. Suchverfahren der Künstlichen Intelligenz. Sven Schmidt (Technische Informatik)

Vortrag. Suchverfahren der Künstlichen Intelligenz. Sven Schmidt (Technische Informatik) Vortrag Suchverfahren der Künstlichen Intelligenz Sven Schmidt (Technische Informatik) Suchverfahren der Künstlichen Intelligenz Grundlagen Zustandsraumrepräsentation Generische Suche Bewertung von Suchstrategien

Mehr

10 Dynamische Programmierung

10 Dynamische Programmierung 137 Dynamische Programmierung Das Prinzip der Dynamischen Programmierung wird häufig bei Fragestellungen auf Worten angewendet..1 Längste gemeinsame Teilfolge Wir betrachten Worte der rt w = a 1 a 2 a

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

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

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Datenorganisation und Datenstrukturen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00

Mehr

DATENSTRUKTUREN UND ZAHLENSYSTEME

DATENSTRUKTUREN UND ZAHLENSYSTEME DATENSTRUKTUREN UND ZAHLENSYSTEME RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: ralf@cs.uu.nl Homepage: http://www.cs.uu.nl/~ralf/ March, 2001 (Die Folien finden

Mehr

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in

Mehr

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Name: Seite 2 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie viele negative Zahlen (ohne 0) lassen sich im 4-Bit-Zweierkomplement darstellen?

Mehr

Nachtrag zu binären Suchbäumen

Nachtrag zu binären Suchbäumen Nachtrag zu binären Suchbäumen (nicht notwendigerweise zu AVL Bäumen) Löschen 1 3 2 10 4 12 1. Fall: Der zu löschende Knoten ist ein Blatt: einfach löschen 2. Fall: Der zu löschende Knoten hat ein Nachfolgeelement

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren I. Kapitel 7. Sortieren und Suchen Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren

Mehr

Branch-and-Bound. Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir

Branch-and-Bound. Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir Effiziente Algorithmen Lösen NP-vollständiger Probleme 289 Branch-and-Bound Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir 1.

Mehr

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen 9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam

Mehr

binäre Suchbäume Informatik I 6. Kapitel binäre Suchbäume binäre Suchbäume Rainer Schrader 4. Juni 2008 O(n) im worst-case Wir haben bisher behandelt:

binäre Suchbäume Informatik I 6. Kapitel binäre Suchbäume binäre Suchbäume Rainer Schrader 4. Juni 2008 O(n) im worst-case Wir haben bisher behandelt: Informatk I 6. Kaptel Raner Schrader Zentrum für Angewandte Informatk Köln 4. Jun 008 Wr haben bsher behandelt: Suchen n Lsten (lnear und verkettet) Suchen mttels Hashfunktonen jewels unter der Annahme,

Mehr

Kapitel 5: Dynamisches Programmieren Gliederung

Kapitel 5: Dynamisches Programmieren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

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

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen...

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen... Suchen und Sortieren In diesem Kapitel behandeln wir Algorithmen zum Suchen und Sortieren Inhalt 1. Grundlagen... 2 2. Sortieren... 6 1.1. Vertauschen... 13 1.2. Selektion... 16 1.3. Einfügen... 19 1.4.

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

Vorname:... Matrikel-Nr.:... Unterschrift:...

Vorname:... Matrikel-Nr.:... Unterschrift:... Fachhochschule Mannheim Hochschule für Technik und Gestaltung Fachbereich Informatik Studiengang Bachelor of Computer Science Algorithmen und Datenstrukturen Wintersemester 2003 / 2004 Name:... Vorname:...

Mehr

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r ) Definition B : Menge der binären Bäume, rekursiv definiert durch die Regeln: ist ein binärer Baum sind t l, t r binäre Bäume, so ist auch t =, t l, t r ein binärer Baum nur das, was durch die beiden vorigen

Mehr

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J Greedy-Strategie Definition Paradigma Greedy Der Greedy-Ansatz verwendet die Strategie 1 Top-down Auswahl: Bestimme in jedem Schritt eine lokal optimale Lösung, so dass man eine global optimale Lösung

Mehr

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Bearbeitungszeit: 270 Minuten Hilfsmittel: Wörterbuch zur deutschen Rechtschreibung Taschenrechner (nicht programmierbar, nicht grafikfähig) (Schüler,

Mehr

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

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

Fakultät Wirtschaftswissenschaft

Fakultät Wirtschaftswissenschaft Fakultät Wirtschaftswissenschaft Matrikelnr. Name Vorname KLAUSUR: Entwurf und Implementierung von Informationssystemen (32561) TERMIN: 11.09.2013, 14.00 16.00 Uhr PRÜFER: Univ.-Prof. Dr. Stefan Strecker

Mehr

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte] UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Bernoullistrasse 16 CH 4056 Basel Assistenten Bernhard Egger Andreas Forster Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha

Mehr

6. Algorithmen der Computer-Geometrie

6. Algorithmen der Computer-Geometrie 6. Algorithmen der Computer-Geometrie 1. Einführung 2. Schnitt von zwei Strecken 3. Punkt-in-Polygon-Test 4. Schnitt orthogonaler Strecken 5. Punkteinschlussproblem Geo-Informationssysteme 146 6.1 Computer-Geometrie

Mehr

Binärbäume. Prof. Dr. E. Ehses, 2014 1

Binärbäume. Prof. Dr. E. Ehses, 2014 1 Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung

Mehr

6 Baumstrukturen. Formale Grundlagen der Informatik I Herbstsemester 2012. Robert Marti

6 Baumstrukturen. Formale Grundlagen der Informatik I Herbstsemester 2012. Robert Marti 6 Baumstrukturen Formale Grundlagen der Informatik I Herbstsemester 2012 Robert Marti Vorlesung teilweise basierend auf Unterlagen von Prof. emer. Helmut Schauer Beispiel: Hierarchisches File System 2

Mehr

Inhalte Informatik. I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen

Inhalte Informatik. I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen Inhalte Informatik I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen II.0 Grundlegende Programmstrukturen und Algorithmen Sortier- und Suchalgorithmen auf Arrays

Mehr

CLRS benutzt eine etwas andere Definition:

CLRS benutzt eine etwas andere Definition: Bemerkungen LRS benutzt eine etwas andere Definition: Für einen B-Baum vom rad t gilt: - jeder Knoten, außer der Wurzel, hat mindestens t- Schlüssel, also mindestens t Kinder - jeder Knoten besitzt höchstens

Mehr

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20 Suche in Spielbäumen Suche in Spielbäumen KI SS2011: Suche in Spielbäumen 1/20 Spiele in der KI Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche Einschränkung von Spielen auf: 2 Spieler:

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr