Suffix-Bäume Definition Suche nch einer Menge von Mustern Längste gemeinsme Zeichenkette Pltzreduktion Suffixbäume für Muster Alle Pre Suffix-Präfix Übereinstimmung Sich wiederholende Strukturen
Definition Suffixbum Suchindex für einen Text T für die Suche nch verschiedenen Mustern P. T = m P = n Suffixbum Gerichteter Bum mit genu m Blättern mit Nummern 1 bis m. Innere Knoten hben mind. 2 Söhne Knten sind mit Teilzeichenketten us T beschriftet Die Beschriftungen der usgehenden Knten eines Knotens beginnen mit unterschiedlichen Buchstben. Die Beschriftungen entlng des Pfdes von der Wurzel zu Bltt i ergeben T[i..m].
Beispiel T = xbx (letztes Zeichen von T = Endmrkierung) 3 6 5 x b u x b x w 4 b x 1 Suche nch bxb Pltzbedrf: O(m) 2 Vorverrbeitung: O(m) Suche nch P: O(n)
Definition Sei v Knoten eines Suffix-Bumes. Dnn ist die Pfd-Beschriftung von v die Konktention der Beschriftungen der Knten uf dem Weg von der Wurzel nch v. Beispiel x 3 6 5 b u x b x w 4 b x 1 2 Pfd-Beschriftung von u: 2: bx
Generlisierte Suffixbäume Gegeben: Menge S 1,...,S k von Zeichenketten S i = m i Gesucht: Repräsenttion der Suffixe von S 1,...,S k Vefhren: Erstelle Suffixbum für S 1 1 S k k ( i j, i j) Jedes Bltt entspricht einem Suffix von einem String S i Bltt j String i mit S 1 1 S i-1 i-1 < j S 1 1 S i i Suffix j - S 1 1 S i-1 i-1 Beschrifte Blätter mit (String, Suffix)
Beispiel S 1 = xbx S 2 = bbxb S 1 1 S 2 2 = xbx 1 bbxb 2 x b x & 1 1,3 b b 1 2 b & 2 2 b 2 b 1 x & x 2 & 1 1 2,3 2,5 x 2,6 1,5 2,4 1,4 1,1 b b & 1 2 2 & 1 = 1 S 2 2,2 1,2 2 2,1 Keine zwei Suffixe von S 1 1 S 2 2 beginnen mit S 1 Suffixbum von Suffixbum von S ~ 1 1 S 2 2 S 1 & 1 und S 2 2
Längste gemeinsme Zeichenkette Zeichenketten S 1 und Frge: Welches ist die längste Zeichenkette, die sowohl in ls uch in vorkommt? S 1 Beispiel S 1 = Bioinformtik Verfhren generlisierter Suffixbum für S 2 S 2 S 2 = Anforderung {S 1,S 2 } Mrkiere innere Knoten mit 1 (2), flls der Teilbum einen Suffix von S 1 (S 2 ) enthält. Derjenige mit 1 und 2 mrkierte Knoten mit größter Zeichentiefe entspricht der längsten gemeinsmen Zeichenkette Zeit: liner
Beispiel S 1 = xbx S 2 = bbxb 1,3 2 2,3 b x b 1 2 2 2 b b & 1 x 2,5 x 2,6 1,5 b b & 1 2 2,1 2 2,2 1,2 & 1 x b b x & 1 2 & 1 2,4 1,4 1,1
Beispiel S 1 = xbx S 2 = bbxb 1,3 2 2,3 x b 1,2 1,2 b 1,2 1 2 2 2 b b 2 & 1 x 2,5 x 2,6 1,5 1,2 b b & 1 2 2,1 2 1,2 2,2 1,2 & 1 x 1,2 1 b b x & 1 2 & 1 2,4 1,4 1,1 bx
DNS Kontmintion Gegeben Zeichenkette S 1 beknnte Zeichenkette Kontmintion) (neu sequenzierte DNS) S 2 (Quellen möglicher Gesucht Alle Teilstrings von S 2, die in S 1 vorkommen und die länger ls eine vorgegebene Länge l sind. Verfhren generlisierter Suffixbum für {S 1,S 2 } mrkiere innere Knoten, deren Teilbum sowohl einen Suffix für S 1 ls uch für S 2 enthält. Gebe Zeichenfolgen für lle mrkierten Knoten mit Zeichentiefe l us.
Längste gemeinsme Zeichenkette Gegeben: K Menge S 1,...,S K von Zeichenketten mit Σ Sk = n k=1 Definition l(k) = Länge der längsten Zeichenkette, die in k der Zeichenketten S 1,...,S K enthlten ist. Gesucht: Beispiel l(k), k = 2,...,K {Anforderung, Bioinformtik, Formldehyd, Norm, Sorge} k l(k) Zeichenkette 2 5 form 3 3 for, orm 4 2 or 5 2 or
O(Kn) Verfhren generlisierter Suffixbum für {S 1,...,S K } Definition v innerer Knoten, C(v) Anzhl von Zeichenketten mit mind. einem Suffix in dem Teilbum von v C(v) + Zeichentiefe von v, für lle inneren Knoten des Suffixbumes l(k), k = 2,...,K v Berechnung von l(k) us C(v) L[k] = Länge der längsten Zeichenkette, die genu k-ml vorkommt.
Beispiel {Anforderung, Bioinformtik, Formldehyd, Norm, Sorge} k L[k] Zeichenkette 2 3 4 5 5 3 0 2 l(k) = mx {L[k],...,L[K]} Berechnung von L[k] form for, orm or Durchlufe Suffixbum mit Vektor L innerer Knoten v: if Zeichentiefe von v > L[C(v)] then L[C(v)] Zeichentiefe von v
Berechnung der C(v) innerer Knoten v: Bitvektor b[1,...,k] b[k] = 1 Teilbum mit Wurzel v enthält einen Suffix von S k mit Bitvek- Berechnung innerer Knoten v mit Söhnen v 1,...,v l toren b 1,...,b l Bitvektor b von v: k = 1,...,K b[k] = b 1 [k] or b 2 [k] or or b l [k] C[v] = b[1] + b[2] + + b[k] Zeit: K Bitopertionen pro Knoten O(Kn)
Suffixbäume für Muster Vorverrbeitung des Musters (der Muster) KMP, Boyer-Moore Mtching Sttistiken Definition ms(i) = Länge des längsten Teilstrings von T, der n Position i beginnt und irgendwo in P vorkommt. Beispiel T = bcxbcdex P = wbcybcdz ms(1) = 3 ms(5) = 4
Mtching Sttistiken Vorkommen von P in T n Stelle i: ms(i) = P Anwendungen von Mtching Sttistiken Exkte Zeichenkettensuche Speicherpltzreduktion Approximtive Zeichenkettensuche
Berechnung von Mtching Sttistiken 1. Schritt Suffixbum T für P Behlte Suffix-Zeiger Definition Sei v ein innerer Knoten mit Kntenbeschriftungen S von der Wurzel bis v. (S knn uch ds leere Wort sein.)
Berechnung von Mtching Sttistiken 1. Schritt Suffixbum T für P Behlte Suffix-Zeiger 2. Schritt ms(1): Überprüfe Zeichen von T[1..m] einzelnin T 3. Schritt ms(i) ms(i+1) : Stelle s in T v ist letzter innerer Knoten T[i..j] uf dem Weg mit Kntenschriftung T[i..ms(i)] v T[j..i+ms(i)]α (j = ms(i) möglich) s ( α = uch möglich w ist w ein Bltt)
() Folge Suffix-Zeiger s(v) T[i+1..j] T[i..j] w v s(v) T[i..i+ms(i)] = P[l..l+ms(i)] T[i+1..i+ms(i)] = P[l+1..l+ms(i)]
(b) Überspringe/Zähle-Trick v T[i..j] s(v) T[i+1..j] w α 1 α k
(b) Überspringe/Zähle-Trick v T[i..j] s(v) T[i+1..j] w α 1 T[j+1..i+ms(i)] erster Buchstbe von α 1 gleich T[j+1] α k
(c) Zeichenweiser Vergleich T[i..j] v s(v) T[i+1..j] α 1 w T[j+1..i+ms(i)] α k T[i+ms(i)+1.. i+1+ms(i+1)] zeichenweiser Vergleich α k+1
Anlyse Stz Mit Hilfe eines Suffix-Bumes für P können lle m Mtching Sttistiken von T in Zeit O(m) berechnet werden. Beweis Berechnung von ms(i+1): (mximl) einem Vterzeiger zu v folgen Suffix-zeiger von v folgen Überspringe/Zähle-Opertionen Zeichenvergleichsopertionen
Zeichenvergleichsopertionen T[i+ms(i)+1..i+1+ms(i+1)] und T[i+ms(i)+1] Übereinstimmung Mismtch Pro Schritt i höchstens ein Vergleich, um einen Mismtch festzustellen. m Vergleiche Jedes Zeichen T[j] wird genu einml bei Übereinstimmung verglichen m Vergleiche 2m Vergleiche
Überspringe/Zähle-Opertionen Definition Die Knotentiefe eines Knotens v ist die Anzhl der Knoten uf dem Weg von der Wurzel zu v (ohne v). 0 1 2 Lemm Ist v ein innerer Knoten von T und w der Knoten, uf den s(v) zeigt, dnn gilt: 3 Knotentiefe von w Knotentiefe von v - 1
Beweis Sei u ein Knoten uf dem Weg von der Wurzel zu v P[i..i+k-1]= P[j..j+k-1] u P[i+k] P[j+k] v P[i+1..i+k-1]= P[j+1..j+k-1] u P[i+k] P[j+k] w Außer P[i..i+k-1] ist ein Buchstbe P[i+1..i+k-1] ist leer und u gleich der Wurzel
Überspringe/Zähle-Opertionen Knotentiefe von w Knotentiefe von v - 1 Knotentiefe des Endes von T[i..ms(i)] - 2 über lle Opertionen wird die Knotentiefe um höchstens 2m insgesmt erniedrigt Nun gilt: Knotentiefe eines Knotens n über lle Opertionen wird die Knotentiefe um höchstens 2m+n insgesmt erhöht Überspringe/Zähle-Opertion erhöht Knotentiefe um eins Behuptung
Eine Erweiterung Definition Für jede Position i von T bezeichne p(i) eine Position in P mit T[i..i+ms(i)] = P[p(i)..p(i)+ms(i)] Berechnung der p(i) s Tiefensuche in dem Suffix-Bum T innerer Knoten v wird mit der Nummer eines der Blätter seines Teilbums beschriftet. T[i..ms(i)] endet bei einem Knoten u: p(i) = Beschriftung von u T[i..ms(i)] endet in einer Knte (u,v): p(i) = Beschriftung von v
Beispiel P = xbx x 3 6 5 b u x b x w 4 b x 1 T = xxxbxbx 2 ms(5) = p(5) = ms(2) = p(2) =