Transcript
Page 1: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Konstruktion sehr großer Suffixbäume

Michael Höhndorf

Steffen Andre

Page 2: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Übersicht

Probleme mit Suffixbäumen Lösungsansätze Verschiedene Algorithmen

Hunt

Top-Q

TDD

Vergleich

Page 3: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Problem Suffixbaum

Hoher Speicherbedarf Zeitaufwendige Konstruktion bei großen

Eingabestrings, da Konstruktion im RAM nicht möglich

Häufige Sprünge im Speicher Memory Bottleneck

Page 4: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Lösungsansätze

Suffixbaumkonstruktionen plattenfreundlich gestalten

Hunt

TDD

Bufferstrategie ändern Top-Q

TDD

Page 5: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Hunt/ Atkinson/ Irving

Konstruktion per Platte Vorher nur Suffixbäume kleiner als RAM Tausch von O(n) gegen locality of access Verzichtet auf Suffixlinks O(n2) Durchschnitt: O(n*logn)

Page 6: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Top-Q (Bedathur/ Haritsa)

Benutzt Ukkonnen-Algorithmus Neue Pagingstartegie

Page 7: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

TDD

Von Tata/Hankins/Patel Top down disk based Besonderheit: “locality of reference” Übertrifft alle bisherigen Ansätze Unterteilung in zwei Phasen

PWOTD (Konstruktion des Suffixbaumes) Bufferstrategie

Page 8: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

PWOTD

Partition and Write Only Top Down Unterteilung in zwei Schritte

Partitionierung Wotdeager

Komplexität: Worst Case: O(n2) Average Case O(n*logn)

Page 9: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Repräsentation

String: ATTAGTACA

Page 10: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Partitionierung

Alphabet: Σ Prefixlen: Tiefe der Partitionierung Suffixe in |Σ|prefixlen Partitionen teilen Für jede Partition Suffixbaum erstellen Suffixbäume zusammenfügen Im Beispiel:

T={2,3,6}

Page 11: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Wotdeager

Benutzt 4 Datenstrukturen Input String Array Suffixes Array Temp Array Tree Array

Page 12: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Algorithmus

Page 13: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Bufferstrategie

Optimale Ersetzungsstrategie für die vier Datenstrukturen finden

verfügbaren RAM zwischen den vier

Datenstrukturen aufteilen, um den

größtmöglichen Gewinn zu erreichen

Page 14: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Bufferstrategie

Page 15: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Bufferstrategie

String Größe: n Ersetzungsstrategie: LRU Schlechteste „locality of reference“

Suffixes-Array Größe: 4n Ersetzungsstrategie: LRU

Page 16: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Bufferstrategie

Temp Array Größe: 4n Ersetzungsstrategie: MRU

Tree-Array Größte von allen Größe: 8-12n Ersetzungsstrategie: LRU Hohe „locality of reference“

Page 17: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Buffermanagement

Page 18: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Bufferstrategie

Aufteilung des Hauptspeichers Suffixes/Temp benötigt mindestens |Σ| Seiten Tree benötigt mindestens 2 Seiten Eingabestring wird wenn möglich komplett in

den Speicher übernommen Wenn noch Platz im Hauptspeicher ist wird

dieser an Suffixes, Temp, Tree vergeben

Page 19: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

Bufferstrategie

Page 20: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

TDD vs. Ukkonen

Page 21: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

TDD vs. Ukkonen

TDD bei größeren Alphabeten zunehmend besser als Ukkonen

Bei kleinen Alphabeten (demelano) Faktor 2.5 Bei mittleren Alphabeten (swp20) Faktor 4.5 Bei großen Alphabeten (unif40) Faktor 10

Trotz O(n2) meist besser, da locality of reference

Ukkonen’s Algorithmus hat viele cache misses (Bei modernen Rechnern)

Page 22: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

TDD vs. Hunt

Page 23: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

TDD vs Hunt

TDD in jedem Fall bedeutend besser Bei kleinen Alphabeten (H Chr1) Faktor 5.5

Bei mittleren Alphabeten (TrEMBL) Faktor 7.4

Bei großen Alphabeten (guten) Faktor 9.9

Hunt viele Sprünge bei Konstruktion

TDD berührt jeden Knoten nur einmal

Page 24: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

TDD vs. TopQ

Test mit 50Mbp de Human Chromosom-I TopQ 78min TDD unetr gleichen Umständen nur 2,1min

TDD um Faktor 37 schneller Test auf gesamtem Chromosom

TopQ 5800min TDD 18min

Page 25: Konstruktion sehr großer Suffixbäume Michael Höhndorf Steffen Andre

FRAGEN???


Recommended