7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.

Slides:



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

Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Eine dynamische Menge, die diese Operationen unterstützt,
Suchbäume unterstützen alle unten angegebenen Operationen für dynamische Mengen K effizient: Search(K ,k) ---- Suche ein Element x von K mit Schlüssel.
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Claudio Moraga; Gisbert Dittrich
GIN2 – 2. Vorlesung, SS04 Prof. Dr. Wolfram Conen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
Algorithmen und Datenstrukturen
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
Der B-Baum Richard Göbel.
B-Bäume.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Gewichtsbalancierte Suchbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
<d,a,s, ,i,s,t, ,e,i,n,e, ,L,i,s,t,e>
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.
Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur
Effizienz: Indexstrukturen
Suche in Texten: Suffix-Bäume
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 Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 –Relaxiertes Balanzieren) 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.
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
Algorithmen und Datenstrukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
WS03/041 Binomial Queues Prof. Dr. S. Albers Prof.Dr.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
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 12 Claudio Moraga, Gisbert Dittrich FBI Unido
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Bäume-
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kapitel 2: Datenstrukturen
Animationen zu Kap. 4.3: AVL-Bäume
Merge-Sort und Binäres Suchen /10D. Haehn Populäres algorithmisches Lösungsverfahren Populäres algorithmisches Lösungsverfahren Divide: Problem.
Splay Trees Von Projdakov Benjamin.
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Effiziente Algorithmen
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Übung Datenbanksysteme II Index- strukturen
7.2.2 Bäume als Hilfsmittel zur Indexorganisation (1/14)
Vorlesung Binärer Suchbaum II-
Kapitel 6: Suchbäume und weitere Sortierverfahren
AVL-Trees (according to Adelson-Velskii & Landis, 1962) In normal search trees, the complexity of find, insert and delete operations in search.
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Binärer Baum, Binärer Suchbaum I
Diskrete Mathematik I Vorlesung 7 Binärer Suchbaum III.
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren.
Binärbäume.
Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 1 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Übungsblatt 2 Erläuterungen Wintersemester 16/17 DBIS.
DB2 – SS 2019 von Baum allgemein bis B*-Baum
DB2 – SS 2019 von Baum allgemein bis B*-Baum
 Präsentation transkript:

7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte. Zugriff: immer gleich auf einen ganzen Block (eine Seite) von Daten, z.B: 4096 Bytes. Effizienz: Zahl der Seitenzugriffe klein halten!

Für externes Suchen: Variante von Suchbäumen mit: Knoten = Seite Vielwegsuchbäume!

Definition (Vielweg-Suchbaum) Der leere Baum ist ein Vielweg-Suchbaum mit der Schlüsselmenge {}. Seien T0, ..., Tn Vielweg-Suchbäume mit Schlüsseln aus einer gemeinsamen Schlüsselmenge S, und sei k1,...,kn eine Folge von Schlüsseln mit k1 < ...< kn. Dann ist die Folge T0 k1 T1 k2 T2 k3 .... kn Tn ein Vielweg-Suchbaum genau dann, wenn: für alle Schlüssel x aus T0 gilt: x < k1 für i=1,...,n-1, für alle Schlüssel x in Ti gilt: ki < x < ki+1, für alle Schlüssel x aus Tn gilt: kn < x .

B-Baum Definition 7.1.2 Ein B-Baum der Ordnung m ist ein Vielweg-Suchbaum mit folgenden Eigenschaften 1  #(Schlüssel in Wurzel)  2m und m  #(Schlüssel in Knoten)  2m für alle anderen Knoten. Alle Pfade von der Wurzel zu einem Blatt sind gleichlang. Jeder innere Knoten mit s Schlüsseln hat genau s+1 Söhne.

Beispiel: Ein B-Baum der Ordnung 2:

Abschätzungen zu B-Bäumen Ein minimal gefüllter B-Baum der Ordnung m und Höhe h: Knotenzahl im linken wie im rechten Teilbaum 1 + (m+1) + (m+1)2 + .... + (m+1)h-1 =  ( (m+1)h – 1) / m. Die Wurzel hat einen Schlüssel, alle anderen Knoten haben m Schlüssel. Insgesamt: Schlüsselzahl n in einem B-Baum der Höhe h: n  2 (m+1)h – 1 Also gilt für jeden B-Baum der Höhe h mit n Schlüsseln: h  logm+1 ((n+1)/2) .

Beispiel Also gilt für jeden B-Baum der Höhe h mit n Schlüsseln: h  logm+1 ((n+1)/2). Beispiel: Bei Seitengröße: 1 KByte und jeder Eintrag nebst Zeiger: 8 Byte, kann m=63 gewählt werden, und bei einer Datenmenge von n= 1000 000 folgt      h  log 64 500 000.5 < 4 und damit hmax = 3.

7.1 Externes Suchen Definition 7.1.2 Ein B-Baum der Ordnung m ist ein Vielweg-Suchbaum mit folgenden Eigenschaften 1  #(Schlüssel in Wurzel)  2m und m  #(Schlüssel in Knoten)  2m für alle anderen Knoten. Alle Pfade von der Wurzel zu einem Blatt sind gleichlang. Jeder innere Knoten mit s Schlüsseln hat genau s+1 Söhne.

Beispiel: Ein B-Baum der Ordnung 2:

Abschätzungen zu B-Bäumen Ein minimal gefüllter B-Baum der Ordnung m und Höhe h: Knotenzahl im linken wie im rechten Teilbaum 1 + (m+1) + (m+1)2 + .... + (m+1)h-1 =  ( (m+1)h – 1) / m. Die Wurzel hat einen Schlüssel, alle anderen Knoten haben m Schlüssel. Insgesamt: Schlüsselzahl n in einem B-Baum der Höhe h: n  2 (m+1)h – 1 Also gilt für jeden B-Baum der Höhe h mit n Schlüsseln: h  logm+1 ((n+1)/2) .

Beispiel Also gilt für jeden B-Baum der Höhe h mit n Schlüsseln: h  logm+1 ((n+1)/2). Beispiel: Bei Seitengröße: 1 KByte und jeder Eintrag nebst Zeiger: 8 Byte, kann m=63 gewählt werden, und bei einer Datenmenge von n= 1000 000 folgt      h  log 64 500 000.5 < 4 und damit hmax = 3.

Algorithmen zum Einfügen und Löschen von Schlüsseln in B-Bäumen Algorithmus insert (root, x) //füge Schlüssel x in den Baum mit Wurzelknoten root ein suche nach x im Baum mit Wurzel root; wenn x nicht gefunden { sei p Blatt, an dem die Suche endete; füge x an der richtigen Position ein; wenn p nun 2m+1 Schlüssel {overflow(p)} }

Algorithmus Split (1) Algorithmus overflow (p) = split (p) Algorithmus split (p) Erster Fall: p hat einen Vater q. Zerlege den übervollen Knoten. Der mittlere Schlüssel wandert in den Vater. Anmerkung: das Splitting muss evtl. bis zur Wurzel wiederholt werden.

Algorithmus Split (2) Algorithmus split (p) Zweiter Fall: p ist die Wurzel. Zerlege den übervollen Knoten. Eröffne eine neue Ebene nach oben mit einer neuen Wurzel mit dem mittleren Schlüssel.

Algorithmus delete (root ,x) //entferne Schlüssel x aus dem Baum mit Wurzel root suche nach x im Baum mit Wurzel root; wenn x gefunden { wenn x in einem inneren Knoten liegt { vertausche x mit dem nächstgrößeren Schlüssel x' im Baum // wenn x in einem inneren Knoten liegt, gibt // es einen nächstgrößeren Schlüssel // im Baum, und dieser liegt in einem Blatt } sei p das Blatt, das x enthält; lösche x aus p; wenn p nicht die wurzel ist { wenn p m-1 Schlüssel hat {underflow (p)} } }

Algorithmus underflow (p) // behandle die Unterläufe des Knoten p wenn p einen Nachbarknoten hat mit s>m Knoten { balance (p,p') } anderenfalls // da p nicht die Wurzel sein kann, muss p Nachbarn mit m Schlüsseln haben { sei p' Nachbar mit m Schlüsseln; merge (p,p')}

Algorithmus balance (p, p') // balanciere Knoten p mit seinem Nachbarknoten p' (s > m , r = (m+s)/2 -m )

wenn ( q <> Wurzel) und (q hat m-1 Schlüssel) underflow (q) Algorithmus merge (p,p') // verschmelze Knoten p mit seinem Nachbarknoten Führe die folgende Operation durch: Anschließend: wenn ( q <>  Wurzel) und (q hat m-1 Schlüssel) underflow (q) anderenfalls (wenn (q= Wurzel) und (q leer)) {gib q frei und lasse root auf p^ zeigen}

Rekursion Wenn es bei underflow zu merge kommt, muss evtl. underflow eine Ebene höher wiederholt werden. Dies kann sich bis zur Wurzel fortsetzen.

Beispiel: B-Baum der Ordnung 2

Aufwand Sei m die Ordnung des B-Baums, n die Zahl der Schlüssel. Aufwand für Suchen, Einfügen, Entfernen: O(h) = O(logm+1 ((n+1)/2) ) = O(logm+1(n)).

Anmerkung: B-Bäume auch als interne Speicherstruktur zu gebrauchen: Besonders: B-Bäume der Ordnung 1 (dann nur 1 oder 2 Schlüssel pro Knoten – keine aufwändige Suche innerhalb von Knoten). Aufwand für Suchen, Einfügen, Löschen: O(log n).

Anmerkung: Speicherplatzausnutzung: über 50% Grund: die Bedingung: 1/2•k  #(Schlüssel in Knoten)  k Für Knoten  Wurzel (k=2m)

2/3•k  #(Schlüssel in Knoten)  k Noch höhere Speicherplatzausnutzung möglich, z.B. über 66% mit Bedingung: 2/3•k  #(Schlüssel in Knoten)  k für alle Knoten mit Ausnahme der Wurzel und ihrer Kinder. Erreichbar durch 1) modifiziertes Balancieren auch beim Einfügen und 2) split erst, wenn zwei Nachbarn ganz voll. Nachteil: Häufigere Reorganisation beim Einfügen und Löschen notwendig.