Algorithmische Bioinformatik

Ähnliche Dokumente
Algorithmische Bioinformatik

Algorithmische Bioinformatik

Bioinformatik. Suffixbäume auf Sekundärspeicher. Ulf Leser Wissensmanagement in der. Bioinformatik

Definition (Reguläre Ausdrücke) Sei Σ ein Alphabet, dann gilt: (ii) ε ist ein regulärer Ausdruck über Σ.

Bioinformatik. Lokale Alignierung Gapkosten. Silke Trißl / Ulf Leser Wissensmanagement in der. Bioinformatik

Bioinformatik. Zeichenketten und Stringalgorithmen. Ulf Leser Wissensmanagement in der. Bioinformatik

Reguläre Sprachen und endliche Automaten

Algorithmische Bioinformatik

Übung zur Vorlesung Algorithmische Geometrie

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Grundlagen der Theoretischen Informatik

Algorithmen und Datenstrukturen 2

Grundlagen der Theoretischen Informatik

Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive

Theoretische Grundlagen des Software Engineering

Umformung NTM DTM. Charakterisierung rek. aufz. Spr. Chomsky-3-Grammatiken (T5.3) Chomsky-0-Grammatik Rek. Aufz.

Pattern Matching. Maik Windhorst Universität Bremen Abstract. 1. Pattern Matching Was ist das?

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

Formale Methoden 1. Gerhard Jäger 9. Januar Uni Bielefeld, WS 2007/2008 1/23

Algorithmische Bioinformatik

Grundlagen der Theoretischen Informatik

Vorlesung Datenstrukturen

Vorlesung Theoretische Informatik

Theoretische Grundlagen der Informatik

Bioinformatik. Zeichenketten und Stringalgorithmen. Ulf Leser Wissensmanagement in der. Bioinformatik

2.11 Kontextfreie Grammatiken und Parsebäume

Automaten und Formale Sprachen Endliche Automaten und Reguläre sprachen

5.4 Endliche Automaten

Theoretische Informatik. Alphabete, Worte, Sprachen

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Einführung in die Informatik

9. Heuristische Suche

Operationen auf endlichen Automaten und Transduktoren

Klausur Algorithmen und Datenstrukturen

Suche nach einem solchen Kreis. Endlichkeitstest. Vereinigung und Durchschnitt. Abschlusseigenschaften

Automatentheorie und formale Sprachen

Formale Methoden 1. Gerhard Jäger 23. Januar Uni Bielefeld, WS 2007/2008 1/18

Überführung regulärer Ausdrücke in endliche Automaten

Dank. 1 Ableitungsbäume. 2 Umformung von Grammatiken. 3 Normalformen. 4 Pumping-Lemma für kontextfreie Sprachen. 5 Pushdown-Automaten (PDAs)

Algorithmische Bioinformatik

Vortrag. Suchverfahren der Künstlichen Intelligenz. Sven Schmidt (Technische Informatik)

Sprachen/Grammatiken eine Wiederholung

8. Turingmaschinen und kontextsensitive Sprachen

Einführung in die Computerlinguistik deterministische und nichtdeterministische endliche Automaten

Formale Sprachen. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marian KOGLER

Automaten, Spiele, und Logik

Datenstrukturen & Algorithmen

Vorlesung 4 BETWEENNESS CENTRALITY

Endliche Automaten. Endliche Automaten J. Blömer 1/23

Grundlagen der Theoretischen Informatik

Reguläre Grammatiken/Sprachen und endliche Automaten

Einführung in Heuristische Suche

Kombinatorische Optimierung

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Algorithmen und Datenstrukturen in der Bioinformatik Viertes Übungsblatt WS 05/06 Musterlösung

ADS: Algorithmen und Datenstrukturen 2

Formale Methoden 1. Gerhard Jäger 16. Januar Uni Bielefeld, WS 2007/2008 1/19

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Theoretische Grundlagen der Informatik

Theoretische Informatik Testvorbereitung Moritz Resl

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Satz von Kleene. (Stephen C. Kleene, ) Wiebke Petersen Einführung CL 2

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Konstruktion sehr großer Suffixbäume

Algorithmische Bioinformatik 1

Tutorium Algorithmen & Datenstrukturen

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Algorithmen und Datenstrukturen 2

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Grundbegriffe der Informatik

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Unterscheidung: Workflowsystem vs. Informationssystem

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP

Theoretische Grundlagen des Software Engineering

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Musterlösung zur Hauptklausur Theoretische Grundlagen der Informatik Wintersemester 2013/14

Eigenschaften regulärer Sprachen

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Formale Sprachen und Automaten

Kapitel 3: Reguläre Grammatiken und Endliche. Automaten

Binary Decision Diagrams (Einführung)

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert.

Transkript:

Algorithmische Bioinformatik Suffixbäume Ulf Leser Wissensmanagement in der Bioinformatik

Ziele Perspektivenwechsel: Von Online zu Offline-Stringmatching Verständnis von Suffix-Bäumen als Datenstruktur Problem bei der Konstruktion erkennen Ulf Leser: Algorithmische Bioinformatik 2

Inhalt dieser Vorlesung Einschub: Suche mit regulären Ausdrücken Suffixbäume Motivation Aufbau Verwendung von Suffixbäumen Naive Konstruktion Ulf Leser: Algorithmische Bioinformatik 3

Grenzen des linearen Stringmatching Wir können in linearer Zeit finden Alle Vorkommen eines Pattern P in einem Template T Alle Vorkommen einer Menge von Pattern in einem Template T Alle Vorkommen eines Pattern P mit Wildcard in einem Template T Alle Vorkommen eines Pattern P mit maximal k Mismatches in T Zeigen wir nicht Was können wir nicht mehr in linearer Zeit finden? Alle Vorkommen eines regulären Ausdrucks R in T Alle approximativen Vorkommen eines Pattern P in T Ulf Leser: Algorithmische Bioinformatik 4

Suche mit regulären Ausdrücken Reguläre Ausdrücke ε Leeres Zeichen oder () Gruppierung * Kleen sche Hülle (Es fehlen +,., [], zählen,...) Rekursive Definition wie üblich Beispiel aus der Bioinformatik PROSITE: Datenbank für Motive in Proteinsequenzen Proteindomänen sind funktionale Einheiten in Proteinsequenzen Beschrieben durch reguläre Ausdrücke Aber tw. andere Operatoren als die oben genannten Ulf Leser: Algorithmische Bioinformatik 5

Problem Gegeben: Regulärer Ausdruck R, Template T Gesucht: Das erste Vorkommen von R in T Äquivalenz: nichtdeterministischer endlicher Automaten (NEA) Konstruktion: Siehe Literatur Beispiel: (d o g)((n o)w)*(c l ε)(c l) Matched z.b. dnwnwowc, ol, gowll,... d ε c c S o o w l Z g n ε ε l Ulf Leser: Algorithmische Bioinformatik 6

Definitionen Definition Sei R ein regulärer Ausdruck und G(R) der dazugehörige NEA mit Startzustand S und Endzustand Z Ein Substring T von T matched R, wenn T durch einen Pfad in G(R) von S nach Z ausgesprochen wird Bemerkungen Komplexität der Konstruktion von G(R) ist linear Die Menge aller Strings, die von G(R) akzeptiert werden, bilden die Sprache zu R Gesucht: Algorithmus, um das erste T in T zu finden, das R matcht Erweiterung auf alle T machen wir nicht Ulf Leser: Algorithmische Bioinformatik 7

Algorithmusidee Wir beginnen mit dem leichteren Problem: Matched ein Präfix von T mit R? Idee Betrachte G(R) und T von links nach rechts Aufzählen aller Pfade in G(R) mit aufsteigender Länge, die mit T matchen Wird Terminal Z gefunden, haben wir einen Match Erweiterung zu beliebigen Substrings von T? Betrachte Pattern R = Σ*R Präfix Σ* von R frisst beliebige Präfixe von T Ulf Leser: Algorithmische Bioinformatik 8

Pfadaufzählung Induktion über Pfadlänge i Anfang: Sei N(0) die Menge aller Knoten, die von S per beliebig vielen ε-kanten erreicht werden können. Außerdem sei S N(0) Induktionsschritt Sei N(i-1) bekannt N(i) ist die Menge aller Knoten, die von einem Knoten aus N(i-1) erreicht werden durch erst genau eine Kante mit Label T[i] dann beliebig viele (oder keine) ε-kanten Enthält N(i) das Terminalsymbol Z, endet im Template T an Position i ein Auftreten von R Ulf Leser: Algorithmische Bioinformatik 9

Beispiel d ε c c S o o w l 1 2 3 4 Z g n ε ε l Pattern: (d o g)((n o)w)*(c l ε)(c l) Suche: ol N(0) = {S} N(1) = {1,3,4} N(2) = {4,Z} Success Suche: dnwnwowc N(0) = {S} dnwnwowc N(1) = {1,3,4} dnwnwowc N(2) = {2} dnwnwowc N(3) = {3,4,1} dnwnwowc N(4) = {2} dnwnwowc N(5) = {3,4,1} dnwnwowc N(6) = {2} dnwnwowc N(7) = {3,4,1} dnwnwowc N(8) = {4,Z} Success Ulf Leser: Algorithmische Bioinformatik 10

Komplexität Kritisch ist nur der Schritt N(i-1) N(i) Sei e die Anzahl von ε-kanten in G(R) Match für T[i] finden geht in O(1) (oder O( Σ ) Danach können höchstens e ε-kanten folgen Wichtig ist nur, welche Zustände wir erreichen können wie, ist egal Schranke e gilt für alle Zustände aus N(i-1), die wir weiter verfolgen Zyklen können abgebrochen werden (braucht etwas Speicher) Also ist dieser Schritt O(e) Wir berechnen T =m Mengen N(1)... N(m): O(m*e) Beobachtung Ein reg. Ausdruck mit n= R Symbolen hat maximal O(n) ε-kanten Sonst kann er minimiert werden Zusammen: O(m*n) Ulf Leser: Algorithmische Bioinformatik 11

Bemerkung Jeden NEA kann man in einen DEA konvertieren Ein DEA erlaubt Matchen in linearer Zeit Wenn wir die Failure Links dazu berechnen Aber Linear in der Zahl der Zustände Der durch Konvertierung erzeugte DEA hat aber im Worst-Case exponentiell viele Zustände In der Praxis hat er die aber nicht RegExp matching ist meistens linear Ulf Leser: Algorithmische Bioinformatik 12

Inhalt dieser Vorlesung Einschub: Suche mit regulären Ausdrücken Suffixbäume Motivation Aufbau Verwendung von Suffixbäumen Naive Konstruktion Ulf Leser: Algorithmische Bioinformatik 13

Wo sind wir? Alle exakten Vorkommen von P in T Alle exakten Vorkommen einer Menge von P in T Datenbankformulierung: Alle exakten Vorkommen von P in T, aber man darf T präprozessieren Später Approximatives Stringmatching Heuristiken für approximatives Stringmatching in Datenbanken Multiple Sequence Alignment Phylogenetische Algorithmen Ulf Leser: Algorithmische Bioinformatik 14

Problemstellung Bisherige Algorithmen Ein Template T (m) und ein oder mehrere Pattern P (n) Prinzip: Preprocessing von P in O(n), dann Suche in O(m) Jetzt: Gegeben eine lange Zeichenkette T Z.B. Komplettes Genom des Menschen Benutzer schicken ständig neue Pattern P Z.B. Gene anderer Spezies T sollte vorverarbeitet werden Kosten amortisieren sich über viele Suchen Zählen nicht für die Suche eines Pattern Eine Lösung: Suffixbäume Ulf Leser: Algorithmische Bioinformatik 15

Motivation: Datenbanksuchen Solche Suchen sind ein Hauptthemen der Bioinformatik I.d.R. approximativ Schnelle Algorithmen für approx. Suchen benutzen (fast) immer ein exaktes Suchverfahren zum Finden aussichtsreicher Regionen Suffixbäume sind sehr schnell für exakte Suchen Aber: Speicherplatz, Sekundärspeicherverhalten Alternative Baumstrukturen: Suffix-Arrays, Enhanced Suffix-Arrays, Burrows-Wheeler-Transformation, Andere Alternative: Hashing Suffixbäume haben viele weitere Anwendungen Suche nach längsten identischen Subsequenzen Suche nach längsten Repeats... Ulf Leser: Algorithmische Bioinformatik 16

Suffixbäume Definition Der Suffixbaum T für einen String S mit S =m ist ein Baum mit T hat eine Wurzel und m Blätter, markiert mit 1,...,m Jede Kante E ist mit einem Substring label(e) von S beschriftet Jeder innere Knoten k hat mindestens 2 Kinder Alle Label der Kanten von einem Knoten k aus beginnen mit unterschiedlichen Zeichen Sei (k 1,k 2,...,k n ) ein Pfad von der Wurzel zu einem Blatt mit Markierung i. Dann ist die Konkatenation der Label der Kanten auf dem Pfad gleich S[i..m] Ulf Leser: Algorithmische Bioinformatik 17

Beispiel 1 1234567890 S= BANANARAMA 10 ma a 9 Problem: Wohin kommt AMA? Verlängerung von a verboten 10 sonst kein Blatt Neue Kante ama verboten zwei Pfade aus der Wurzel würden sonst mit gleichem Zeichen beginnen Es gibt keinen Suffixbaum für BANANARAMA Problem tritt auf, sobald ein Suffix Präfix eines anderen Suffix ist - Also dauernd Trick: Wir betrachten BANANARAMA$ $ nicht Teil des Alphabets von S Ulf Leser: Algorithmische Bioinformatik 18

Beispiel 2 12345678901 S= BANANARAMA$ 11 $ a$ 10 9 ma$ Ulf Leser: Algorithmische Bioinformatik 19

Beispiel 2 12345678901 S= BANANARAMA$ 11 $ narama$ 5 $ a 10 ma$ 9 rama$ ma$ 7 narama$ 4 8 rama$ 6 Ulf Leser: Algorithmische Bioinformatik 20

Beispiel 3 12345678901 S= BANANARAMA$ 1 bananarama$ 3 narama$ 11 $ na rama$ 5 2 narama$ 4 $ 8 a 10 9 ma$ na rama$ rama$ ma$ rama$ 6 7 Ulf Leser: Algorithmische Bioinformatik 21

Eigenschaften von Suffixbäumen Zu jedem String (plus $) gibt es genau einen Suffixbaum Jeder Pfad von Wurzel zu einem Blatt ist eindeutig Jede Verzweigung an einem inneren Knoten ist eindeutig Gleiche Substrings können an mehreren Kanten stehen Suffixbäume und Keyword-Trees Betrachte alle Suffixe von S als Pattern Konstruiere den Keyword-Tree Verschmelze alle Knoten auf einem Pfad ohne Abzweigungen zu einer Kante Dann haben wir einen Suffixbaum für S Komplexität? Ulf Leser: Algorithmische Bioinformatik 22

Weitere Beispiele S= aaaaa$ 6 5 4 3 $ $ $ $ a a a a 2 $ a$ 1 S= abcde$ 6 5 $ e$ de$ cde$ abcde$ bcde$ 1 4 3 2 Ulf Leser: Algorithmische Bioinformatik 23

Inhalt dieser Vorlesung Einschub: Suche mit regulären Ausdrücken Suffixbäume Motivation Aufbau Verwendung von Suffixbäumen Naive Konstruktion Ulf Leser: Algorithmische Bioinformatik 24

Definitionen Definition Sei T der Suffixbaum für String S+ $ Sei p ein Pfad in T von root(t) zu einem Knoten k. Dann ist label(p) die Konkatenation der Label der Kanten auf dem Pfad p Sei k ein Knoten von T und p der Pfad zu k. Dann ist label(k) = label(p) Sei k ein Knoten von T. Dann ist depth(k)= label(k) Ulf Leser: Algorithmische Bioinformatik 25

Suche mit Suffixbäumen Intuition Jedes Vorkommen eines Pattern P muss Präfix eines Suffix sein Und die haben wir alle auf Pfaden von der Wurzel aus Gegeben S und P. Finde alle Vorkommen von P in S Konstruiere den Suffixbaum T zu S+ $ Das geht in O( S ), wie wir sehen werden Matche P auf einen Pfad in T ab der Wurzel Wenn das nicht geht, kommt P in S nicht vor P kann in einem Knoten k enden; merke k Oder P endet in einem Kantenlabel; sei k der Endknoten dieser Kante Die Markierungen aller unterhalb von k gelegenen Blätter sind Startpunkte von Vorkommen von P in S Ulf Leser: Algorithmische Bioinformatik 26

Beispiel: bananarama$ 1 P = na bananarama$ 3 narama$ 11 $ na rama$ 5 11 1 bananarama$ $ na 3 narama$ rama$ 5 2 narama$ 4 $ 8 a 10 9 ma$ na rama$ rama$ ma$ rama$ 6 7 $ a 10 9 ma$ rama$ ma$ 7 2 narama$ na 4 8 rama$ rama$ 6 P = an Ulf Leser: Algorithmische Bioinformatik 27

Komplexität Theorem Sei T der Suffixbaum für S+ $. Die Suche nach allen Vorkommen eines Pattern P, P =n, in S ist O(n+k), wenn k die Anzahl Vorkommen von P in S ist. Beweisidee P in T matchen kostet O(n) Pfade sind eindeutig Entscheidung an jedem Knoten ist klar Blätter aufsammeln ist O(k) Baum unterhalb Knoten K hat k Blätter Wie finde man die O(k)? Ulf Leser: Algorithmische Bioinformatik 28

Längster gemeinsamer Substring Gegeben zwei Strings S 1 und S 2 Gesucht: Längster gemeinsamer Substring s Vorschläge? Lösung Konstruiere Suffixbaum T für S 1 $S 2 % Streiche aus diesem Baum alle Pfade unterhalb eines $ Durchlaufe den Baum markiere alle internen Knoten mit 1, wenn im Baum darunter ein Blatt aus S 1 kommt markiere Knoten mit 2, wenn... Blatt aus S 2 vorkommt Suche den tiefsten Knoten mit Beschriftung 1 und 2 Ulf Leser: Algorithmische Bioinformatik 29

Beispiel S 1 =main$, S 2 =kai%... 9 9 6 5 main$kai% % 1 kai% ai n$kai% % $kai% i n$kai% n$kai% 7 2 6 5 kai% $ % n$ main$ ai n$ % i n$ 1 7 2 4 8 % 3 4 8 % 3 Ulf Leser: Algorithmische Bioinformatik 30

Beispiel 9 2 6 5 kai% $ 4 % n$ 8 main$ ai n$ % i n$ % 3 1 7 2 2 1 kai% $ 1 % n$ 2 main$ ai 1,2 n$ % i 1,2 n$ % 1 1 2 1 Verallgemeinerbar zu n Strings S 1,...,S n Ulf Leser: Algorithmische Bioinformatik 31

Komplexität Annahme: Wir können T für S in O( S ) berechnen Die Schritte Sei m= S 1 + S 2 Konstruiere Suffixbaum T für S 1 $S 2 % Ist O(m) nach Annahme Streiche aus diesem Baum alle Pfade unterhalb eines $ Depth-First Traversal O(m) Durchlaufe den Baum und markiere innere Knoten mit 1,2 Depth-First Traversal O(m) Suche den tiefsten Knoten mit Beschriftung 1 und 2 Breadth-First Traversal O(m) Zusammen: O(m) Ulf Leser: Algorithmische Bioinformatik 32

Längstes Palindrom Gegeben String S. Finde den längsten Substring s, der sowohl vorwärts als auch rückwärts in S vorkommt Ideen? Lösung Suche längsten gemeinsamen Substring für S und reverse(s) Ulf Leser: Algorithmische Bioinformatik 33

Weitere Anwendungen A. Apostolico: The myriad virtues of subword trees, in: Combinatorial Algorithms on Words, 1985 Ulf Leser: Algorithmische Bioinformatik 34

Inhalt dieser Vorlesung Einschub: Suche mit regulären Ausdrücken Suffixbäume Motivation Aufbau Verwendung von Suffixbäumen Naive Konstruktion Ulf Leser: Algorithmische Bioinformatik 35

Naive Konstruktion von Suffixbäumen Gesucht: Suffixbaum T für String S Start: Bilde Baum T 0 mit Wurzelknoten und einer Kante mit Label S$ zu einem Blatt mit Markierung 1 Konstruiere T i+1 aus T i wie folgt Betrachte das Suffix S i+1 = S[i+1..]$ Matche S i+1 in T i so weit wie möglich Schließlich muss es einen Mismatch geben Alle bisher eingefügten Suffixe sind länger als S i+1, also wird $ nie mit $ matchen $ kommt sonst nicht in S vor Folgendes kann passieren... Ulf Leser: Algorithmische Bioinformatik 36

Naive Konstruktion von Suffixbäumen 2 Konstruiere T i+1 aus T i wie folgt... 1. S i+1 matched bis auf $; Mismatch auf einer Kante n an Position j Füge in n an Position j einen neuen Knoten k ein Erzeuge Kante von k zu neuen Blatt k ; beschrifte die Kante mit $ Markiere k mit i+1 2. S i+1 matched bis auf $; Mismatch am Ende einer Kante n Sei k der Zielknoten von n Erzeuge Kante von k zu neuen Blatt k ; beschrifte die Kante mit $ Markiere k mit i+1 3. Mismatch vor $ auf einer Kante n an Position j des Labels; der Mismatch in S i+1 sei an Position j < S i+1 Füge in n an Position j einen neuen Knoten k ein Erzeuge Kante von k zu neuen Blatt k ; beschrifte Kante mit S[j..]$ Markiere k mit i+1 Ulf Leser: Algorithmische Bioinformatik 37

Beispiel barbapapa... Ulf Leser: Algorithmische Bioinformatik 38

Komplexität Komplexität? Jeder Schritt von T i zu T i+1 ist O(m) Es gibt m-1 solche Schritte Zusammen: O(m 2 ) Nächstes Thema: O(m) Algorithmus von Ukkonen Ulf Leser: Algorithmische Bioinformatik 39

Selbsttest Wir kann man die k Blätter unterhalb eines Baumknoten p in einem Suffixbaum in O(k) erreichen? Naiver Konstruktionsalgorithmus für Suffixbäume und dessen Komplexität? Wie kann man in O( P ) zeigen, ob P in einem String S enthalten ist (mit Präprozessierung) Wie kann man das in quasi O(k) erreichen, wenn n= P fest ist? Ulf Leser: Algorithmische Bioinformatik 40