Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen -

Größe: px
Ab Seite anzeigen:

Download "Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen -"

Transkript

1 Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen - 5) Suchverfahren Prof. Dr. Anja Schanzenberger FH Augsburg, Fakultät für Informatik Kontakt: Sommer Semester 2008 (Stand: ) Studiengang Bachelor Informatik (Ibac2), Hochschule Augsburg, 2008 Die vorliegenden Unterlagen zur Vorlesung GdI Teil 2 dürfen nur verwendet werden für Studienzwecke durch Studierende der FH Augsburg.

2 Gliederung 1. Symboltabellen 1. Abstrakter Datentyp für Symboltabellen 2. Schlüsselindizierte Suche 3. Sequenzielle Suche 4. Binäre Suche 2. Binäre Suchbäume 3. Ausgeglichene Bäume 1. AVL-Bäume 2. Randomisierte binäre Suchbäume 3. Splay binäre Suchbäume 4. Top-Down Bäume 5. Rot-Schwarz Bäume 6. Skiplisten 7. B-Bäume 8. B*/B Bäume 9. Amerikanische B*-Bäume 2

3 Lernziel Welche Möglichkeiten kennen Sie doppelte Schlüssel in einer Symboltabelle zu halten und wann würden Sie die Verwendung einer Möglichkeit empfehlen? Warum führt man Rotationen in binären Suchbäumen aus und welche Arten davon haben Sie kennen gelernt? Warum benötigt man bei rot-schwarz Bäumen eine Transformation von 4er-Knoten, wobei es in diesen Bäumen nur 2-er Knoten gibt? 3

4 1. Symboltabellen (1) Suchen bezeichnet man als das Abrufen bestimmter Informationseinheiten aus größeren vorher gespeicherten Datenbeständen Verfahren zum Suchen in Dateien (Files) die Elemente (Items) enthalten Elemente enthalten Schlüssel (Keys) und Informationen (Values, Data, Datensätze,...) Ziele der Suche: Elemente finden, die mit dem gegebenen Suchschlüssel übereinstimmen Ergebnis ist normalerweise die Information die zu einem gefundenem Schlüssel gespeichert ist 4

5 1. Symboltabellen (2) Eine Symboltabelle ist eine Datenstruktur von Elementen mit Schlüsseln, die zwei grundsätzliche Operationen unterstützen: Insert: Einfügen eines neuen Elements Search: Zurückgeben eines Elements mit einem gegebenen Schlüssel Andere Bezeichnung: Dictionary ( de: Wörterbuch) Weitere wichtige Operationen: Remove: Elemente entfernen Change: Elemente ändern Select: Auswählen des k-größten Elements Sort: Sortieren der Symboltabelle (Elemente in Reihenfolge der Schlüssel anzeigen) Join: Zwei Symboltabellen zu einer zusammenfassen Standard: Konstruieren, Testen ob leer, Zerstören, Kopieren 5

6 1.1 ADT für Symboltabellen (1) ADT für Elemente Implementierung Item.cxx #include <iostream.h> #include <stdlib.h> static int maxkey=1000; typedef int Key; class Item { private: Key keyval; float info; public: Item() { keyval = maxkey;} Key key() { return keyval;} }; int null() { return keyval == maxkey; } void rand() { keyval=1000*::rand()/rand_max; info=1.0*rand()/rand_max; } int scan (istream& is = cin) { return (is>>keyval>>info)!=0; } void show (ostream& os = cout) { os<<keyval<< <<info<<endl;} ostream& operator<<(ostream& os, Item& x) { x.show(os); return os; 6

7 1.1 ADT für Symboltabellen (2) ADT für Symboltabellen Schnittstelle ST.cxx template <class Item, class Key> class ST { private: //Implementierungsabhaengiger Code public: ST(int); int count(); //Elemente zaehlen Item search(key); void insert (Item); void remove (Item); Item select(int); //k-kleinstes Element auswaehlen void show(ostream&); }; 7

8 1.1 ADT für Symboltabellen (3) Möglichkeiten mit doppelten Schlüsseln (=mehrere Suchtreffer) Abweisen doppelter Schlüssel Primäre Datenstruktur verwenden In einer Datenstruktur auch die doppelten Schlüssel speichern Bei Suche: Rückgabe einer Liste von Elementen Primäre Datenstruktur verwenden und Kennzeichner In einer Datenstruktur auch die doppelten Schlüssel speichern Bei Suche: Suche nach gegebenem Schlüssel und Kennzeichner. Rückgabe einer Liste von Elementen Primäre und sekundäre Datenstruktur verwenden In primärer Datenstruktur nur erstes Vorkommen eines mehrfach vorkommenden Elements speichern In sekundärer Datenstruktur zu einem Schlüssel alle weiteren Elemente speichern Vorteil: Alle Elemente lassen sich mit nur einem Such-Aufruf zurückgeben und mit nur einem Entfernen-Aufruf entfernen 8

9 1.1 ADT für Symboltabellen (4) Symboltabellen Clientprogramm Suche von zufällig generierten oder von stdin eingelesenen eindeutigen Schlüsseln Clientprogramm #include <iostream.h> #include <stdlib.h> #include Item.cxx #include ST.cxx int main (int argc, char *argv[]) { int N, maxn = atoi(argv[1]); sw = atoi(argv[2]); ST<Item,Key> st(maxn); for (N=0; N<maxN; N++) { Item v; if (sw) v.rand(); else if (!v.scan()) break; if (!(st.search(v.key())).null()) continue; st.insert(v); } } st.show(cout); cout <<endl; cout <<N<< Key <<endl; cout<<st.count()<< eindeutige Schlüssel <<endl; Zufällige Keys oder von stdin eingelesen Durch search feststellen of Key schon vorhanden ist; Falls nicht dann insert 9

10 1.1 ADT für Symboltabellen (5) Leistungsdaten Suchen, Einfügen, Entfernen und Auswählen für zufällige Schlüssel: T avg log n Weitere berühmte Operationen für Symboltabellen: Fingersuche: Neue Suche beginnt an Punkt an dem alte Suche aufgehört hat Bereichssuche: Alle Knoten innerhalb eines Intervalls zählen oder anzeigen Suche des nächsten Nachbarn: Elemente mit Schlüsseln suchen die einem gegebenen Schlüssel am nächsten liegen 10

11 1.2 Schlüsselindizierte Suche (1) Eigenschaften Schlüsselwerte sollten eindeutige, kleine Zahlen sein Elemente werden in einem Array gespeichert Array wird durch die Schlüssel indiziert Ergebnis: Schlüsselindizierte arraybasierte Symboltabelle Initialisieren: Operator new[] initialisiert alle Einträge mit nullitem 11

12 1.2 Schlüsselindizierte Suche (2) Eigenschaften Einfügen: fügt Element mit Schlüsselwert k ein, indem es dies in st[k] speichert Suchen: Sucht nach Element mit Schlüsselwert k, indem es den Wert aus st[k] zurückgibt Entfernen: Element mit Schlüsselwert k wird entfernt, indem nullitem in st[k] geschrieben wird Auswählen, Sortieren, Zählen: Lineares Durchsuchen des Arrays, wobei Nullelemente übersprungen werden 12

13 1.2 Schlüsselindizierte Suche (3) Schlüsselindizierte arraybasierte Symboltabelle Schlüssel mit pos. Ganzzahlen kleiner als Markierungsschlüssel M Schnittstellenimplementierung ST.cxx void insert (Item x) { template <class Item, class Key> class ST { private: Item nullitem, *st; int M; public: ST(int maxn) { M=nullItem.key(); st= new Item[M]; } int count() { //Elemente zaehlen int N=0; for (int i=0; i<m; i++) if (!st[i].null()) N++; return N; } Item search(key v) { return st[v]; } } st[x.key()] = x; } void remove (Item) { st[x.key()]=nullitem; } Item select(int k) { for (int i=0; i<m; i++) if (!st[i].null()) if (k--==0) return st[i]; return nullitem; } void show(ostream& os) { for (int i=0; i<m; i++) if (!st[i].null() st[i].show(os); } 13

14 1.2 Schlüsselindizierte Suche (4) Leistungsdaten Schlüsselwerte: 0 bis M-1 Anzahl Elemente: N Bedingung für die Schlüssel: N<=M Wenn M groß ist, müssen die Kosten für den erforderlichen Speicherplatz berücksichtigt werden Wenn N << M, dann sind die Kosten für die Zeit die der ST- Konstruktor benötigt, zu berücksichtigen Suchen und Einfügen lassen sich kaum effizienter implementieren Suchen, Einfügen und Entfernen: Benötigen konstante Laufzeit: O(c) Initialisieren, Auswählen und Sortieren: Laufzeit wächst proportional zu M, wenn eine der Operationen auf eine Tabelle mit N Elementen ausgeführt wird: O(n) 14

15 1.3 Sequenzielle Suche (1) Eigenschaften Schlüsselwerte umfassen großen Zahlenbereich Elemente werden in einem Array gespeichert Elemente werden sortiert und hintereinander im Array gespeichert Einfügen: Verschieben der größeren Elemente um eine Position nach hinten (Sortieren durch Einfügen) Suche: Sequenzielles Durchlaufen des Arrays; Suchfehler kann festgestellt werden sobald Schlüssel gefunden wird der größer wie der Suchschlüssel ist 15

16 1.3 Sequenzielle Suche (2) Arraybasierte Symboltabelle (geordnet) Schnittstellenimplementierung ST.cxx Item search(key v) { template <class Item, class Key> class ST { private: Item nullitem, *st; int N; public: ST(int maxn) { st=new Item[maxN+1]; N=0; } int count() { return N; } } for (int i=0; i<n; i++) if (!(st[i].key() < v)) break; if (v == st[i].key()) return st[i]; return nullitem; } void insert (Item x) { int i=n++; Key v=x.key(); while (i>0 && v<st[i-1].key()) { st[i]=st[i-1]; i++; } st[i]=x; } Item select(int k) { return st[k]; } void show(ostream& os) { int i=0; while (i<n) st[i++].show(os); } 16

17 1.3 Sequenzielle Suche (3) Alternativen Geordnetes Array Neues Element einsortieren Einfügen: Langsamer durch verschieben größerer Elemente Suchen: sequentiell Durchsuchen bis Schlüssel gefunden oder Schlüssel größer sind Ungeordnet Array Neues Element am Ende anhängen Einfügen: sehr schnell Suchen: sequentiell Durchsuchen bis Ende Auswählen und Sortieren laufen langsamer Entfernen: Element suchen, letztes Element im Array an die Position verschieben, Größe des Arrays dekrementieren 17

18 1.3 Sequenzielle Suche (4) Auf verketteter Liste basierende Symboltabelle (ungeordnet) Schnittstellenimplementierung ST.cxx Item searchr(link t; Key v) { #include <stdlib.h> if (t==0) return nullitem; template <class Item, class Key> if (t->item.key() == v) class ST { return t->item; private: return searchr(t->next,v); Item nullitem; } struct node { public: Item item; node *next; ST(int maxn) { node(item x, node *t) { head=0; N=0; } item=x; next=t; } int count() { }; return N; } typdef node *link; Item search(key v) { int N; return searchr(head,v); } link head; void insert (Item x) { head=new node(x,head); N++; } }; 18

19 1.3 Sequenzielle Suche (5) Alternativen Array Maximale Größe des Arrays muss im Voraus bekannt sein Geordnet und Ungeordnet möglich Verkettete Liste Maximale Größe der verketteten Liste muss nicht im Voraus bekannt sein Geordnet und Ungeordnet möglich Benötigt zusätzlichen Speicherplatz für die Verbindungen Auswählen (Select) ist nicht effizient implementierbar Effizientes Verknüpfen und Entfernen 19

20 1.3 Sequentielle Suche (6) Leistungsdaten Ungünstigster Fall Durchschnittlicher Fall Auswählen Einfügen Suche n Einfügen Suchtreffer Suchfehler Schlüsselindiziertes Array 1 1 M Geordnetes Array N N 1 N/2 N/2 N/2 Geordnete verkettete Liste N N N N/2 N/2 N/2 Ungeordnetes Array 1 N N lg N 1 N/2 N Ungeordnete verkettete Liste 1 N N lg N 1 N/2 N 20

21 1.4 Binäre Suche (1) Eigenschaften Teile-und-herrsche Verfahren Menge der Elemente wird in zwei Teile zerlegt Bestimmt wird zu welcher Menge der Suchschlüssel gehört; dann wird mit diesem Teil weiter gearbeitet Elemente sind sortiert Es werden Indizes auf das sortierte Array verwendet, um den Teil des Arrays einzugrenzen, mit dem weiter gearbeitet wird Es gibt rekursive und nicht-rekursive Variante (siehe Einführungskapitel 1) 21

22 1.4 Binäre Suche (2) Binäre Suche für arraybasierte Symboltabelle Kein Stack erforderlich, weil die rekursive Funktion in einem rekursiven Aufruf endet Teil der Schnittstellenimplementierung ST.cxx private: Item searchr (int l, int r, Key v) { if (l>r) return nullitem; int m=(l+r)/2; if (v==st[m].key()) return st[m]; if (l==r) return nullitem; if (v<st[m].key()) return searchr(l,m-1,v); else return searchr(m+1,r,v); } public: Item search(key v) { return searchr(0,n-1,v); } 22

23 1.4 Binäre Suche (3) Beispiele Gesucht: Wieviele Iterationen werden bei 200 Elementen benötigt? 7 Iterationen: 200, 99, 49, 24, 11, 5, 2, 1 Jede Iteration ist etwas kleiner als die Hälfte der vorhergehenden 23

24 1.4 Binäre Suche (4) Leistungsdaten Ungünstigster Fall Durchschnittlicher Fall Auswählen Einfügen Suche n Einfügen Suchtreffer Suchfehler Binäre Suche N lg N 1 N/2 lg N Lg N 24

25 2. Binäre Suchbäume (1) Eigenschaften Löst das Problem das Einfügeoperationen teuer sind Symboltabelle wird auf expliziter Baumstruktur aufgebaut Schnelle Operationen Suchen, Einfügen, Auswählen und Sortieren möglich Gutes Verfahren das zu den elementarsten Algorithmen in der Informatik zählt Ein binärer Suchbaum (engl. BST: binary search tree) ist ein Binärbaum, bei dem jeder interne Knoten mit einem Schlüssel verbunden ist Ein Schlüssel in einem beliebigen Knoten ist größer (oder >=) als alle Schlüssel in Knoten aus seinem linken Teilbaum, und kleiner (oder <=) alle Schlüssel in Knoten aus seinem rechten Teilbaum 25

26 2. Binäre Suchbäume (2) Auf binärem Suchbaum basierende Symboltabelle Search und Insert rufen die privaten rekursiven Funktionen auf Head zeigt auf die Wurzel im Baum Schnittstellenimplementierung ST.cxx template <class Item, class Key> class ST { private: struct node { Item item; node *l, *r; node (Itemx) { item=x; l=0; r=0; } }; typedef node *link; link head; Item nullitem; Item searchr(link h, Key v) { if (h==0) return nullitem; Key t= h->item.key(); if (v==t) return h->item; if (v<t) return searchr(h->l, v); else return searchr(h->r, v); } void insertr(link& h, Item x) { if (h==0) {h=new node(x); return; } if (x.key() < h->item.key()) insertr(h->l, x); else insertr(h->r, x); } 26

27 2. Binäre Suchbäume (3) Auf binärem Suchbaum basierende Symboltabelle }; Schnittstellenimplementierung ST.cxx public: ST(int maxn) {head=0; } Item search(key v) { return searchr (head, v); } void insert(item x) { insertr (head, x); } Die Suchoperation stoppt wenn entweder ein Element mit dem Suchschlüssel gefunden ist (Suchtreffer) oder der aktuelle Teilbaum leer ist (Suchfehler) 27

28 2. Binäre Suchbäume (4) Beispiel Erfolgreiche Suche nach Schlüssel

29 2. Binäre Suchbäume (5) Beispiel Erfolglose Suche nach Schlüssel

30 2. Binäre Suchbäume (6) Beispiel Einfügen von Schlüssel 13 (links von 14)

31 2. Binäre Suchbäume (7) Konstruktion eines binären Suchbaums Sequenz: 1, 19, 5, 18, 3, 8, 9, 14, 7, 25, 13, 16,

32 2. Binäre Suchbäume (8) Konstruktion eines binären Suchbaums Sequenz: 1, 19, 5, 18, 3, 8, 9, 14, 7, 25, 13, 16,

33 2. Binäre Suchbäume (9) Konstruktion eines binären Suchbaums Sequenz: 1, 19, 5, 18, 3, 8, 9, 14, 7, 25, 13, 16,

34 2. Binäre Suchbäume (10) Sortieren mit binärem Suchbaum Elemente in Reihenfolge ihrer Schlüssel anzeigen Traversieren in Inorder-Reihenfolge genügt in diesem Fall Elemente im linken Teilbaum (rekursiv) ausgeben Dann die Wurzel Anschließend die Elemente im rechten Teilbaum (rekursiv) ausgeben private: void showr (link h, ostream&os) { if (h==0) return; showr(h->l, os); h->item.show(os); showr(h->r.os); } public: void show (ostream&os) { showr(head, os); } 34

35 2. Binäre Suchbäume (11) Einfügen in binären Suchbaum (nicht-rekursiv) Suchfehler finden, worauf die leere Verbindung durch einen Zeiger auf den neuen Knoten ersetzt wird Vorgänger p des aktuellen Knoten k festhalten Unten angelangt zeigt p auf den Knoten, dessen Verbindung auf den neuen Knoten zeigen muss void insert (Item x ) { Key v=x.key(); if (head==0) {head=new node(x); return;} link p=head; for (link q=p; q!=0; p=q?q:p) q=(v<q->item.key())? q->l : q->r; if (v < p->item.key()) p->l = new node(x); else p->r = new node(x); } 35

36 2. Binäre Suchbäume (12) Leistungsdaten Laufzeiten von Algorithmen auf binäre Suchbäume sind von der Gestalt der Bäume abhängig Bester Fall: Baum vollständig ausgeglichen mit ld N Knoten zwischen Wurzel und jedem externen Knoten Ungünstigster Fall: N Knoten in jedem Suchpfad; Baumhöhe bestimmt die Kosten einer Suche Durchschnittlicher Fall: logarithmische Suchzeit Ungünstigster Fall Durchschnittlicher Fall Auswählen Einfügen Suche n Einfügen Suchtreffer Suchfehler Binäre Suchbaum N N N Lg N lg N Lg N 36

37 2. Binäre Suchbäume (13) Beispiel: binärer Suchbaum Einfügen von ca. 200 zufällige Schlüsseln in einen anfangs leeren Baum Gut ausgeglichen und wächst eher in die Breite als in die Höhe Keine Suche benötigt mehr als 12 Vergleiche Die durchschnittlichen Kosten für einen Suchtreffer betragen ungefähr 10 37

38 2. Binäre Suchbäume (14) Beispiele für ungünstige Fälle Schlüssel treffen in aufsteigender Reihenfolge ein - Binärer Suchbaum ist nicht gut ausgeglichen - Binärer Suchbaum entartet zu einfach verketteter Liste - quadratische Konstruktionszeit - lineare Suchzeit zufällig geordnete Schlüssel - Binärer Suchbaum ist dennoch nicht gut ausgeglichen 38

39 2. Binäre Suchbäume (15) Indeximplementierungen Eigenschaften Arraygröße muss im Voraus bekannt sein Genug Speicherplatz muss vorhanden sein Index: Eine zu den Elementen externe Suchstruktur, die schnellen Zugriff auf Elemente mit einem gegebenen Suchschlüssel bietet Drei Arrays: Elemente, die linken Verbindungen und die rechten Verbindungen Die Verbindungen sind Arrayindizes (Ganzzahlen) Verbindungsreferenzen wie x=x->l durch x=l[x] ersetzen Anwendung Schlüsselwortsuche in einem Textstring 39

40 2. Binäre Suchbäume (16) Beispiel 0 call me ishmael some... 5 me ishmael some year... 8 ishmael some year a some years ago never years ago never mind ago never mind how l never mind how long mind how long precis how long precisely h long precisely having precisely having lit call me never mind Suche: Ist never mind enthalten? - Stringschlüssel auf Beginn jedes Wortes (=Stringindex) - Erstellung des binären Suchbaums - Zugriff über Stringindex some 21 40

41 2. Binäre Suchbäume (17) Client für das Indizieren eines Textstrings mit binärem Suchbaum Item.cxx: char* für Stringschlüssel in Elementen überladener Operator< verwendet strcmp überladener Operator== verwendet strcmp Umwandlungsoperator von Item nach char* 41

42 2. Binäre Suchbäume (18) Client für das Indizieren eines Textstrings #include <iostream.h> #include <fstream.h> #include Item.cxx #include ST.cxx static char text[maxn]; int main (int argc, char *argv[]) { int N=0; char t; ifstream corpus; corpus.open(*++argv); while (N<maxN && corpus.get(t)) text[n++]=t; text[n]=0; ST<Item, Key> st(maxn); for (int i=0; i<n; i++) st.insert(&text[i]); char query[maxq]; Item x, v(query); while (cin.getline(query, maxq)) if ((x=st.search(v.key()).null()) cout << nicht gefunden: << query << endl; else cout <<x->text << : << query << endl; Prof. } Dr. A. Schanzenberger 42

43 2. Binäre Suchbäume (19) Leistungsdaten Suche: 2N ln N Vergleiche Bedeutung: Nachdem der Index erstellt ist kann man in ca. 1 Million Zeichen mit 30 Stringvergleichen jede Phrase im Text finden (z.b. Buch von Moby Dick) 43

44 2. Binäre Suchbäume (20) Leistungsdaten Empirische Ergebnisse für Implementierungen von Symboltabellen 44

45 2. Binäre Suchbäume (21) Einfügen an der Wurzel im binären Suchbaum Standardimplementierung war: Neu eingefügter Knoten ersetzt einen externen Knoten (unterste Baumebene) Alternative: Einfügen eines neuen Knoten an der Wurzel Zuletzt eingefügte Knoten befinden sich an der Spitze des Baums Zwei mögliche Fälle: Einzufügender Schlüssel ist... größer als Schlüssel an der Wurzel Einzufügender Schlüssel ist neuer Wurzelknoten Die alte Wurzel als linken Teilbaum nehmen Den rechten Teilbaum der alten Wurzel als rechten Teilbaum nehmen Problem: Rechter Teilbaum kann kleinere Schlüssel enthalten, so dass etwas mehr getan werden muss um das Einfügen abzuschließen kleiner als Schlüssel an der Wurzel Einzufügender Schlüssel ist neuer Wurzelknoten Die alte Wurzel als rechten Teilbaum nehmen Den linken Teilbaum der alten Wurzel als linken Teilbaum nehmen Problem: Linker Teilbaum kann größere Schlüssel enthalten, so dass etwas mehr getan werden muss um das Einfügen abzuschließen 45

46 2. Binäre Suchbäume (22) Einfügen an der Wurzel im binären Suchbaum Rotation Rolle der Wurzel und eines der Nachfolger der Wurzel in einem Baum vertauschen Die Ordnung des binären Suchbaums zwischen den Schlüsseln in den Knoten bleibt bewahrt Rechtsrotation: Wirkt auf die Wurzel und den linken Nachfolger Die Rotation bringt die Wurzel nach rechts und kehrt damit die Richtung der linken Verbindungen in der Wurzel um Linksrotation: Wirkt auf die Wurzel und den rechten Nachfolger Die Rotation bringt die Wurzel nach links und kehrt damit die Richtung der rechten Verbindungen in der Wurzel um 46

47 2. Binäre Suchbäume (23) Einfügen an der Wurzel im binären Suchbaum Rechtsrotation Restbaum bleibt unverändert Rotation um Knoten 19: 19 geht nach unten und wird rechter Nachfolger seines vorherigen linken Nachfolgers Vorgehen: -Verbindung zur neuen Wurzel 5 von der linken Verbindung von 19 holen - Die linke Verbindung von 19 durch Kopieren der rechten Verbindung von 5 setzen - Die rechte Verbindung von 5 auf 19 setzen - Die rechte Verbindung von 1 nicht mehr auf 19 sondern auf 5 setzen 47

48 2. Binäre Suchbäume (24) Einfügen an der Wurzel im binären Suchbaum Linkssrotation Restbaum bleibt unverändert Rotation um Knoten 1: 1 geht nach unten und wird linker Nachfolger seines vorherigen rechten Nachfolgers Vorgehen: -Verbindung zur neuen Wurzel 5 von der rechten Verbindung von 1 holen - Die rechte Verbindung von 1 durch Kopieren der linken Verbindung von 5 setzen - Die linke Verbindung von 5 auf 1 setzen - Die Kopfverbindung des Baums nicht mehr auf 1 sondern auf 5 zeigen lassen 48

49 2. Binäre Suchbäume (25) Einfügen an der Wurzel im binären Suchbaum Eigenschaften von Rotationen Lokale Änderung Beteiligt sind drei Verbindungen und zwei Knoten Knoten können im Baum verschoben werden ohne die globale Ordnung anzutasten Grund für Rotationen: Ausgeglichenheit von Bäumen aufrechterhalten 49

50 2. Binäre Suchbäume (26) Einfügen an der Wurzel im binären Suchbaum Implementierung von Rotationen im binären Suchbaum Rechtsrotation Macht die Wurzel zum rechten Teilbaum der neuen Wurzel void rotationr (link& h) { link x=h->l; h->l = x->r; x->r = h; h=x; } Linksrotation Macht die Wurzel zum linken Teilbaum der neuen Wurzel void rotationl (link& h) { link x=h->r; h->r = x->l; x->l = h; h=x; } 50

51 2. Binäre Suchbäume (27) Einfügen an der Wurzel im binären Suchbaum Konstruktion eines binären Suchbaums durch Einfügen an einem Blatt und rotieren bis zur Wurzel Einfügen von

52 2. Binäre Suchbäume (28) Einfügen an der Wurzel im binären Suchbaum Konstruktion eines binären Suchbaums durch Einfügen an einem Blatt und rotieren bis zur Wurzel Einfügen von

53 2. Binäre Suchbäume (29) Einfügen an der Wurzel im binären Suchbaum Implementierung der Konstruktion eines binären Suchbaums durch Einfügen an einem Blatt und rotieren bis zur Wurzel Einfügen eines neuen Elements an einem Blatt im geeigneten Teilbaum Durchführen der passenden (rekursiven) Rotation, um es zur Wurzel zu bringen private: void insertt (link& h, Item x) { if (h==0) { h=new node(x); return; } if (x.key() < h->item.key()) {insertt (h->l,x); rotationr(h); } else { insertt (h->r,x); rotationl(h);} } public: void insert (Item item) { insertt (head, item); } 53

54 2. Binäre Suchbäume (30) Einfügen an der Wurzel im binären Suchbaum Konstruktion eines binären Suchbaums durch Einfügen an der Wurzel Sequenz: 1, 19, 5, 18, 3, 8,

55 2. Binäre Suchbäume (31) Einfügen an der Wurzel im binären Suchbaum Konstruktion eines binären Suchbaums durch Einfügen an der Wurzel Einsatz in der Praxis: Verfahren hat den Vorteil, dass sich zuletzt eingefügte Schlüssel in der Nähe der Spitze befinden Kosten sind bei zuletzt eingefügten Schlüsseln eher geringer als bei Standardverfahren Oft bezieht sich ein großer Prozentsatz der Suchen auf Elemente die zuletzt eingefügt wurden Beispiel: Transaktionsverarbeitung bei dem aktive Transaktionen in der Nähe der Spitze bleiben 55

56 2. Binäre Suchbäume (32) Implementation anderer Funktionen: Auswählen Element mit k-kleinsten Schlüssel finden Für jeden Knoten muss die Teilbaumgröße mit gespeichert werden Anzahl Knoten im linken Teilbaum prüfen k Knoten enthalten: Wurzelelement zurückgeben Mehr wie k Knoten enthalten: rekursiv im linken Teilbaum prüfen Sonst: linker Teilbaum enthält t Elemente mit t<k. Das k-kleinste Element ist das (k-t-1)-kleinste Element im rechten Teilbaum private: Item selectr (link &h, int k) { if (h==0) return nullitem; int t = (h->l == 0)? 0: h->l->n; if (t>k) return selectr(h->l, k); if (t<k) return selectr(h->r, k-t-1); return h->item; } public: Item select (int k) { return selectr (head,k); } 56

57 2. Binäre Suchbäume (33) Implementation anderer Funktionen: Zerlegen Durch Zerlegen Element mit k-kleinsten Schlüssel finden Auswählen in Operation Zerlegen ändern Baum neu anordnen, um das k-kleinste Element zur Wurzel zu bringen Nach den rekursiven Aufrufen eine Rotation hinzufügen (siehe Beispiel wie bei: Konstruktion eines binären Suchbaums durch Einfügen an einem Blatt und rotieren bis zur Wurzel) private: Item partr (link& h, int k) { int t = (h->l == 0)? 0: h->l->n; if (t>k) {partr(h->l, k); rotationr(h); } if (t<k) {partr(h->r, k-t-1); rotationl(h); } } 57

58 2. Binäre Suchbäume (34) Implementation anderer Funktionen: Entfernen 1 Entfernen der Wurzel Linke Verbindung muss leer sein Kleinstes Element im rechten Teilbaum

59 2. Binäre Suchbäume (35) Implementation anderer Funktionen: Entfernen Entfernen der Wurzel Ansatz ist asymmetrisch und ad-hoc Warum muss kleinster Schlüssel im zweiten Baum genommen werden? Alternativen Größten Schlüssel im ersten Baum nehmen Falls der zu entfernende Konten eine linke Nullverbindung enthält kann man ihn zum rechten Nachfolger der neuen Wurzel machen Alle diese Verfahren sind subobtimal da... Zurückbleibender Baum ist nicht mehr zufällig auch wenn er vorher zufällig war Es bleiben unausgeglichene Bäume zurück (mit durchschnittlicher Höhe von der Wurzel aus N) 59

60 2. Binäre Suchbäume (36) Implementation anderer Funktionen: Entfernen Entfernen eines Knotens 1: Entfernen von 8 7 2: Entfernen von Knoten wird einfach entfernt, da unterste Ebene wird durch 25 ersetzt, da der linke Nachfolger von 25 leer ist 8 60

61 2. Binäre Suchbäume (37) Implementation anderer Funktionen: Entfernen Entfernen eines Knoten 3: Entfernen von Knoten 18 hat linken Nachfolger, also wird Knoten 7 durch seinen Nachfolger Knoten 8 im Baum ersetzt

62 2. Binäre Suchbäume (38) Implementation anderer Funktionen: Entfernen Implementierung von Entfernen eines Knoten Methode entfernt den ersten Knoten mit Schlüssel v der gefunden wird Baum wird von oben nach unten durchgearbeitet rekursive Aufrufen für die Teilbäume bis sich der zu entfernende Knoten an der Wurzel befindet Knoten wird dann ersetzt durch Zusammenfügen beider Teilbäume Kleinster Knoten im rechten Teilbaum wird neue Wurzel und dessen linke Verbindung wird auf den linken Teilbaum gesetzt 62

63 2. Binäre Suchbäume (39) Implementation anderer Funktionen: Entfernen Implementierung von Entfernen eines Knoten private: link joinlr (link a, link b) { if (b==0) return a; partr (b, 0); b->l = a; return b; } void remover (link& h, Key v) { if (h==0) return; Key w = h->item.key(); if (v<w) remover(h->l, v); if (v>w) remover(h->r, v); if (v==w) { link t=h; h=joinlr(h->l, h->r); delete t; } } public: void remove (Item x) { remover (head, x.key()); } Es ist typisch für Suchalgorithmen, dass sie beträchtlich kompliziertere Implementierungen für das Entfernen als für das Suchen erfordern Abhilfemöglichkeiten: - Knoten zum Löschen nur markieren (lazy Ansatz) - Baum ab und zu neu aufbauen 63

64 2. Binäre Suchbäume (40) Implementation anderer Funktionen: Verknüpfen Mischen zweier binärer Suchbäume Alternativen Siehe nächste Folie Ersten Suchbaum traversieren und jeden Knoten in den zweiten Suchbaum einfügen Laufzeit: >linear, da jedes Einfügen linear erfolgen kann Beide Suchbäume traversieren, Element in ein Array übernehmen, die Elemente mischen und in einen neuen Suchbaum einfügen Laufzeit: Linear Speicherplatz: Array für alle Elemente Rekursive Impl.: Wurzel des ersten Suchbaums an der Wurzel des zweiten Suchbaums einfügen. Dies ergibt zwei Teilbäume mit Schlüsseln die größer als diese Wurzeln sind. Rekursiv wird das erste Paar als linker Teilbaum der Wurzel zusammengefasst; Rekursiv wird das zweite Paar als rechter Teilbaum der Wurzel kombiniert Laufzeit: linear, da jeder Knoten kann in einem rekursiven Aufruf höchstens einmal der Wurzelknoten sein 64

65 2. Binäre Suchbäume (41) Implementation anderer Funktionen: Verknüpfen Beispiel : : Zwei Teilbaumpaare mit neuer Wurzel

66 2. Binäre Suchbäume (42) Implementation anderer Funktionen: Verknüpfen Beispiel 3: Ergebnis

67 2. Binäre Suchbäume (43) Implementation anderer Funktionen: Verknüpfen Implementierung private: link joinr (link a, link b) { if (b==0) return a; //Leerer Suchbaum dann anderer ist das Ergebnis if (a==0) return b; insertt (b, a->item); //in zweiten Suchbaum neue Wurzel einfügen b->l = joinr(a->l, b->l); b->r = joinr(a->r, b->r); delete a; return b; } public: void join (ST<Item, Key>&b) { head = joinr (head, b.head); //Member head ist a } 67

68 2. Binäre Suchbäume (44) Implementation anderer Funktionen: Verknüpfen Alle diese Verfahren sind subobtimal da... Vorgang ist asymmetrisch Es bleiben unausgeglichene Bäume zurück

69 2. Binäre Suchbäume (45) Diskussion der Suchbäume Vorteile Garantiert hohe Leistung bei Suchen, Einfügen und Sortieren Auswählen, Entfernen, Verknüpfen: einfache rekursive Lösungen sind möglich Nachteile Speicherplatz für Verbindungen ist hoch (Alternative: Hashing-Verfahren) Entfernen und Verknüpfen: Möglichkeit besteht zu schlecht ausgeglichenen, asymmetrischen Suchbäumen Im ungünstigsten Fall zeigt sich eine schlechte Leistung 69

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume. B-Bäume Digitale Suchbäume Heaps

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

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

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

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

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

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

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

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

Mehr

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

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

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

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

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

Mehr

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

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

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

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

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

Dynamische Mengen. Realisierungen durch Bäume

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

Mehr

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

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

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

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

Copyright, Page 1 of 8 AVL-Baum

Copyright, Page 1 of 8 AVL-Baum www.mathematik-netz.de Copyright, Page 1 of 8 AVL-Baum 1. Motivation und Einleitung Das Suchen, Einfügen und entfernen eines Schlüssels in einem zufällige erzeugten binären Suchbaum mit N Schlüsseln ist

Mehr

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

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

Mehr

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

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

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

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

Informatik II, SS 2014

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

Mehr

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Musterlösung 1. Aufgabe (5 Punkte) Im folgenden Programmcode sind einige Fehler enthalten. Finden und markieren Sie mindestens

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen

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

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/3, Folie 1 2010 Prof. Steffen Lange - HDa/FbI

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

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

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr 3. Binäre Suchbäume 3.1 Natürliche binäre Suchbäume Definition 18 Ein natürlicher binärer Suchbaum über einem durch total geordneten Universum U ist ein als interner Suchbaum organisierter Binärbaum (also:

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

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

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

Tutoraufgabe 1 (2 3 4 Bäume):

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

Mehr

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

Datenstrukturen. einfach verkettete Liste

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

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Tiefensuche: Die globale Struktur Der gerichtete oder ungerichtete Graph G werde durch seine Adjazenzliste A repräsentiert. Im Array besucht wird vermerkt,

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 10, Donnerstag 8. Januar 2015 (Verkettete Listen, Binäre Suchbäume) Junior-Prof. Dr.

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

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

Binärbäume: Beispiel

Binärbäume: Beispiel Binärbäume Als Beispiel für eine interessantere dynamische Datenstruktur sehen wir uns jetzt Binärbäume an Ein Binärbaum wird rekursiv definiert: Er ist leer oder besteht aus einem Knoten (die Wurzel des

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

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

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

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...) Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...) Inhalt: Einleitung, Begriffe Baumtypen und deren Kodierung Binäre Bäume Mehrwegbäume Prüfer

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften: Binäre Suchbäume (a, b)-bäume (Folie 173, Seite 56 im Skript) Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften: 1 Jeder Knoten hat höchstens b Kinder. 2 Jeder

Mehr

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Strukturen Prof. Dr. Nikolaus Wulff Rekursive Strukturen Häufig müssen effizient Mengen von Daten oder Objekten im Speicher verwaltet werden. Meist werden für diese Mengen

Mehr

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Suchbäume mit inneren Knoten verschiedener Knotengrade. Was bisher geschah rekursive Datenstrukturen: lineare Datenstrukturen: Liste, Stack, Queue hierarchische Datenstrukturen: Bäume allgemeine Bäume Binäre Bäume Unäre Bäume = Listen Tiefe eines Knotens in

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

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

Bäume, Suchbäume und Hash-Tabellen

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

Mehr

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

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

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

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

Mehr

Praxis der Programmierung

Praxis der Programmierung Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

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

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl

Mehr

B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write

B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write Thomas Maier Proseminar: Ein- / Ausgabe Stand der Wissenschaft Seite 1 von 13 Gliederung 1. Hashtabelle 3 2.B-Baum 3 2.1 Begriffserklärung 3 2.2

Mehr

Bäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

Bäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Bäume 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Inhalt Grundbegriffe: Baum, Binärbaum Binäre Suchbäume (Definition) Typische Aufgaben Suchaufwand Löschen allgemein, Methode Schlüsseltransfer

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

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

Wie beim letzten Mal - bitte besucht: http://pingo.upb.de/549170 Ihr seid gleich wieder gefragt... Übung Algorithmen I 4.5.16 Lukas Barth lukas.barth@kit.edu (Mit Folien von Julian Arz, Timo Bingmann,

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/2, Folie 1 2014 Prof. Steffen Lange - HDa/FbI

Mehr

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Datenstruktur BDD 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer: Booleschen Funktionen)

Mehr

Übung Algorithmen I

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

Mehr

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

Balancierte Suchbäume

Balancierte Suchbäume Foliensatz 10 Michael Brinkmeier echnische Universität Ilmenau Institut für heoretische Informatik Sommersemester 2009 U Ilmenau Seite 1 / 74 Balancierte Suchbäume U Ilmenau Seite 2 / 74 Balancierte Suchbäume

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16. Januar 2013 (Balancierte Suchbäume) Junior-Prof. Dr. Olaf Ronneberger

Mehr