ADS 1: Algorithmen und Datenstrukturen Suchverfahren für groÿe

Werbung
Suchverfahren für groÿe Datenmengen
ADS 1: Algorithmen und Datenstrukturen
Bisher betrachtete Datenstrukturen (Arrays, Listen, Binärbäume) und
Algorithmen waren auf im Hauptspeicher vorliegende Daten
Teil X
ausgerichtet
eziente Suchverfahren für groÿe Datenmengen auf Externspeicher
Prof. Peter F. Stadler & Sebastian Will
erforderlich (persistente Speicherung)
Bioinformatik/IZBI
Institut für Informatik
& Interdisziplinäres Zentrum für Bioinformatik
groÿe Datenmengen können nicht vollständig in
Hauptspeicher-Datenstrukturen abgebildet werden
Universität Leipzig
Zugrisgranulat sind Seiten bzw. Blöcke von Magnetplatten: z.B. 4-16
KB
09. Januar 2014
Zugriskosten: Faktor 100000 langsamer als für Hauptspeicher (5 ms
verglichen mit 50 ns)
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
09. Januar 2014
1 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
Sequentieller Dateizugri
ADS 1, V10
09. Januar 2014
2 / 21
09. Januar 2014
4 / 21
Mehrwegbäume
Sequentielle Dateiorganisation
Datei besteht aus Folge gleichartiger Datensätze
Ausgangspunkt: Binäre Suchbäume (balanciert)
Datensätze sind auf Seiten/Blöcken gespeichert
entwickelt für Hauptspeicher
ggf. bestimmte Sortierreihenfolge (bzgl. eines Schlüssels) bei der
ungeeignet für groÿe Datenmengen
Speicherung der Sätze (sortiert-sequenzielle Speicherung)
Externspeicherzugrie erfolgen auf Seiten
Sequenzieller Zugri
Lesen aller Seiten / Sätze vom Beginn der Datei an
Abbildung von Schlüsselwerten/Sätzen auf Seiten
sehr hohe Zugriskosten, wenn nur ein Satz benötigt wird
Index-Datenstruktur für schnelle Suche
Optimierungsmöglichkeiten
Alternativen:
dichtes Packen der Sätze innerhalb der Seiten
m-Wege-Suchbäume
Clusterung zwischen Seiten, d.h. dichtes Packen der Seiten einer
B-Bäume
Datei auf physisch benachbarte Plattenbereiche, um geringe
∗
B -Bäume
Zugriszeiten zu ermöglichen
Schneller Zugri auf einzelne Datensätze erfordert Einsatz von zusätzlichen
Grundoperationen: Suchen, Einfügen, Löschen
Indexstrukturen, z.B. Mehrwegbäume
Alternative: gestreute Speicherung der Sätze (→ Hashing)
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
m-Wege-Suchbäume I
09. Januar 2014
3 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
B-Bäume
Denition : Ein m-Wege-Suchbaum oder ein m-ärer Suchbaum B ist ein
Denition: Sei t ≥ 1 eine ganze Zahl. Ein B-Baum B
Baum, in dem jeder Knoten höchstens m Kinder besitzt. Entweder ist B
leer oder B hat folgende Eigenschaften:
1
Jeder Knoten des Baums mit b Einträgen, b
3
4
5
hat folgende
≤ i ≤ b, sind Zeiger auf die Unterbäume des Knotens
Ki und Di , 1 ≤ i ≤ b sind Schlüsselwerte und Daten.
die
2
≤ m − 1,
0 |K1 |D1 |P1 |K2 |D2 |P2 | . . . |Kb |Db |Pb
Struktur: P
Die Pi , 0
1
Alle Blätter sind von der Wurzel gleich weit entfernt.
2
Jeder Knoten ausser der Wurzel hat mindestens t
und
2t
≤ Ki +1 ,
≤ i < b.
1
Die Unterbäume von Pi , 0
≤i ≤b
sind auch m-Wege-Suchbäume.
−1
und höchstens
4
Falls B nicht leer ist, hat die Wurzel mindestens 1 und höchstens
und höchstens 2t Töchter.
1 (0 ≤ i < b )
(0 < i ≤ b )
Einträge.
Jeder Knoten, ausser der Wurzel und den Blättern, hat mindestens t
Alle Schlüssel im Unterbaum von Pi sind kleiner als Ki +
Alle Schlüssel im Unterbaum von Pi sind gröÿer als Ki
−1
3
Die Schlüsselwerte in jedem Knoten sind aufsteigend geordnet:
Ki
der Klasse t ist ein
2t -Wege-Suchbaum mit folgenden zusätzlichen Eigenschaften:
2t
5
−1
Einträge.
Falls B nicht leer und die Wurzel kein Blatt ist, hat sie mindestens 2
und höchstens 2t Töchter.
Die Di können Daten oder Zeiger auf die Daten repräsentieren.
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
09. Januar 2014
Aufbau der Knoten im B-Baum
5 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
09. Januar 2014
Beispiel: B-Baum mit t = 2
6 / 21
Innerer Knoten
0
1
P
K
D
1
P
1
2
D
2
K
D
2
2 ...
P
Kb
Db
Pb
freier Platz
10 18 27
Blattknoten
8 .
1
K
D
1
K
2 ...
Kb
Db
2 4 7
0 . . . Pb Zeiger auf Unterbäume
K1 . . . Kb Schlüssel
D1 . . . Db (Zeiger auf ) Daten
P
t
.
15 .
.
21 24 .
34 38 40
freier Platz
.......................
22 .
. ............... 42 43 44
− 1 ≤ b ≤ 2t − 1
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
09. Januar 2014
7 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
09. Januar 2014
8 / 21
Suchen im B-Baum
Einfügen im B-Baum
Verallgemeinerung der Suche im binären Suchbaum
1
Einfügen eines Schlüssels k in einen B-Baum geschieht immer in einem
Suche nach Schlüssel k beginnt mit der Wurzel als aktuellem Knoten
Blattknoten x .
x.
2
Finde gröÿten Index i
∈ {1, . . . , b},
so dass k
≥ Ki
ist. Falls k
Wie bei der Suche wird ein Pfad von der Wurzel bis zu x durchlaufen.
= Ki ,
Trit der Durchlauf auf einen vollen Knoten y , so wird y geteilt, bevor
so wurde k gefunden (Ende, Suche erfolgreich).
3
Existiert so ein Index nicht, so setze i
der Durchlauf fortgesetzt wird.
= 0.
4
Falls x bereits ein Blatt ist, Ende (Suche erfolglos).
5
Sonst: verzweige x
← Pi
Ein Knoten ist voll, wenn er die maximale Anzahl 2t
enthält.
und gehe zurück zu (2).
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
09. Januar 2014
9 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
Teilen eines Knotens
.
..........
36 37 .
39 .
..........
.
42 43 44
Voraussetzungen für das Teilen eines Knotens x :
1
x ist voll (hat 2t
2
Elternknoten von x ist nicht voll
−1
ADS 1, V10
09. Januar 2014
= 45
34 .
33 .
.
.
40 .
.
36 37 .
39 .
.
1
x ist voll (hat 2t
2
Elternknoten von x ist nicht voll
−1
ADS 1, V10
Einfügen von k
.
2 4 7
.
21 24 .
.......................
P.F. Stadler & S. Will (Bioinf, Uni LE)
22 .
34 38 40
8 .
. ............... 42 43 44
ADS 1, V10
09. Januar 2014
2 4 7
.
2 4 7
15 .
.
21 24 .
22 .
.
34 38 40
. ............... 42 43 44
ADS 1, V10
09. Januar 2014
12 / 21
= 45
.
18 .
10 .
.
27 38 .
15 .
.
21 24 .
P.F. Stadler & S. Will (Bioinf, Uni LE)
27 .
.......................
Einfügen von k
.......................
.
Beispiel: Einfügen im B-Baum
= 45
18 .
8 .
.
.
10 .
12 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
Beispiel: Einfügen im B-Baum
Einfügen von k
11 / 21
= 45
10 18 27
15 .
09. Januar 2014
Beispiel: Einfügen im B-Baum
18 .
.
42 43 44
Schlüssel)
11 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
Beispiel: Einfügen im B-Baum
8 .
10 / 21
Voraussetzungen für das Teilen eines Knotens x :
Schlüssel)
P.F. Stadler & S. Will (Bioinf, Uni LE)
Einfügen von k
09. Januar 2014
27 38 .
34 38 40
.
an Schlüsseln
Teilen eines Knotens
27 .
33 .
ADS 1, V10
−1
22 .
ADS 1, V10
34 .
.
40 .
. ............... 42 43 44
09. Januar 2014
.
8 .
2 4 7
.
.
10 .
.
27 38 .
15 .
.
21 24 .
.......................
12 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
22 .
34 .
.
40 43 .
. ............... 42 .
ADS 1, V10
.
44 45 .
09. Januar 2014
12 / 21
Löschen im B-Baum
Verschieben eines Schlüssels
Löschen eines Schlüssels k beginnt mit einer Suche nach k , Durchlauf
beginnend an der Wurzel.
10 18 27
Trit der Durchlauf auf einen Knoten y mit t
−1
Schlüsseln
(Minimalzahl), so wird y durch Verschieben eines Schlüssels auf t
Schlüssel gefüllt, falls möglich. Ansonsten wird y mit einem Nachbarn
verschmolzen.
15 .
Durch das Verschieben/Verschmelzen hat der Knoten, aus dem k
.
21 24 .
gelöscht wird, mindestens t Schlüssel, nach dem Löschen also
mindestens t
− 1.
Liegt k in einem Blatt, wird der Schlüssel k direkt entfernt.
Andernfalls, suche den grössten Schlüssel k
0 im linken (oder kleinsten,
.......................
im rechten) zum Schlüssel gehörigen Teilbaum. Dann ersetze k durch
22 .
. ...............
0
0
0
k und lösche k . Anmerkung: k muss in einem Blatt liegen.
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
09. Januar 2014
13 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
Verschieben eines Schlüssels
ADS 1, V10
15 18 .
09. Januar 2014
15 / 21
10 18 27
24 .
8 .
.
.
15 .
.
.......................
2 4 7
22 .
P.F. Stadler & S. Will (Bioinf, Uni LE)
14 / 21
Verschmelzen zweier Knoten
10 21 27
.......................
09. Januar 2014
. ...............
ADS 1, V10
09. Januar 2014
14 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
Verschmelzen zweier Knoten
ADS 1, V10
Höhe von B-Bäumen
Betrachte B-Baum der Höhe h mit minimalem Verzweigungsgrad t .
1 Knoten auf Stufe 0, mind. 2 Knoten auf Stufe 1
mindestens 2t
18 27 .
i −1 Knoten auf Stufe i
Gesamtzahl Knoten ist mindestens
1
8 10 15
h −1
X
i =2
t
i −1
führt zu oberer Schranke für Höhe:
h
2 4 7
+2+2
≥2
.......................
⇒
≤ 1 + logt
n
+1
2
Höhe wächst logarithmisch mit Zahl der Schlüssel
Im Vergleich zum Binärbaum kann Höhe deutlich reduziert werden
durch groÿe Werte von t (Seitengröÿe).
Beispiel: t
= 1024
reduziert Höhe um Faktor 10 im Vergleich mit
Binärbaum.
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
09. Januar 2014
15 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
Variante: B -Bäume
ADS 1, V10
09. Januar 2014
16 / 21
B -Bäume: Beispiel
∗
∗
Hauptunterschied zu B-Baum: in inneren Knoten wird nur die WegweiserFunktion ausgenutzt
innere Knoten führen nur
Information
(Ki , Di )
(Ki , Pi )
42
als Einträge
wird in den Blattknoten abgelegt. Dabei werden
alle Schlüssel mit ihren zugehörigen Daten in Sortierreihenfolge in den
24 34
49 77
Blättern abgelegt.
für einige Ki ergibt sich eine redundante Speicherung.
Die inneren Knoten bilden also einen Index, der einen schnellen
direkten Zugri zu den Schlüsseln gestattet.
Der Verzweigungsgrad erhöht sich beträchtlich, was wiederum die
Höhe des Baumes reduziert
7 14 24
31 32 33 34
37 42
46 49
53 77
81 85
Durch Verkettung aller Blattknoten lässt sich eine eziente
sequentielle Verarbeitung erreichen, die beim B-Baum einen
umständlichen Durchlauf in symmetrischer Ordnung erforderte
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
09. Januar 2014
17 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
09. Januar 2014
18 / 21
Digitale Suchbäume I
Digitale Suchbäume II
Prinzip digitaler Suchbäume (kurz: Digitalbäume):
Zerlegung des Schlüssels - bestehend aus Zeichen eines Alphabets - in
Teile
Was sind Schlüsselteile ?
Schlüsselteile können gebildet werden durch Elemente (Bits, Ziern,
Aufbau des Baumes nach Schlüsselteilen
Zeichen) eines Alphabets oder durch Zusammenfassungen dieser
Suche im Baum durch Vergleich von Schlüsselteilen
Grundelemente (z. B. Silben der Länge k )
jede unterschiedliche Folge von Teilschlüsseln ergibt eigenen Suchweg
Höhe des Baumes =
im Baum
Schlüsselteillänge ist
l
k
+ 1,
wenn l die max. Schlüssellänge und k die
alle Schlüssel mit dem gleichen Präx haben in der Länge des Präxes
den gleichen Suchweg
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
09. Januar 2014
19 / 21 P.F. Stadler & S. Will (Bioinf, Uni LE)
09. Januar 2014
21 / 21
Digitale Suchbäume: Beispiel
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS 1, V10
ADS 1, V10
09. Januar 2014
20 / 21
Herunterladen