Diplomarbeit. Experimentelle Untersuchung von String B-Trees bezüglich ihrer Anwendbarkeit in Genom-Datenbanken und im Information Retrieval

Ähnliche Dokumente
Algorithmen auf Sequenzen Volltext-Indexdatenstrukturen: Suffixbäume

Übungen zur Vorlesung Modellierung WS 2003/2004 Blatt 11 Musterlösungen

Ober- und Untersummen, Riemann Integrale

Algorithmentheorie. 15 Suchen in Texten (1)

Suche in Texten. Naiver Algorithmus. Knuth-Morris-Pratt-Algorithmus. Karp-Rabin-Algorithmus

Warum Bäume? Teil 1: Suchen. Bäume: Begriffe und Eigenschaften (2) Bäume: Begriffe und Eigenschaften (1)

Suche in Texten: Suffix-Bäume

Automaten und formale Sprachen Notizen zu den Folien

Mathematische Probleme, SS 2018 Dienstag 5.6. $Id: dreieck.tex,v /06/05 15:41:51 hk Exp $ 2.1 Dreiecksberechnung mit Seiten und Winkeln

Mathematische Probleme, SS 2013 Montag $Id: dreieck.tex,v /04/15 09:12:15 hk Exp hk $ 1.4 Dreiecksberechnung mit Seiten und Winkeln

Der Begriff der Stammfunktion

Aufgabe 1. Die Zahl 6 wird aus 3 gleichen Ziffern mit Hilfe der folgenden mathematischen

R. Brinkmann Seite

VORKURS: MATHEMATIK RECHENFERTIGKEITEN, LÖSUNGEN. Dienstag

Die Satzgruppe des Pythagoras

Wurzel b bedeutet: Suche die Zahl, die mit sich selbst multipliziert gerade die Zahl ergibt, die unter der Wurzel steht.

solche mit Textzeichen (z.b. A, a, B, b,!) solche mit binären Zeichen (0, 1)

2. Landeswettbewerb Mathematik Bayern 2. Runde 1999/2000

gehört ebenfalls zu einem Paar. Da 5 eine Primzahl und kein anderes Quadervolumen ein Vielfaches von 5 V o

SS 2018 Torsten Schreiber

ISAC. Computer Algebra für Brüche --- angepasst an Ausbildungszwecke

Hans U. Simon Bochum, den Annette Ilgen. Beispiele zur Vorlesung. Theoretische Informatik. WS 08/09

Inhaltsverzeichnis. c 1 / 5

Konstruktion des regulären Fünfecks mit dem rostigen Zirkel (rusty compass)

1 GeschäftsdiaGramme. Abbildung 1.1: Übersicht zu unterschiedlichen Grafi ktypen Unify objects: graphs e.g. org graphs, networks, and maps

7.4. Teilverhältnisse

Übungsblatt Nr. 2. Lösungsvorschlag

Mathematik für Studierende der Biologie und des Lehramtes Chemie

Mathematische Probleme, SS 2015 Montag $Id: dreieck.tex,v /04/20 08:57:49 hk Exp $ 1.4 Dreiecksberechnung mit Seiten und Winkeln

Lösungshinweise/-vorschläge zum Übungsblatt 2: Software-Entwicklung 1 (WS 2015/16)

Wir haben ein Koordinatensystem mit der x-achse und der y-achse. Nun wird ein Kreis gebildet mit dem Radius r=1.

Mathematik Trigonometrie Einführung

Formale Systeme, Automaten, Prozesse SS 2010 Musterlösung - Übung 2 M. Brockschmidt, F. Emmes, C. Fuhs, C. Otto, T. Ströder

Bezeichnungen. Arten von String-Matching-Problemen

Funktionen und Mächtigkeiten

ping karlsruhe Mining Software Call Graphs Frank Eichinger

Erkundungen. Terme vergleichen. Rechteck Fläche als Produkt der Seitenlängen Fläche als Summe der Teilflächen A B

Gruppe A Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit.

Polynominterpolation (Varianten)

Verwenden der Strassstein-Funktion. Verwenden des Bearbeitungsbildschirms

Erstellen einer DLL-Datei zur Verwendung in LabView 8.2 mittels Microsoft Visual C Express Edition

Algorithmen II Vorlesung am

Beispiellösungen zu Blatt 24

Seminarstunden S-Std. (45 min) Nr. Modul Theorie Übungen. 13 Bruchrechnung 1 5

Relationen: Äquivalenzrelationen, Ordnungsrelationen

Lineare Gleichungssysteme mit 3 und mehr Variablen

Vorlesung Diskrete Strukturen Transportnetze

Grundwissen Mathematik 8.Klasse Gymnasium SOB. Darstellung im Koordinatensystem: Der Kreisumfang ist direkt proportional zu seinem Radius.

Einführung in die Theoretische Informatik I/ Grundlagen der Theoretischen Informatik. SS 2007 Jun.-Prof. Dr. Bernhard Beckert Ulrich Koch.

Gliederung. Kapitel 1: Endliche Automaten

Einführung in die Mathematik des Operations Research

18. Algorithmus der Woche Der Euklidische Algorithmus

Minimierung von DFAs. Minimierung 21 / 98

9 Vektorprodukt. Dieses Gleichungssystem muss man nun lösen! Das ist allerdings nicht ganz einfach. Die Lösung lautet:

Aufgaben und Lösungen. Über Kommentare und Ergänzungen zu diesen Lösungsbeispielen freuen wir uns!

Umwandlung von endlichen Automaten in reguläre Ausdrücke

5. Homotopie von Wegen

Automaten und formale Sprachen Notizen zu den Folien

Name... Matrikel-Nr... Studiengang...

Kapitel 6 s schreiben und organisieren

Motivation: Petrinetze. Vorlesung Modellierung nebenläufiger Systeme Sommersemester 2011 Universität Duisburg-Essen. Motivation: Petrinetze

HA-Lösung TA-Lösung Diskrete Strukturen Tutoraufgabenblatt 2. Besprechung in KW44

4. Lineare Gleichungen mit einer Variablen

a) Behauptung: Es gibt die folgenden drei stabilen Matchings:

Bruchrechnung. W. Kippels 6. Dezember Inhaltsverzeichnis. 1 Vorwort 2. 2 Einleitung 3

Datenstrukturen & Algorithmen Lösungen zu Blatt 2 FS 12

Einführung in die theoretische Informatik Sommersemester 2017 Übungsblatt Lösungsskizze 2

4 Prozessor-Datenpfad

a q 0 q 1 a M q 1 q 3 q 2

Protokoll zur Vorlesung Theoretische Informatik I

Datenmodell = Datenobjekte + Operatoren

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt Semester ARBEITSBLATT 14 MULTIPLIKATION EINES VEKTORS MIT EINEM SKALAR

Ein Winkel zwischen 0 und 90 heißt spitzer Winkel, ein Winkel zwischen 90 und 180 heißt stumpfer Winkel.

Frank Heitmann 2/71. 1 Betrachten wir Σ für ein Alphabet Σ, so ist Σ die Menge

Mobile radiographische Untersuchung von Holz und Bäumen

Der Vektor lebt unabhängig vom Koordinatensystem: Bei einer Drehung des Koordinatensystems ändern zwar die Komponenten, der Vektor v aber bleibt.

29 Uneigentliche Riemann-Integrale

Die Näherung ist umso genauer, je kleiner die Zellen sind. Der Grenzwert ist

Seminar zum anorganisch-chemischen Praktikum I. Quantitative Analyse. Prof. Dr. M. Scheer Patrick Schwarz

Prüfungsteil Schriftliche Kommunikation (SK)

Hausaufgabe 2 (Induktionsbeweis):

Automaten mit dot erstellen

Durch die Umformung ergibt sich eine Schaltfunktion mit einer minimalen Anzahl von Verknüpfungsoperationen, nämlich 2.

2.6 Reduktion endlicher Automaten

HM I Tutorium 13. Lucas Kunz. 2. Februar 2017

2 Die Bildsprache Der relevante Winkel im grünen Dreieck ist stumpf; die gleichschenkligen Dreiecke haben den Basiswinkel 180 :

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

Verknüpfen von Konten

6 Weitere nichtparametrische Tests

/LQHDUH*OHLFKXQJVV\VWHPH

01 Proportion Verhältnis Maßstab

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Kohls Mathe-Tandem Geometrie - Partnerrechnen im

5.2 Quadratische Gleichungen

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 5. Semester ARBEITSBLATT 3 PARAMETERDARSTELLUNG EINER GERADEN

Folien-Beispiel: Maschinenzahlen a=(1.11) 2. * 2 1, b= - (1.10) 2. *2 1 und c=(1.10) 2. * 2 3 bei dreistelliger Mantisse.

Andere Möglichkeit, die Maschinengenaugkeit zu definieren: Größte positive Zahl y=2 -k, so dass. Beispiel t=2, = ¼ = (0.01) 2 ; (1.0 1) 2 (1.

Gleitpunktarithmetik Def. (Realisierung einer Maschinenoperation):

10 1 Grundlagen der Schulgeometrie. 1.3 Das Dreieck

Transkript:

Diplomreit Experimentelle Untersuhung von String B-Trees ezüglih ihrer Anwendrkeit in Genom-Dtennken und im Informtion Retrievl Mnuel Sholz Betreuer: Prof. Dr. H. Shweppe, Prof. Dr. J. Stoye, Z. Knev Institut für Informtik Freie Universität Berlin msholz@inf.fu-erlin.de 15.04.2002 1

Inhltsverzeihnis 1. Einleitung...4 1.1 Motivtion...4 1.2 Zielsetzung...5 2. Die String B-Tree Dtenstruktur...7 2.1 Definitionen...7 2.2 Ds Grundmodell des String B-Trees...8 2.3 Ptrii Tries...9 2.4 Ds erweiterte Modell des String B-Trees...13 2.5 Opertionen uf String B-Trees...15 2.6 Zusmmenfssung...17 3. Implementierung...18 3.1 Ziel der Implementierung...18 3.2 Verwendete Algorithmen...19 3.3 Der Prototyp: stree...19 3.4 Wihtige Aspekte der Implementierung...20 3.4.1 Erstellen eines eindeutigen Endmrkers...20 3.4.2 Binärodierung der Worte...21 3.4.3 Splitting-Opertion...22 3.4.4 Ching...24 3.4.5 Hintergrundspeiherzugriffe...25 4. Plnung der Untersuhungen...26 4.1 Einflussgrößen...27 4.2 Messgrößen...28 4.3 Opertionen...31 4.4 Untersuhungen m B-Bum...31 5. Experimentelle Untersuhungen...33 5.1 Voremerkungen...33 5.1.1 Zeitufwnd der Experimente...33 5.1.2 Methodik der Untersuhungen...33 5.2 Üerprüfung der theoretishen Aussgen...34 2

5.3 Tehnishe Untersuhungen...37 5.3.1 Auswirkungen der Ches...37 5.3.2 Verhältnisse der Messgrößen...40 5.3.3 Optimler Knotengrd...41 5.4 Ein- und Mehrworttextuntersuhungen...43 5.4.1 Auswirkungen der Suhmusterlänge...47 5.5 Untersuhungen der Alphetgröße...48 5.6 Untersuhungen vershiedener Texte...51 5.6.1 Voremerkungen...52 5.6.2 Untersuhungsergenisse und Anlyse...53 5.7 Vergleih mit der Suffix Tree Dtenstruktur...58 5.7.1 Voremerkungen...58 5.7.2 Suffix Trees (wotd)...59 5.7.3 Untersuhungsergenisse und Anlyse...60 6. Zusmmenfssung und Auslik...67 6.1 Auslik...69 6.2 Ashlussdiskussion...70 7. Anhng...72 7.1 Litertur...72 3

1. Einleitung 1. Einleitung 1.1 Motivtion Shon in den Anfängen des Computerzeitlters wurde die Eigenshft von Computern, große Dtenmengen effizient zu verwlten, erknnt und vielseitig genutzt. Im Lufe der Jhrzehnte und esonders in den letzten Jhren ht die omputergestützte Dtenverwltung stetig und so strk zugenommen, dss sie heutzutge prktish in llen Leensereihen Verwendung findet. Niht nur viele der großen Firmen esitzen Dtennken riesigen Ausmßes, uh in der Forshung und der Informtionsverwltung im Internet git es eine unüershure Menge n digitlen Informtionen. Zwei in diesem Zusmmenhng esonders ktuelle Geiete sind die Genforshung und ds Informtion Retrievl. Durh die in den letzten Jhren strk vorngeshrittene Sequenzierung einer Vielzhl von untershiedlihen Orgnismen existieren im Bereih der Gendtennken riesige Mengen n DNA-, Protein- und Beshreiungsdten, welhe ständig ktulisiert und durhsuht werden müssen. Auh im Informtion Retrievl git es viele Bereihe (Zeitungsrhive, Wörterüher, Enzyklopädien, Telefonüher, usw.), die gerde durh ds Internet mit einer täglih whsenden Zhl von Informtionen konfrontiert werden. Trotz des stetigen Tehnologiefortshrittes, welher shnellere und größere Speiher umfssende Computer hervorringt, ist eine effiziente Verwltung der Dten ktueller ls je zuvor. Aufgrund der immensen Größe der zu verwltenden Dtenmengen reihen selst die Huptspeihergrößen von großen Computern oft niht us, um die Dten komplett zu einhlten. D eine Änderung dieses Verhältnisses uh in Zukunft niht zusehen ist, git es esonders uf dem Geiet der persistenten Indexstrukturen für große Textorpor einen großen Bedrf n effizienten Algorithmen und Dtenstrukturen. Die isher in diesem Bereih häufig diskutierten Dtenstrukturen sind Suffix Trees [13,16] und Suffix Arrys [12], zwei typishe Dtenstrukturen, die für die Mustersuhe in großen Textorpor konzipiert sind und einige Vritionen der klssishen B-Bum Struktur, wie z.b. der Präfix B-Bum [2], welher zum Teil uh Verwendung in Dtennksystemen findet. In der Areit "The String B-Tree: A New Dt Struture for String Serh in Externl Memory nd Its Applitions" von P. Ferrgin und R. Grossi (1999) wird eine neurtige persistente Indexstruktur, der String B-Tree 1 vorgestellt. Aufgrund seiner Struktur, die eine Verindung von B-Bäumen und Ptrii-Tries [10] ist, esitzt der String B-Tree vielversprehende Eigenshften. Im Gegenstz zum Suffix Tree knn der String B-Tree durh seine B-Bum Struktur niht entrten. Er ht somit ds gleihe Worst Cse 1 Im Folgenden wird immer die englishe Form des Nmens verwendet, d eine Teilüersetzung niht sinnvoll ersheint. 4

1. Einleitung Verhlten wie ein B-Bum, knn dei jedoh Strings mit elieiger Länge verwlten, ws mit einem B-Bum niht möglih ist. Der String B-Tree ietet sih somit gut für die Mustersuhe in großen Textorpor n. Trotz dieser vielversprehenden Eigenshften der String B-Tree Dtenstruktur git es isher nur zwei unveröffentlihte Areiten [5,14], die experimentelle Untersuhungen n Implementierungen der String B-Tree Dtenstruktur durhgeführt hen. Die erste Areit ist eine experimentelle Untersuhung von den Autoren selst [5]. Sie führt einen Vergleih zwishen den Implementierungen von String B-Trees, Suffix Arrys und Präfix B-Bäumen durh. Dei wird nur die Anzhl der Festplttenzugriffe etrhtet, Ausführungszeiten werden dei niht erüksihtigt. Die Areit von K. R. Rose [14] etrhtet den Bereih der Dtennken und vergleiht die String B-Tree Implementierung mit dem Dtennksystem Sleepyt. Es ist jedoh isher keine Studie einer String B-Tree Implementierung ezüglih ihrer Anwendung in Genom-Dtennken und im Informtion Retrievl eknnt. Im Rhmen dieser Areit soll diese Studie nhnd experimenteller Untersuhungen der String B-Tree Dtenstruktur durhgeführt werden. 1.2 Zielsetzung Ziel der Diplomreit ist die experimentelle Untersuhung der String B-Tree Dtenstruktur speziell im Hinlik uf die Bereihe Genom-Dtennken und Informtion Retrievl. Diese Untersuhungen sollen n einer selsterstellten Implementierung des String B-Trees, die uf den in [6,5] erläuterten Algorithmen siert, durhgeführt werden. Als Eingedten erhält die Implementierung elieige Texte, us denen sie einen String B-Tree konstruiert, der die Gesmtheit ller Suffixe der Worte des Textes enthält. D die exkte Sustringsuhe in den zu untersuhenden Anwendungsereihen eine große Rolle spielt, liegt der Shwerpunkt dieser Areit uf der Betrhtung dieser Suhopertion. Die Ausge der gefundenen Elemente wird dei niht erüksihtigt, sondern nur üerprüft, o der gesuhte Sustring im Text enthltenen ist oder niht. Anhnd dieser Suhopertion sollen die Eigenshften der String B-Tree Dtenstruktur experimentell untersuht werden. Dei werden die Auswirkungen der Einflussgrößen der Dtenstruktur selst (Bumgröße, Knotengröße) ls uh die Einflussgrößen der verwendeten Textdten (Alphetgröße, Struktur des Textes) untersuht. Weiterhin wird ein erster Vergleih mit der Suffix Tree Dtenstruktur durhgeführt, die ereits ei der Mustersuhe in großen Textorpor in der Prxis Anwendung findet. In erster Linie werden in den Untersuhungen die Ergenisse der Gesmtzeiten etrhtet. Die Messungen der Festplttenzugriffe und der CPU-Zeit werden dei nur ls Hilfsgrößen für die Anlyse der Ergenisse verwendet. 5

1. Einleitung Bsierend uf den Ergenissen der experimentellen Untersuhungen soll eine Ashätzung üer die Eigenshften des String B-Trees in der prktishen Anwendung und dessen Eignung für die Anwendung in den Bereihen Genom-Dtennken und Informtion Retrievl getroffen werden. 6

2. Die String B-Tree Dtenstruktur 2. Die String B-Tree Dtenstruktur Der String B-Tree ist eine sehr ktuelle Dtenstruktur, die speziell für den Umgng mit großen, homogenen Dtenmengen, die sih im Hintergrundspeiher efinden, optimiert wurde. Insesondere für ds Speihern und Durhsuhen von großen Textdtennken (z.b. Zeitungsrhive, Gendtennken) sind die String B-Trees gut geeignet. Die zugrunde liegende Idee dieser Struktur ist, einen B + -Bum ähnlihen Aufu mit einer sehr kompkten und für die Stringsuhe optimierten Bumstruktur, dem Ptrii Trie [10], zu verknüpfen. Dei dient ersterer für die Anordnung der Knoten im Hintergrundspeiher und letztere für die Suhe innerhl der Knoten. Der folgende Text soll eine Einführung in die Dtenstruktur geen. Dei werden zunähst die Rndedingungen und die Definition festgelegt, dnh der grundlegende Aufu und die Anordnung der Dten in den Knoten erklärt und shließend die Funktion und ds Lufzeitverhlten der Suhopertion nlysiert. 2.1 Definitionen Um die Nottionen innerhl der gesmten Areit konsistent zu hlten, sollen n dieser Stelle die Rhmenedingungen und die Definitionen der häufig verwendeten Größen gegeen werden: Als Speihermodell wird die klssishe 2-Stufen-Hierrhie (wie in [4] vorgeshlgen) verwendet, die von einem egrenzten und shnellen Huptspeiher und einem lngsmen unegrenzten Hintergrundspeiher usgeht. Der Hintergrundspeiher ist in festgelegte Speiherereihe (Seiten) unterteilt. Die Seitengröße wird im Folgenden mit s ezeihnet. Sei eine endlihe und geordnete Menge, ds Alphet. Die Größe von sei m = und * sei die Menge ller Zeihenketten üer Sei Z eine endlihe Zeihenkette (Eingedten), so dss gilt: Z Die Länge von Z sei z = Z. Sei Z [q,r] ein Sustring (Teilzeihenkette) us Z, von der Stelle q is zur Stelle r mit 1 q r z und Z[q] ein Zeihen us Z n der Stelle q mit 1 q z. Sei Z [q,u], mit q u r ein Präfix, Z [t,r], mit q t r ein Suffix und Z [t,u], mit q t u r ein Sustring von Z [q,r]. Ein Suhmuster P der Länge p P ist in Z enthlten, wenn gilt: i \ { 0 }: Z [i,i+ P -1] = P. *. Die Zeihenkette Z enthält n n Stellen, mit n \ { 0 } ein estimmtes 7

Experimentelle Untersuhung von String B-Trees 2. Die String B-Tree Dtenstruktur Endmrkersymol, welhes die Zeihenkette in n einzelne Worte unterteilt, so dss für jedes Wort w = Z [x,y] gilt: Z x 1 $ x 1 Z y 1 $ $ Z x,y g sei der Knotengrd der String B-Tree Knoten und k v der Füllungsgrd (Anzhl der Elemente im Knoten) eines Knotens v. 2.2 Ds Grundmodell des String B-Trees Wie im Nmen der Dtenstruktur ereits zu erkennen ist, ht der String B-Tree von seiner Grundstruktur eine große Ähnlihkeit mit den B-Bäumen, genuer gesgt mit B + -Bäumen. Wie der B + -Bum speihert er mehrere Elemente 2 in einem Knoten, welhen er ei einem Zugriff jedesml us dem Hintergrundspeiher lädt. Der Grd g eines String B-Trees git n, wie viele Elemente in einem Knoten enthlten sein können. Dei gilt im gesmten Bum folgende Invrinz: g 1 e 2 g 1 (mit e = Anzhl der Elemente im Knoten). Die Elemente im Knoten sind der Größe nh geordnet und entsprehend dieser Ordnung git es mehrere (hängig vom Füllungsgrd des Knotens) Verweise uf Kinderknoten. Die Elemente in den inneren Knoten dienen (wie eim B + -Bum) nur zur korrekten Anordnung der Blätter, welhe dnn die eigentlihen Elemente (zw. Referenzen uf jene) enthlten. Ordnet mn lle Elemente der Blätter entsprehend derer (lexikogrphishen) Ordnung n, so erhält mn eine geordnete Liste ller Worte des Textes. Dies ist ein enormer Vorteil ei der Präfixsuhe, uf den später noh genuer eingegngen wird. Ein Untershied des vereinfhten Modells des String B-Trees zum B + -Bum esteht nun drin, dss die Elemente im Knoten niht die Worte selst, sondern nur Referenzen (Pointer) uf den Anfng der Worte sind. Die Anordnung der Pointer rihtet sih entsprehend nh der Ordnung der zugrunde liegenden Worte. Um lle diese Eigenshften esser zu verdeutlihen folgt eine Beispielildung (Aildung 1) und ihre Erklärung. Der untere Bildrnd zeigt die Dten, die in einer Dtei liegen und in diesem Fll mit den Zhlen 1 is 70 indiziert sind. Ds dunkle Kästhen nh jedem Wort ist der ereits erwähnte Endmrker. Im oeren Bereih sieht mn eine vereinfhte Form des String B- Trees. Die Zhlen in den Knoten geen die Verweise uf die Dtei n. Bei einem Verweis muss nur uf den Anfng des Wortes gezeigt werden, d ds Ende durh den Endmrker ngegeen ist. Die Elemente in den Knoten sind entsprehend ihren Verweisen geordnet, so dss z.b. der Inhlt des mittleren rehten Knotens (38, 23) die Ordnung der Worte klein und pyrmide drstellt. 2 In der gesmten Areit sind dmit usshließlih Strings gemeint. 8

2. Die String B-Tree Dtenstruktur 13 7 38 23 19 7 60 44 13 55 1 38 23 50 66 32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 k l u s i l o k t z e r m p y r m i d e 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 k l e i n k e l s e i l k e k s e i m e r s e n f 32 33 34 35 36 37 v o g e l Aildung 1: Vereinfhte Drstellung eines String B-Trees Die Verweise uf die Kinderknoten unterliegen der gleihen Ordnung, so dss ds Element rehts von einem Verweis jeweils eine Oergrenze für lle Elemente des drunter liegenden Teilumes drstellt. Geht mn im Beispiel von der linken Knte des oersten Knotens us, so weiß mn, dss lle untergeordneten Elemente uf Worte verweisen, welhe lexikogrphish kleiner ls ktze sind. Wie weiter oen shon erwähnt efindet sih die Gesmtheit ller Worte eines String B- Trees geordnet in seinen Blättern, so dss ei diesem Beispiel die fünf Blätter von links nh rehts trversiert, die Verweise uf lle Worte in geordneter Reihenfolge (von rm is vogel) enthlten. Wie gesgt ist ds momentn verwendete Modell nur eine vereinfhte Version des String B-Trees und in dieser Form ntürlih niht ruhr, d es durh die Verweise in den Knoten zu viel Hintergrundspeiherzugriffe enötigen würde. Bemerkung Ds hier eshrieene (und in dieser Form llgemein eknnte) B + -Bum Modell weiht von dem in [6] vorgeshlgenen Modell leiht. Dieses esitzt für jeden Verweis uf einen Kinderknoten niht nur ein zugehöriges Element (ls Oergrenze), sondern jeweils ein Pr von Elementen, ds die Oer- und die Untergrenze der Elemente des drunter liegenden Teilumes repräsentiert. Der dort eshrieene Vorteil der geringeren Komplexität wr niht nhvollziehr, ws zu dem Entshluss führte, ds llgemein ülihe Modell zu verwenden. 2.3 Ptrii Tries Die Huptidee, welhe die String B-Trees mit ihren Eigenshften so interessnt werden lässt, ist die Einindung von Ptrii Tries in deren Knoten. Wrum ds so vorteilhft ist, 9

2. Die String B-Tree Dtenstruktur und wodurh dies erreiht wird, soll in diesem Ashnitt erklärt werden. Ptrii Tries sind eine ezüglih Speiherpltzeffizienz optimierte Art der sogennnten Tries (trie von Retrievl). Aufgrund des verwndten Aufus werden zuerst zwei ähnlihe (er einfhere) Trie-Strukturen erläutert und druf sierend der Ptrii Trie erklärt. Tries Tries wurden ls Dtenstruktur entwikelt, um in ihnen grosse Textmengen (estehend us vielen einzelnen Strings) zu speihern, nh denen dnn im Trie möglihst optiml gesuht werden soll. Um dies zu erreihen, mhen sih die Tries die gemeinsmen Präfixe der Strings zunutze. Suht mn lso nh einem Wort "", so etrhtet mn dei nfngs uh lle Worte, welhe einen gleihen Präfix (wie z.b. "") esitzen. Dmit solhe unnötigen Betrhtungen vermieden werden, speihert der Trie diese Informtionen nur einml. Zusmmengefsst lutet die Definition dieser Bumstruktur wie folgt: Ein Trie ist eine m- äre Bumstruktur, welhe die in ihr gespeiherten Strings von der Wurzel n uhstenweise in den Knten speihert. Somit ergit die Konktention der Buhsten ller Knten von jedem Weg der Wurzel zu einem Bltt die im Trie enthltene Wortmenge. Am esten lssen sih ll die gennnten Eigenshften n einem Beispiel eshreien, ds in Aildung 2 gegeen ist. Aildung 2: Einfher Trie Der in diesem Beispiel gezeigte Trie einhltet folgende Strings: ",,,, ". Strtet mn nun n der Wurzel und folgt den Knten is zu einem Bltt, so läuft mn eines der fünf enthltenen Worte. Wie oen ereits erklärt, sieht mn hier, dss die gemeinsmen Präfixe der Strings nur einml im Bum vorkommen, ws Pltz und somit (ei der Suhe) uh Zeit sprt. Erst ei voneinnder weihenden Strings 10

2. Die String B-Tree Dtenstruktur verzweigt der Trie. Compted Tries Bei dem isherigen Modell wurde pro Knte immer nur ein Buhste (Symol) gespeihert, ws für grosse Textmengen ein erheliher Pltzverruh ist. Der Compted Trie verringert diesen deutlih, in dem er die im Bum enthltenen Ketten zusmmenzieht. Durh die Ttshe, dss ei einer Kette von Knten immer nur eine Möglihkeit der Trversierung esteht, ist es möglih die Informtionen ller Knten dieses Weges uf einer Knte zusmmenzufssen. Drus folgt, dss die Knten uh mehrere Buhsten einhlten können. Ds Resultt ist der sogennnte Compted Trie; es folgt ein Beispielum in Aildung 3, welher die gleihen Strings wie der ereits gezeigte Trie enthält. Aildung 3: Beispiel für einen Compted Trie Ptrii Tries Der letzte Shritt der Komprimierung (der uf dem Compted Trie ufut) wird in den Ptrii Tries durhgeführt und ist in diesem Fll verlustehftet, ws edeutet, dss ein Teil der ursprünglihen Informtionen verloren geht. Später wird jedoh gezeigt, dss trotz der geringen Informtionsmenge weiterhin eine eindeutige Suhe in diesem Trie möglih ist. Der Untershied zwishen Compted und Ptrii Tries esteht drin, dss eim letzteren nur noh der erste Buhste jeder Knte erhlten leit, nämlih genu der Buhste, der für die Verzweigung der Knten verntwortlih ist. Somit esitzt ein Ptrii Trie zwr genuso viele Knten wie ein Compted Trie, er enthält er pro Knte nur einen Buhsten (den sogennnten Brnhing Chrter). 11

2. Die String B-Tree Dtenstruktur Im Gegenstz zu den isher vorgestellten Tries muss der Ptrii Trie jedoh zusätzlih die ktuelle Länge des Teilstrings in jedem Knoten speihern, wodurh der Ptrii Trie insgesmt trotzdem pltzeffizienter ls der Compted Trie ist. Speziell eim Ptrii Trie im String B-Tree git es den Untershied, dss in jedem Bltt niht ds Wort selst, sondern nur eine Referenz druf enthlten ist. Es folgt Aildung 4, die noh einml die Untershiede zwishen den eiden Tries deutlih mht. 0 5 3 5 4 4 6 6 Aildung 4: Untershied zwishen einem Compted und einem Ptrii Trie Suhe in Ptrii Tries Aufgrund der sehr kompkten und verlustehfteten Speiherung der Strings im Ptrii Trie stellt sih die Frge, wie mn in dieser Dtenstruktur möglihst effizient suhen knn. Dei geht es um die Positionssuhe des Suhmusters im Ptrii Trie, d dies für die Suhe im String B-Tree notwendig ist. Druf soll er erst in den Folgeshnitten genuer eingegngen werden. Diese etws kompliziertere Suhe uf einem Ptrii Trie lässt sih grundsätzlih in zwei Phsen unterteilen: Die erste Phse der Suhe (Blind Serh) führt nur einen ungenuen Vergleih durh, dessen Ziel es ist, ein Wort mit dem longest ommon prefix (lp-wort) zu finden. Dzu wird ds Suhmuster nur mit den Brnhing Chrters im Ptrii Trie verglihen. Je nh Vergleih wird dnn die entsprehende Knte gewählt und der Bum so lnge trversiert, is ein Bltt zw. ds Ende des Suhmusters erreiht ist. Endet die Suhe in einem Bltt, so muss ds Wort im Bltt den lp esitzen. Dei ist zu ehten, dss enhrte Worte (welhe den gleihen Vterknoten esitzen) eenflls den gleihen lp esitzen können, wenn ds Suhmuster z.b. shon eine Eene höher von llen Folgeelementen vershieden ist. Diese Ttshe mht mn sih zunutze, wenn die Suhe mitten im Bum endet (wenn ds Suhmuster zu kurz ist). Mn weiß nun, dss lle drunter liegenden Kinder einen 12

2. Die String B-Tree Dtenstruktur gemeinsmen lp esitzen. Folglih wird us den drunter liegenden Worten ein elieiges usgewählt. Ein Beispiel für eine im Bltt endende Suhe ist in Aildung 5 uf der linken Seite gegeen. In der zweiten Phse (Verifiktion) wird ds gefundene Wort nun enutzt, um die korrekte Position des Suhmusters zu estimmen. Dzu werden eide Worte verglihen und die erste Stelle estimmt, n der die eiden Worte niht mehr üereinstimmen (Fehlstelle). Mit Hilfe des Buhstens n der Fehlstelle estimmt mn den entsprehenden Nhfolgeknoten. Von diesem us knn nun die korrekte Position des Suhstrings (eenflls durh Vergleih mit dem weihenden Buhsten) estimmt werden. In der folgenden Beispielildung (Aildung 5, rehts) git es nur einen Nhfolgeknoten. Die korrekte Position des Suhmusters ist vor dem kleinsten Nhfolgeltt, d der Buhste n der Fehlstelle kleiner ist ls lle nderen. Fehlstelle Fehlstelle 3 0 W = Vergleihe 4 3 0 } W = 4 Nhfolgeknoten 5 5 4 6 6 5 5 4 6 6 Korrekte Position von W Korrekte Position von W }gemeinsmer Präfix Aildung 5: Suhe in einem Ptrii Trie (1. und 2. Phse) 2.4 Ds erweiterte Modell des String B-Trees Nhdem in den isherigen Ashnitten uf die einzelnen Teile des String B-Trees eingegngen wurde, soll nun deren Zusmmenwirken, lso der String B-Tree ls gnzes etrhtet werden. Dei wird niht nur dessen Funktion, sondern uh dessen Komplexität nlysiert. Betrhtet mn die in Ashnitt 2.2 eingeführte B + -Bum Struktur, so sieht mn shnell, dss die Effizienz (wie eim B-Bum) erhelih von der Größe der Knoten zw. deren Grd hängt. Je mehr Elemente nun in einen Knoten pssen, desto größer ist der Verzweigungsgrd des Bumes und desto geringer seine Höhe und dmit uh die Zhl der Zugriffe uf den Hintergrundspeiher. Durh die große Zhl n Elementen innerhl des Knotens werden jedoh im Knoten mehr Vergleihe und somit uh mehr Hintergrundspeiherzugriffe enötigt. Ds liegt drn, dss im Knoten niht die eigentlihen Elemente, sondern nur deren Verweise stehen, so muss ei jedem Vergleih im Knoten uf den Hintergrundspeiher zugegriffen werden. Selst wenn mn im Knoten 13

2. Die String B-Tree Dtenstruktur niht sequentiell (O(k) Zugriffe 3 ), sondern mit Hilfe eines inären Bumes suht, so eträgt die Zhl der Hintergrundspeiherzugriffe immer noh O(lo g k). Um in der B- Bum Struktur von der Knotengröße zu profitieren, ohne dei zu viele Zugriffe im Knoten selst zu hen, ruht mn eine von der Größe unhängige Verwltung der Elemente im Knoten. Diese Anforderung erfüllt der Ptrii Trie, d er sehr kompkt ufgeut ist und ei einer Suhe nur einen Zugriff uf den Hintergrundspeiher (Textdtei) enötigt. Dies ist leiht m Suhlgorithmus zu erkennen: Ds Ergenis der ersten Suhphse ist ds lp-wort, welhes in der zweiten Phse mit dem Suhmuster verglihen wird. Dieser Zugriff ist der einzige in der Suhe, der enötigt wird, um die korrekte Position des Suhmusters zu estimmen. Die Vergleihsuhsten (Brnhing Chrters) uf den Knten sind lle im Ptrii Trie selst enthlten. Durh die Verknüpfung von B + -Bum Struktur und Ptrii Tries (für die Verwltung der Eemente in den Knoten) ergeen sih für den String B-Tree pro Suhnfrge O p / s log g n 1 Zugriffe uf den Hintergrundspeiher. Dei ist zu ehten, dss durh die kompkte Dtenhltung in den Ptrii Tries sehr viele Elemente in einem String B-Tree Knoten gespeihert werden können und somit uh g im llgemeinen reltiv groß ist. Ashließend folgt die Aildung (Nr. 6) eines String B-Tree Modells, welhes noh einml die Verknüpfung von B + -Bum Struktur und Ptrii Trie verdeutliht. Im Gegenstz zum ersten Modell sind niht nur die Worte selst, sondern uh deren Suffixe in den Bum eingefügt worden. Dies ist notwendig für eine exkte Sustringsuhe, die im nähsten Ashnitt im Detil erklärt wird. Die Ptrii Tries in den Knoten der Aildung sind nur symolhft und stimmen niht mit der ttsählihen Struktur üerein. Nhdem gezeigt wurde, wie der String B-Tree ufgeut ist, und welhe Eigenshften sih drus ergeen, soll shließend uf die Opertionen des String B-Trees eingegngen werden. 3 Wenn es niht nders ngegeen wird, so ist im Folgenden die O-Nottion im Text immer uf die Zhl der Hintergrundspeiherzugriffe und niht uf die der Rehenopertionen ezogen. 14

2. Die String B-Tree Dtenstruktur 2 7 17 8 11 5 26 19 14 3 7 10 29 17 30 28 8 13 1 2 9 21 27 11 23 25 20 5 15 4 24 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 k l u s i l o k t z e r m p y r m i d e Aildung 6: String B-Tree (detillierte Drstellung) 2.5 Opertionen uf String B-Trees In diesem Ashnitt werden nur die für diese Areit relevnten grundlegenden Opertionen (Suhen und Einfügen) uf String B-Trees ehndelt. Andere und komplexere Opertionen wie z.b. ds Löshen oder die Ähnlihkeitssuhe wurden weggelssen, d sie für die experimentellen Untersuhungen niht relevnt sind (vgl. Ashnitt 4.3). Suhe Die Suhopertion ähnelt wiederum strk der Suhe in herkömmlihen B-Bäumen. Es wird eim Wurzelknoten egonnen und dnn Shritt für Shritt die Bumstruktur trversiert. In jedem Knoten wird die Position des Suhelementes estimmt und dementsprehend der nähste Kinderknoten gewählt zw. die Suhe eendet, wenn ds Element ereits gefunden wurde. Als Rükge liefert die Suhopertion entweder den Fundknoten und die Fundposition in dem Knoten oder einen Wert, der den Misserfolg signlisiert. Präfix- und Sustringsuhe Gerde in der Anwendung in Gendtennken und im Informtion Retrievl ist es oft 15

2. Die String B-Tree Dtenstruktur niht von so großer Bedeutung, eine komplette Wortsuhe durhzuführen, sondern vielmehr den Präfix eines Wortes zw. einen Sustring in einem Wort oder Stz wiederzufinden. Im Folgenden soll die Vorgehensweise dieser eiden Suhnfrgen uf String B-Trees erklärt werden. Ziel der Präfixsuhe ist es, lle Worte eines Textes zu finden, die den gesuhten Präfix enthlten. Dei ist es niht notwendig, jedes einzelne Wort mit dem Präfix zu vergleihen, d mn sih die (lexikogrphishe) Ordnung der Worte zunutze mhen knn. Ein ehter Präfix ( Präfix < Wort ) eines Wortes ist entsprehend dieser Ordnung immer kleiner ls ds Wort selst. Betrhtet mn die lexikogrphish ufsteigend geordnete Menge ller Worte des Suhtextes, so stellt mn fest, dss sih ein eingeordneter Präfix von einem zw. mehreren Wort(en) genu n der Position vor diesen efinden würde. So z.b. der Präfix "mn" ei der geordneten Wortfolge: "..., mn, mnhml, Mndel, Mngel,...". Aufgrund dieser Ttshe ist für eine Präfixsuhe nur die Positionsestimmung innerhl der geordneten Bumstruktur notwendig. Diese Suhe entspriht genu der Verknüpfung der eiden Suhen uf B + -Bum und Ptrii Trie, die ereits eshrieen wurden. Ht mn diese Position gefunden, so muss mn den String B-Tree nur noh dieser Position in der Ordnungsreihenfolge so lnge trversieren (und die Worte usgeen), is mn uf ein Wort trifft, ds niht mehr den gesuhten Präfix esitzt. Wie shon in Ashnitt 2.2 eshrieen ist dies in der B + -Bum Struktur sehr einfh und in linerer Zeit möglih. Bei der exkten Sustringsuhe in einem String B-Tree greift genu der gleihe Suhlgorithmus wie ei der gerde eshrieenen Präfixsuhe. Der eigentlihe Untershied zur Präfixsuhe esteht in der zugrunde liegenden Menge der Strings. Für die Sustringsuhe wird die Menge der zu durhsuhenden Strings us den Suffixen ller Worte des Textes geildet, ds heißt für jedes Wort im Text werden seine l (mit l = Wortlänge) Suffixe der Menge der zu durhsuhenden Strings hinzugefügt. Durh eine Präfixsuhe uf diesen Suffixen ergit sih leiht ersihtlih eine Sustringsuhe uf der Menge der ursprünglihen Worte. Dies ht zur Folge, dss in den String B-Trees häufig die Menge ller Suffixe der gegeenen Worte in den Bum eingefügt wird, d ei vielen Anwendungen nur eine Sustringsuhe relevnt ist. Die in dieser Areit etrhtete Sustringsuhe git keine Ergenisse zurük, sondern üerprüft nur, o der Sustring enthlten ist oder niht. Im folgenden Teil der Areit soll mit der Suhe immer die soeen eshrieene exkte Sustringsuhe, lso die Präfixsuhe uf der Menge ller Suffixe gemeint sein. Folglih sind mit den Elementen des String B-Trees fortn immer die Suffixe der Worte (zw. des Wortes) der Eingedten (Texte) gemeint. Einfügen Auh die Einfügeopertion der String B-Trees ähnelt, wie lle nderen isher gennnten Opertionen und Eigenshften, der entsprehenden Opertion im B-Bum. Wenn die 16

Experimentelle Untersuhung von String B-Trees 2. Die String B-Tree Dtenstruktur Knoten, die ei der Suhe uf dem Weg zur Einfügestelle trversiert werden, lle einen usreihend kleinen Füllungsgrd hen, so wird ds etreffende Element einfh in die Liste der Elemente des entsprehenden Knotens eingefügt. Wird uf dem Weg zur Einfügestelle ein Knoten trversiert, der ereits den mximlen Füllungsgrd esitzt, so wird dieser Knoten gesplittet. Durh dieses Splitten, ds eenflls eim Wurzelknoten durhgeführt wird, ergit sih eine uslnierte Bumstruktur. D dies für B-Bäume ereits lnge eknnt und usführlih erklärt wurde (vgl. [3]), soll n dieser Stelle niht genuer uf ds Einfügen und ds dmit verundene Splitten eingegngen werden. 2.6 Zusmmenfssung Ashließend sollen in diesem Ashnitt lle wihtigen Eigenshften des String B-Trees und die drus resultierenden Folgerungen ngeführt werden. Dies ist eine Zusmmenfssung der wihtigsten Aussgen us [6], welhe zum Verständnis ngepsst wurden: Der String B-Tree ist eine externe Dtenstruktur, welhe die Struktur eines B + -Bumes mit Ptrii Tries verknüpft, in dem es diese für die Verwltung der Dten innerhl der Knoten verwendet. Um die korrekte Position des Suhmusters im Knoten festzustellen, enötigt der Ptrii Trie dei nur einen Zugriff uf die Textdtei. Im gesmten String B- Tree werden niht die eingefügten Worte selst, sondern nur deren Verweise verwendet. Aus diesen Eigenshften lssen sih folgende Aussgen leiten: Durh die Verwendung von Verweisen uf die Worte und der kompkten Dtenhltung in den Ptrii Trie ist es dem String B-Tree möglih, Worte elieiger Länge zu verwlten. Durh die Verwendung der B + -Bum Struktur sind String B-Trees eine usgeglihene Bumstruktur und hen somit ds gleihe Worst Cse Verhlten wie B-Bäume. Die exkte Sustringsuhe enötigt im Worst Cse O(p/s + l og g n ) Hintergrundspeiherzugriffe. Ds Einfügen eines Suffixes enötigt im Worst Cse O(q/s + l og g n ) Hintergrundspeiherzugriffe (mit q = Suffixlänge). 17

3. Implementierung 3. Implementierung Nhdem im letzten Ashnitt die Struktur und die Opertionen des String B-Trees erklärt wurden, soll in diesem Ashnitt uf die prktishe Umsetzung (Implementierung) des Modells eingegngen werden. Dei sollen verstärkt die Aweihungen und Besonderheiten der Implementierung im Vergleih zu dem in [6] vorgestellten Modell erüksihtigt werden. Bereits vorhndene Implementierungen Zum jetzigen Zeitpunkt ist keine vollständige zw. zugänglihe Implementierung, sondern nur die Existenz dreier Prototypen eknnt. Diese Aussge eruht uf eigener Reherhe und der Aussge von R. Grossi. Aus welhen Gründen keine Informtionen zu diesen Prototypen veröffentliht wurden und wrum nsheinend niht n ihnen weitergereitet wurde, ist mir niht eknnt. Es stellte sih lso niht die Frge, o für die im Rhmen dieser Areit geplnten Untersuhungen uf eine ereits vorhndene Implementierung zurükgegriffen werden soll, sondern es ist von vornherein vorgesehen, eine eigene Implementierung der String B- Tree Struktur zu relisieren. 3.1 Ziel der Implementierung Wie ereits in der Zielsetzung der Diplomreit zu erkennen, ist ds Huptziel der Implementierung eine däqute Umsetzung der String B-Trees für eine experimentelle Untersuhung deren Eigenshften. Aufgrund der Ttshe, dss dies die erste zugänglihe Implementierung ist, soll weiterhin uf eine erweiterre und gut dokumentierte Progrmmierung gehtet werden. Die Möglihkeit, die vorhndene Implementierung für prktishe Anwendungen zu erweitern, soll eenflls gegeen sein. Durh diese Zielsetzungen git es jedoh uh eine klre Agrenzung der Implementierung und einige Aspekte, die ewusst zurükgestellt wurden. D ei den experimentellen Untersuhungen die Auswirkungen vershiedenster Einflussgrößen uf ds Lufzeitverhlten des String B-Trees im Vordergrund stehen und der prktishe Vergleih mit nderen Dtenstrukturen nur exemplrish etrhtet wird, ist in erster Linie ds reltive Verhältnis der Ergenisse (und niht deren solute Werte) wihtig. Aus diesem Grund wurden ufwendige Optimierungen weitestgehend weggelssen. Ein weiteres Gegenrgument ist eine durh die Optimierungen wesentlih shwerer verständlihe Implementierung, ws im Gegenstz zu den oen gennnten Punkten (Erweiterrkeit, Dokumenttion) steht. Als letzter Punkt ist festzuhlten, dss in der Implementierung niht lle denkren Opertionen der String B-Trees umgesetzt worden sind, sondern nur die für die Untersuhung notwendigen Punkte implementiert wurden. Es wurde jedoh druf 18

3. Implementierung gehtet, dss ei einer weiterführenden Areit diese Opertionen ohne weiteres eingereitet werden können. Aufgrund dieser Eigenshften ist diese Implementierung eenflls ls ein Prototyp zu etrhten. 3.2 Verwendete Algorithmen In diesem Ashnitt soll kurz uf die in der Implementierung verwendeten Algorithmen und die sih drus ergeenen Proleme eingegngen werden. D die eiden Areiten von P. Ferrgin und R. Grossi [6,5] die einzigen eknnten Quellen sind, welhe den String B-Tree usreihend erklären, siert die Mehrheit der verwendeten Algorithmen druf. Durh ds hohe Astrktionsniveu des Pseudoodes der Algorithmen g es in vielen Bereihen eine Vielzhl von Implementierungsmöglihkeiten, welhe in den meisten Fällen gründlih nlysiert und usgewertet werden mussten ehe eine Auswhl für den Prototyp getroffen werden konnte. D die Algorithmen für die B-Bum Struktur niht ngegeen sind, wurden die B-Bum Algorithmen us [4] verwendet. Die Splittingopertion ei den Ptrii Tries wurde eenflls niht eshrieen. Es konnte uh keine Quelle gefunden werden, die einen Algorithmus für diese eshreit, so dss ein eigener Algorithmus für ds Splitting der Ptrii Tries entwikelt wurde, welher die in [6] eshrieenen Anforderungen erfüllt und später detillierter erklärt wird. Weitere Angen zum Prototyp finden sih im Anhng oder unter http://www.inf.fuerlin.de/~msholz/stree/, wo uh der Quellode des Prototyps zu finden ist. 3.3 Der Prototyp: stree Progrmmiersprhe Aufgrund der oen gennnten Ziele der Implementierung wurde diese in der Progrmmiersprhe C relisiert, die ufgrund ihrer Eigenshften m esten dfür geeignet ist. Betrhtet mn Implementierungen von nderen Dtenstrukturen, die in der Prxis Anwendung finden, so sieht mn, dss die große Mehrheit in C umgesetzt wurde. Ds ist in erster Linie uf die hohe Ausführungsgeshwindigkeit von C zurükzuführen. Weiterhin ist C eine sehr systemnhe Sprhe, ws eenflls für die Implementierung von Dtenstrukturen prktishe Vorteile ht, d viele Zugriffe (Hupt- und Hintergrundspeiher) sehr systemnh progrmmiert werden sollten, um eine estmöglihe Nutzung der Systemressouren zu erreihen. Ein weiterer wihtiger Vorteil von C ist dessen Portierrkeit, die gerde im Hinlik uf die Weiterverwendung meiner String B-Tree Implementierung ein wihtige Rolle spielt. Der Prototyp stree ist in ANSI C geshrieen und somit sowohl unter Solris und Linux (g) ls uh unter Windows (l) luffähig. 19

Experimentelle Untersuhung von String B-Trees 3. Implementierung Progrmmstruktur des Prototyps Ds Progrmm ist in drei Module ufgeteilt: stree Ds Huptprogrmm, ds die Opertionen (Einfügen und Suhen) des String B-Trees und eine Testumgeung enthält. Weiterhin einhltet es untergeordnete Opertionen, wie z.b. Split-Node, welhe zum Einfügen in den String B-Tree enötigt werden. snode Dieses Progrmm enthält den Dtentyp und die Opertionen für einen String B-Tree Knoten. Solh ein Knoten esteht us einem Ptrii Trie, welher mit einem Feld, ds die Nhfolgerliste enthält, verknüpft ist. filepros, enwordpros, stkpros Die Hilfs- und Hintergrundroutinen sind in drei Bereihe ufgeteilt. Ein Progrmmteil (filepros) enthält sämtlihe Dteizugriffsroutinen, ein weiterer (enwordpros) lle Wortopertionen (Wortlänge, Binärodierung, usw.) und einer (stkpros) die Implementierung eines Stks. Weitere Informtionen zur genuen Struktur und zum Aufu des Prototyps sind in der Progrmmdokumenttion enthlten. 3.4 Wihtige Aspekte der Implementierung Auf eine Gesmteshreiung des Prototyps wird n dieser Stelle verzihtet. Jedoh sollen einzelne interessnte Aspekte der Implementierung erwähnt werden, d sie zum Teil sehr hilfreih für ds spätere Verständnis einiger Untersuhungsergenisse sind. 3.4.1 Erstellen eines eindeutigen Endmrkers Wie P. Ferrgin und R. Grossi in [5] vorshlgen, wird im Prototyp "stree" ein eindeutiger Endmrker hinter jedes Wort des Textes geshrieen, dmit für jedes eingefügte Wort die Eindeutigkeit gewährleistet sein knn. Der Endmrker wird ls Teil des Wortes ehndelt. Um die Eindeutigkeit des Endmrkers zu gewährleisten, werden diese zusätzlih fortlufend nummeriert. Dies geshieht durh eine Zhl, die sih hinter dem Endmrkersymol efindet. Es folgt eine Beispielildung. 20

3. Implementierung Wie mn in der Aildung erkennen knn, würde es ohne den eindeutigen Endmrker eim einfügen dieser Dten zwei gleihe Strings, nämlih den String dose geen, d er einml ls gnzes Wort und einml ls Suffix des Wortes zukerdose in den Bum eingefügt werden würde. Durh den Endmrker jedoh ergeen sih die eiden (ungleihen) Strings dose$1245 und dose$1247. Ds eigentlihe Prolem gleiher Worte und Präfixe von nderen Worten liegt in der Ptrii Trie Struktur, welhe ddurh komplexer (und somit uh weniger effizient) werden würde. Es knn ddurh niht mehr gewährleistet werden, dss in jedem Bltt des Ptrii Tries genu ein Element enthlten ist. Grundsätzlih ist die Implementierung einer solhen Vrinte möglih, diese wird jedoh us den ereits gennnten Gründen der shlehten Effizienz niht in Betrht gezogen. Betrhtet mn die prktishe Anwendung im Hinlik uf die Endmrker, so müssten die Eingedten noh einml vorverreitet werden. Dies ist er nur notwendig ei Texten mit mehreren Worten (z.b. Wörterühern), d Eingedten, die nur ein Wort enthlten, durh ihr Dteiende ereits mit einem eindeutigen Endmrker versehen sind. 3.4.2 Binärodierung der Worte Ein wihtiger Teil der String B-Tree Implementierung ist die Umsetzung der Ptrii Tries. D ds ereits eshrieene theoretishe Modell in jedem Knoten 0 is m (m = Alphetgröße) Knten zu den Kinderknoten zulässt, müssen lle Kntenlisten entweder ls weniger effiziente dynmishe Struktur umgesetzt werden oder sie verruhen ls sttishes Feld wesentlih mehr Speiherpltz. Aus der unregelmäßigen Zhl der Kinderknoten ergeen sih zusätzlih Proleme ei der Aildung uf den Hintergrundspeiher. Um diese Proleme zu vermeiden, shlgen P. Ferrgin und R. Grossi in [5] eine Binärodierung der Eingeworte vor. Die prktishen Vorteile, die sih drus ergeen, sind sofort ersihtlih, wenn mn ds Beispiel in Aildung 8 etrhtet. Durh die Codierung ht der Trie keine m-äre, sondern eine inäre Struktur, die wesentlih einfher und somit effizienter zu implementieren ist. D jeder Knoten (mit Ausnhme der Wurzel) genu zwei Kinder esitzt, können diese einfh in einem zweielementigen Feld gespeihert werden, ds einen wesentlih shnelleren Zugriff ermögliht. Zusätzlih ist eine kompkte Aildung uf den Hintergrundspeiher durh einen einfhen Preorder Wlk zu relisieren. 4 4 Die Aildung uf den Hintergrundspeiher ist in [5] usführlih eshrieen. 21

3. Implementierung 24 0 1 0 0 1 32 0 1 = 01000000 = 10000000 = 11000000 8 it Codierung 40 25 0 1 48 48 40 32 Ein weiterer in [5] ngesprohener Vorteil ist die Unhängigkeit vom Eingelphet. Im "stree" Prototyp sind durh eine 8 Bit Codierung Alphetgrößen von 2-255 (Ein Zeihen ist für den Anfng des Endmrkers reserviert) möglih. Es wurde eine sttishe Codierungsgröße von 8 Bit verwendet, weil der Dtenzugriff in Byterstern effizienter ist ls der Zugriff uf einzelne Bits. Außerdem entsteht durh die längeren Worte im Trie kein Nhteil, d diese dnn viele Stellen mit gleihen konstnten Werten esitzen, welhe im Ptrii Trie komprimiert werden. Der Ptrii Trie wird somit uh niht größer. Die Codierung der Bits entspriht der einfhen inären Umsetzung der Zhlenwerte des ASCII Codes der Zeihen. Ddurh ergit sih für die Ordnung im Bum keine lexikogrphishe, sonderen eine dem ASCII Wert zugrunde liegende Ordnung. Die Ordnung ist jedoh unerhelih, so lnge sie in der gesmten Implementierung konsistent leit. Die eigentlihe Codierung der Eingedten geshieht niht duerhft, sondern ist in den Opertionen des Ptrii Tries gekpselt. Diese Opertionen finden Verwendung, wenn der Bum trversiert wird oder zwei Worte miteinnder verglihen werden. Die Dten im Hintergrundspeiher werden dei niht verändert. 3.4.3 Splitting-Opertion Aildung 8: Beispielildung eines inären Ptrii Tries D der Splitting Algorithmus für inäre Ptrii Tries selst entwikelt wurde und somit keine Quelle dfür existiert, soll er n dieser Stelle genuer erläutert werden. Ist ein Knoten in einem String B-Tree voll (d.h. er enthält 2 Grd 1 Elemente), so muss er gesplittet werden. Im Gegenstz zu einem normlen B-Bum ist im Knoten kein Feld, sondern eine Bumstruktur, der Ptrii Trie, enthlten. Diese Bumstruktur muss nun 22

3. Implementierung eim Splitten durh einen senkrehten "Shnitt" in zwei Teile geteilt werden. Dei ist zu ehten, dss es sih in dem Prototypen niht um m-äre, sondern wie oen eshrieen um inäre Ptrii Tries hndelt. Die Ange einer Splitstelle ist eine reine Positionsnge und ezieht sih nur uf die Positionen der Blätter, d der restlihe Teil des Bumes nh ußen hin gekpselt (niht sihtr) ist. Ds Prolem dei ist, dss die "Nht" der Splitstelle durh die gesmte Bumstruktur verläuft und deswegen üerll erüksihtigt werden muss. Um lso üerll im Bum usreihend Informtionen üer die Splitnht zu esitzen, muss zumindest der Teilum, in dem die Nht verläuft, komplett durhlufen werden. Prktisherweise wird eim Lden eines Knotens ei der Umwndlung der persistenten Drstellung in die Huptspeiherpräsenttion einml der komplette Ptrii Trie durhlufen. Bei diesem Vorgng werden im Prototypen die zusätzlih notwendigen Informtionen in den Ptrii Trie Knoten gespeihert. Diese Informtion esteht im Grunde nur us der ktuellen Position des Knotens ezüglih der Blätterliste: Die korrekte Position in den Blättern entspriht einfh deren horizontle Anordnung und in den inneren Knoten entspriht diese der größten Position im linken Teilum. In Aildung 9 sind die Positionsngen die Zhlenwerte, die in den Knoten enthlten sind 5. 6 6 5 7 5 7 3 8 Split 3 8 2 2 1 4 1 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Splitstelle Splitstelle Aildung 9: Splitten eines inären Ptrii Tries (Die Zhlen in den Knoten repräsentieren die Position ezüglih der Blätterliste) Verfügt mn üer diese Angen, so ist es möglih in jedem Knoten festzustellen, o dieser sih rehts oder links von der Splitstelle efindet. Mit Hilfe dieser Informtion knn mn nun den Bum von der Wurzel us trversieren. Dei wird immer die Knte gewählt, die in die Rihtung der Splitnht geht. In der Aildung ist dieser Weg mit einer dikeren Linie hervorgehoen. Jedesml, wenn ei der Trversierung eine Rihtungsänderung uftritt, lso die Splitnht gekreuzt wurde, muss die een trversierte 5 Um die Aildung so klr wie möglih zu gestlten, wurden lle weiteren Inhlte des Ptrii Tries weggelssen. (Die Zhlen in den Knoten repräsentieren in diesem Shuild niht die Länge des gespeiherten Strings!) 23

3. Implementierung Knte neu usgerihtet werden, so dss sie niht mehr die Splitnht kreuzt und ddurh lle Invrinten im Bum erhlten leien. Ds ist gewährleistet, wenn die Knte uf den Knoten verweist, n dem die nähste Rihtungsänderung stttfindet. In der Aildung ist der Fll gezeigt, in dem zwr keine Rihtungsänderung stttfindet, jedoh genu die Splitstelle (Innerer Knoten mit Position 4) gefunden ist. Ist die gerde gennnte Aruhedingung (Splitstelle gefunden) erfüllt, so wird die unterste Knte neu usgerihtet und somit der Knoten n der Splitstelle gelösht. Ist ds eigentlihe Splitten der Bäume getn, so muss (je nh Splitstelle) für einen der eiden Bäume eine neue Wurzel gefunden werden, dmit die Eigenshften des Ptrii Tries erhlten leien. 3.4.4 Ching Ein sehr wihtiger Aspekt für die gesmte Speiherhierrhie eines Rehners und somit uh für den Zugriff uf den Hintergrundspeiher stellt ds Ching (Puffern) dr. Ziel des Chings ist es, so viele Zugriffe wie möglih uf den in der Hierrhie tieferen (und somit lngsmeren) Speiher zu vermeiden. Grundsätzlih ist die Verwendung eines progrmminternen Puffers ei String B-Trees von großem prktishen Nutzen, d ein intensiver Dtenustush zwishen Hupt- und Hintergrundspeiher stttfindet. Im Hinlik uf die Ziele dieser Areit ergeen sih us der Implementierung eines Puffers wenig nutzen, sondern eher Nhteile ei den Untersuhungen. D in den Untersuhungen die Eigenshften einer String B-Tree Implementierung etrhtet werden, ist eine möglihst klre Umsetzung der Struktur nötig, dmit deren Eigenshften deutliher erkennr sind. Durh Hinzufügen eines Puffers wird die Implementierung zwr veressert und ddurh shneller und effizienter (ws in der prktishen Anwendung uh notwendig ist), ei den Messergenissen ergit sih jedoh eine unerwünshte Verzerrung und somit ein unklres Bild der zugrunde liegenden Struktur. Ein weiterer Nhteil ergit sih us rein prktishen Üerlegungen. D der String B-Tree für große Textorpor konzipiert wurde, die um ein vielfhes größer ls der verwendete Huptspeiher sind, zeigen sih die zu untersuhenden Eigenshften des String B-Trees ntürlih uh erst ei diesen sehr großen Dtenmengen. Die verwendete Implementierung enutzt niht den gesmten Huptspeiher, sondern nur so viel, wie für einen String B-Tree Knoten und die eiden Dtenpuffer enötigt wird; es wird kein weiterer Knoten gepuffert. Ddurh zeigen sih die Eigenshften des String B- Trees shon ei verhältnismäßig kleinen Bumgrößen. Es knn lso unnötiger Aufwnd n Speiherpltz und Zeit vermieden werden, ohne dei die reltiven Ergenisse zu verfälshen. Aus een gennnten Gründen wurde in der Implementierung des Prototyps uf die Verwendung eines selst implementierten Puffers verzihtet. Speziell für den Vergleih mit nderen Dtenstrukturen und für die Anwendung ist ein Puffer ntürlih unverzihtr 24

3. Implementierung und einer der ersten Aspekte, der ei einer Weiterführung des Prototyps umgesetzt werden müsste. 3.4.5 Hintergrundspeiherzugriffe Durh den intensiven Geruh des Hintergrundspeihers ergit sih der Huptnteil n der Geshwindigkeit der Implementierung us der Effizienz der verwendeten Zugriffsmethoden. D für die experimentellen Untersuhungen nur ein uf den String B- Tree ezogener Vergleih notwendig ist, wurden für die Implementierung des Prototyps nur die Stndrd-Ein- und Ausgeroutinen (fred, fwrite) verwendet. Bei einer uf dem Prototyp ufuenden Implementierung, welhe für die prktishe Anwendung oder stärker für den Vergleih mit nderen Dtenstrukturen genutzt werden soll, ist die Verwendung von effektiveren Methoden (wie z.b. Memory Mpping 6 ) eine wihtige Vorussetzung. Auf solhe Veresserungen soll hier jedoh niht im Detil eingegngen werden, d diese mit der eigentlihen Implementierung nihts zu tun hen. 6 Dmit ist ds in UNIX C verwendete Memory Mpping (mmp) gemeint. 25

4. Plnung der Untersuhungen 4. Plnung der Untersuhungen Nhdem ds Modell des String B-Trees und im Anshluss die wihtigsten Eigenshften des implementierten Prototyps erklärt wurden, soll nun der zentrle Aspekt dieser Areit, die experimentellen Untersuhungen, ehndelt werden. In diesem Kpitel wird die Plnung und Vorereitung der Experimente erklärt. In dem dnh folgenden Kpitel werden dnn die einzelnen Untersuhungsergenisse vorgestellt. Wie ereits in der Einführung eshrieen, hndelt es sih ei den String B-Trees um eine sehr ktuelle Dtenstruktur, üer die es isher nur drei eknnte Areiten [6,5,14] git. Trotz dieser Ttshe sind ereits zwei experimentelle Untersuhungen der String B-Tree Dtenstruktur vorhnden. Die eine Areit [5] ist eenflls von P. Ferrgin und R. Grossi. In ihr wird ein Vergleih zwishen den Implementierungen des String B-Trees, des Suffix Arrys und des Präfix B-Bumes durhgeführt. Der Vergleih eshränkt sih jedoh nur uf die Anzhl der Festplttenzugriffe, die in der jeweiligen Implementierung gezählt wurden. Dei wurden die vershiedenen Ches von Festpltte und Betriesysstem ewusst niht erüksihtigt. Bis uf eine kurze Erwähnung eim Vergleih mit Präfix B- Bäumen wurden keine Lufzeiten gennnt. Aufgrund dieser eingeshränkten Betrhtung lssen sih diese Ergenisse niht für diese Areit verwenden und werden im Folgenden niht weiter erüksihtigt. Die Ergenisse der nderen experimentellen Areit von K. R. Rose [14], welhe eine String B-Tree Implementierung mit dem Dtennksystem Sleepyt vergleiht, ist eenflls für diese Areit unerhelih. Durh den Vergleih mit einem Dtennksystem sind die untersuhten Anwendungsfälle speziell uf diesen Kontext ezogen und für die in dieser Areit durhgeführten Untersuhungen ezüglih Genom-Dtennken und Informtion Retrievl prktish kum von Bedeutung. Als erster Shritt in der Vorereitung stellt sih die Frge, von welher Art und welhem Umfng die durhzuführenden Experimente sein sollen. Dei ergeen sih drei Bereihe:! Üerprüfung der theoretishen Aussgen Diese Untersuhung soll die in [6] gegeen theoretishen Aussgen für die enötigten Hintergrundspeiherzugriffe nhnd der Implementierung üerprüfen. Konkret werden dei die exkte Sustringsuhe, welhe O(p/s + l og g n ) und ds Einfügen, ds O(q/s + l og g n ) Zugriffe enötigt, untersuht. Dei soll etrhtet werden, inwieweit sih diese Aussgen in die prktishen Anwendungsfälle üertrgen lssen.! Untersuhung der Eigenshften des String B-Trees Dieser Bereih ildet den Shwerpunkt der gesmten Untersuhungen. In ihm sollen sowohl die Eigenshften des String B-Trees selst (Bum- und Knotengröße) ls uh sein Verhlten ezüglih vershiedener Dtenmengen mit untershiedliher Struktur (Alphetgröße, Zeihenverteilung, Repetitivität) nhnd von Experimenten untersuht werden. Aufgrund dieser Ergenisse soll festgestellt werden, für welhe Anwendungsfälle der String B-Tree gut zw. weniger gut geeignet ist. Bei dieser Bewertung sollen esonders die Suhopertion und die Bereihe Genom-Dtennken 26

4. Plnung der Untersuhungen und Informtion Retrievl erüksihtigt werden. " Vergleih mit einer nderen Dtenstruktur Der Vergleih mit einer nderen Dtenstruktur ist nur ein untergeordneter Teil, der eine erste Bewertung der Prxisrelevnz ermöglihen soll. Die zu vergleihende Dtenstruktur sollte deshl eine für Genom-Dtennken und Informtion Retrievl konzipierte Dtenstruktur sein. Auf einen usführlihen Vergleih mit einer zw. mehreren nderen Dtenstrukturen wird verzihtet, d dies den Rhmen dieser Areit sprengen würde und somit eher ein sinnvoller Anstz für weiterführende Areiten wäre. Aufgrund der Festlegung dieser Bereihe muss nun eine konkrete Betrhtung der für die Untersuhung notwendigen Einfluss- und Messgrößen durhgeführt werden. 4.1 Einflussgrößen Im Folgenden sollen sämtlihe Einflussprmeter ngegeen und im einzelnen eshrieen werden. " Prmeter der Dtenstruktur Diese Prmeter umfssen die veränderlihen Größen der Dtenstruktur und der Implementierung. " Größe des String B-Trees Die Größe des String B-Trees, die durh die Anzhl seiner Elemente gegeen ist, stellt eine entsheidende Einflussgröße dr, welhe in sämtlihen Untersuhungen erüksihtigt werden muss. Sie ist sehr vriel und wird durh die zugrunde liegende Textgröße z estimmt. " Grd der Knoten des String B-Trees Der Knotengrd und die drus resultierenden Knotengröße wirkt sih direkt uf die Höhe des Bumes us und ist esonders in Hinlik uf die Üerprüfung der theoretishen Aussgen eine relevnte Größe. In den tehnishen Untersuhungen wird der optimle Wert experimentell ermittelt und für lle Folgeuntersuhungen festgesetzt. " Der Dtenpuffer Die Größe des Dtenpuffers git n, wie viele Dten ei einem Festplttenzugriff 7 in den Huptspeiher gelden werden. " Dtenprmeter Mit der Bezeihnung Dtenprmeter sind lle veränderren Einflussgrößen ezüglih der zugrunde liegenden Eingedten (Textorpor, Genomdten, et.) gemeint. Alle ufgeführten Dtenprmeter werden in den experimentellen Untersuhungen erüksihtigt und zum Teil isoliert etrhtet. 7 Dmit ist ein Festplttenzugriff im Dtenmodell gemeint, welhes im Folgeshnitt Messgrößen eshrieen wird. 27