7. Natürliche Binärbäume

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Eine dynamische Menge, die diese Operationen unterstützt,
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
7.2 B-Bäume / B*-Bäume als Hilfsmittel zur Indexorganisation
Mindesthöhe: |_log2 n_|, maximale Höhe: n-1
Claudio Moraga; Gisbert Dittrich
Graphen Ein Graph ist eine Kollektion von Knoten und Kanten. Knoten sind einfache Objekte. Sie haben Namen und können Träger von Werten, Eigenschaften.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
Kapitel 6: Klassifizierung von Sortiertechniken
Gewichtsbalancierte Suchbäume
Durchlaufen eines Binärbaumes
Kapitel 6. Suchverfahren
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Balancierte Bäume Effizienz der Wörterbuchoperationen auf Bäumen hängt direkt von der Baumhöhe ab. Baum mit n Knoten: Mindesthöhe: |_log2 n_|, maximale.
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Sortieren vorsortierter Daten
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - Balancierte Bäume, AVL-Bäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – Bruder-Bäume, B-Bäume) Prof. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
Minimum Spanning Tree: MST
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Animationen zu Kap. 4.3: AVL-Bäume
Splay Trees Von Projdakov Benjamin.
2. Die rekursive Datenstruktur Baum 2
Einführung in die Programmierung
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Binäre Bäume Louis Moret und Reto Huber, 5. 11
Graphen und Bäume.
Kapitel 5: Von Datenstrukturen zu Abstrakten Datentypen
Algorithmen und Datenstrukturen Übungsmodul 8
Kapitel 6: Suchbäume und weitere Sortierverfahren
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Eine kurze Geschichte der Graphentheorie
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
7 Bäume = „verzweigte Folgen“ Z.B. Stammbaum, patriarchalisch: Abraham
Binärer Baum, Binärer Suchbaum I
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Diskrete Mathematik I Vorlesung 7 Binärer Suchbaum III.
Binärbäume.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 1 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
Laufzeitverhalten beim Sortieren
Punkt-in-Landkarte II
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
 Präsentation transkript:

7. Natürliche Binärbäume Ein Baum ist - ein azyklischer einfacher, zusammenhängender Graph - d. h. er enthält keine Schleifen und Zyklen: zwischen jedem Paar von Knoten besteht höchstens eine Kante Verallgemeinerung von Listen: Element (Knoten) hat möglicherweise mehrere Nachfolger (Söhne). Genau 1 Knoten ohne Vorgänger: Wurzel Knoten ohne Nachfolger: Blätter Häufig verwendete Datenstruktur: Entscheidungsbäume, Syntaxbäume, Ableitungsbäume, Suchbäume, ... Hier im Vordergrund: Verwendung von Bäumen zur Speicherung von Schlüsseln und Realisierung der Wörterbuchoperationen (Suchen, Einfügen, Entfernen) in Binärbäumen.

Darstellungsarten für orientierte Bäume 1) Mengendarstellung 2) Klammerdarstellung 3) Rekursives Einrücken 4) Graphendarstellung Stufe/Niveau 1 2 3 x a d h b c e f g

Ordnung von B: maximale Anzahl von Nachfolgern eines Knotens Baum B heißt geordnet, wenn Nachfolger jedes Knotens geordnet sind (1., 2., 3. etc.; linker, rechter). Bei einem geordneten Baum bilden die Unterbäume Bi jedes Knotens eine geordnete Menge. (Beispiel: Arithmetischer Ausdruck) Eine geordnete Menge von geordneten Bäumen heißt Wald. Ordnung von B: maximale Anzahl von Nachfolgern eines Knotens Pfad der Länge k: Folge p0, ..., pk von Knoten, so daß gilt: pi Nachfolger von pi-1. Höhe eines Baums: maximaler Abstand eines Blattes von der Wurzel. Tiefe eines Knotens: Abstand zur Wurzel, d.h. Anzahl der Kanten auf dem Pfad von diesem Knoten zur Wurzel. Die Knoten auf dem Niveau i sind alle Knoten mit Tiefe i. Ein Baum der Ordnung n heißt vollständig, wenn alle Blätter dieselbe Tiefe haben und auf jedem Niveau die maximale Anzahl von Knoten vorhanden ist.

Definition Ein Binärbäum ist ein geordneter Baum, in dem jeder Knoten höchstens zwei Söhne besitzt (Ordnung 2). Üblicherweise wird verlangt, dass jeder Knoten 2 oder 0 Nachfolger hat. Ein Binärbaum ist eine endliche Menge von Elementen, die entweder leer ist oder ein ausgezeichnetes Element - die Wurzel des Baumes - besitzt und folgende Eigenschaften aufweist: - Die verbleibenden Elemente sind in zwei disjunkte Untermengen zerlegt. - Jede Untermenge ist selbst wieder ein Binärbaum und heißt linker bzw. rechter Unterbaum des ursprünglichen Baumes

Formale ADT-Spezifikationen Datentyp BINBAUM Basistyp ELEM Operationen: LEER: BINBAUM  { TRUE, FALSE }; BAUEBAUM: BINBAUM x ELEM x BINBAUM  BINBAUM; LINKS: BINBAUM - {b0}  BINBAUM; WURZEL: BINBAUM - {b0}  ELEM; RECHTS: BINBAUM - {b0}  BINBAUM; ERZEUGE: b0

Satz: Die maximale Anzahl von Knoten eines Binärbaumes  l, r,  BINBAUM,  d  ELEM LEER ( BAUEBAUM ( l, d, r )) = FALSE ; LINKS ( BAUEBAUM ( l, d, r )) = l ; WURZEL ( BAUEBAUM ( l, d, r )) = d ; RECHTS ( BAUEBAUM ( l, d, r )) = r ; Satz: Die maximale Anzahl von Knoten eines Binärbaumes (1) auf Stufe i ist 2i , i  0 (2) der Höhe h ist 2h - 1 , h  1 Definition: Ein vollständiger Binärbaum der Stufe n hat folgende Eigenschaften: - Jeder Knoten der Stufe n ist ein Blatt. - Jeder Knoten auf einer Stufe < n hat nicht-leere linke und rechte Unterbäume.

Definition: In einem strikten Binärbaum besitzt jeder innere Knoten nicht-leere linke und rechte Unterbäume. Definition: Ein fast vollständiger Binärbaum ist ein Binärbaum (k  0), so daß gilt: (1) Jedes Blatt im Baum ist auf Stufe k oder k+1 (2) Falls ein innerer Knoten einen rechten Nachfolger auf Stufe k + 1 besitzt, dann ist sein linker Teilbaum vollständig mit Blättern auf Stufe k + 1. (3) Jeder Knoten auf Stufe < k hat nicht-leere linke und rechte Teilbäume. Definition: Bei einem ausgeglichenen Binärbaum ist jedes Blatt auf Stufe k oder k + 1 ( k  0 ). Jeder Knoten auf Stufe < k hat nicht-leere linke und rechte Teilbäume. Zwei Binärbäume werden als ähnlich bezeichnet, wenn sie dieselbe Struktur besitzen. Sie heißen äquivalent, wenn sie ähnlich sind und dieselbe Information enthalten.

Eigenschaften von Binärbäumen 1) Für zwei beliebige Knoten in einem Baum existiert genau ein Pfad, der sie verbindet. 2) Ein Binärbaum mit N Knoten hat N-1 Kanten. 3) Ein binärer Baum mit N inneren Knoten hat N + 1 äußere Knoten. 4) Die Höhe eines vollständigen binären Baumes mit N inneren Knoten beträgt log2N.

Binäre Suchbäume (natürliche Binärbäume) Für jeden Knoten p eines binären Suchbaums gilt: Die Schlüssel im linken Teilbaum von p sind sämtlich kleiner als der Schlüssel von p, und dieser wiederum ist kleiner als sämtliche Schlüssel im rechten Teilbaum von p. Ein binärer Suchbaum B =<K,A,S> für eine linear geordnete Menge M ist ein geordneter, binärer Baum B =<K,A> mit einer Abbildung S: K->M von der Knotenmenge K in die Schlüsselmenge M. Für jeden Knoten k von B muss gelten: (1) S(k) > S(u) für alle Knoten u im linken Teilbaum von k, (2) S(k) <=S(u) für alle Knoten u im rechten Teilbaum von k. Aufbau von Binärbäumen (Beispiel).

2 Arten der Speicherung: 1) Suchbäume: Schlüssel an inneren Knoten gespeichert, Blätter repräsentieren Intervalle 2) Blattsuchbäume: Schlüssel in Blättern gespeichert, Markierung an inneren Knoten dienen als "Wegweiser" zum Finden des richtigen Blattes.

Repräsentation von Binärbäumen: 1) Arrays. Nachfolger von a[i] sind a[2i] und a[2i+1] Feldbaum - Realisierung Simulation einer dynamischen Struktur in einem statischen Feld. Eigenschaften: - statische Speicherplatzzuordnung - explizite Freispeicherverwaltung

Speicherung von Binärbäumen 2) Verkettete Speicherung * Info * Lsohn Rsohn ... ... Freispeicherverwaltung der Struktur wird von der Speicherverwaltung des Programmiersystems übernommen.

Typdefinition typedef struct Knoten { int key ; infotype info ; struct Knoten *leftson, *rightson; }; typedef struct Knoten *Knotenzeiger; Knotenzeiger Wurzel;

Suchen in natürlichen Binärbäumen Annahme: Für jeden Knoten k mit Söhnen p0,..., pl-1 und Schlüsseln s1, ..., sl-1 gilt (Suchbaumbedingung): alle im Teilbaum unter pi-1 gespeicherten Schlüssel sind kleiner als si, si ist kleiner als alle im Teilbaum unter pi gespeicherten Schlüssel (1  i l-1). Suche nach Schlüssel x: Suche in gerade inspiziertem Knoten kleinstes i, so daß x < si. Falls solches si existiert, führe Suche in Knoten fort, auf den pi-1 zeigt (falls pi-1 = nil Suche erfolglos) . Falls solches si nicht existiert, führe Suche in Knoten fort, auf den pi zeigt (falls pi = nil Suche erfolglos) . Maximale Anzahl inspizierter Knoten: Tiefe des Baumes. Suche innerhalb der Knoten etwa durch lineares oder binäres Suchen zu realisieren. Da l m, ist Aufwand dafür konstant.

void Suchen (Knotenzeiger p, int x) { if ( p == NULL ) printf („Schluessel nicht gefunden!\n“); if ( x < p --> key) Suchen( p--> leftson, x ); else ( if x > p--> key ) Suchen( p --> rightson, x); else printf („Schluessel gefunden! \n“); }