Textalgorithmen Vorlesung im Wintersemester 2003/04 Otto-von-Guericke-Universit¨at Magdeburg Fakult¨at fur¨ Informatik Ralf Stiebe [email protected] Inhaltsverzeichnis Einleitung 4 0 Begriffe und Notationen 6 1 Exakte Suche nach einem Wort 8 1.1 Naiver Algorithmus . 8 1.2 R¨ander und Perioden . 9 1.3 Der Algorithmus von Knuth-Morris-Pratt . 12 1.4 Suche mit deterministischen endlichen Automaten . 15 1.5 Boyer-Moore-Algorithmus . 17 1.6 Apostolico-Giancarlo-Algorithmus . 22 1.7 Algorithmus von Vishkin . 25 1.8 Der Shift-And-Algorithmus . 29 1.9 Algorithmen mit Suffixautomaten . 30 1.10 Karp-Rabin-Algorithmus . 33 1.11 Eine untere Schranke fur¨ Algorithmen zur Wortsuche . 35 2 Exakte Suche nach komplexen Mustern 38 2.1 Suche nach endlich vielen W¨ortern . 38 2.2 Suche nach zweidimensionalen Bildern . 44 2.3 Suche nach regul¨aren Ausdrucken.........................¨ 48 2.4 Einige Spezialf¨alle regul¨arer Ausdrucke......................¨ 51 3 Inexakte Suche 54 3.1 Einleitung . 54 3.2 L¨osung durch dynamische Programmierung . 56 3.3 Alignments mit beschr¨ankter Fehlerzahl . 63 3.4 Alignments mit Lucken(gaps)...........................¨ 66 3.5 L¨osung mit linearem Platzbedarf . 68 3.6 L¨osung in subquadratischer Zeit . 69 3.7 Multiple Alignments . 72 4 Indexieren von Texten 77 4.1 Einfuhrung¨ ..................................... 77 4.2 Datenstrukturen fur¨ Indexe . 77 4.2.1 Suffixb¨aume . 77 4.2.2 Suffix-Arrays . 79 1 4.2.3 Varianten und Erweiterungen . 79 4.3 Konstruktion von Suffixb¨aumen . 80 4.3.1 Naiver Algorithmus . 81 4.3.2 Algorithmus von McCreight . 82 4.3.3 Online-Algorithmus von Ukkonen . 86 4.4 Konstruktion von Suffix-Arrays . 86 4.4.1 Konstruktion durch Verfeinerung . 87 4.4.2 Skew Algorithmus von K¨arkk¨ainen und Sanders . 89 4.5 Anwendungen von Suffixb¨aumen und Suffix-Arrays . 91 4.5.1 Wiederholte Suche in festem Text . 91 4.5.2 L¨angstes gemeinsames Teilwort . 92 4.5.3 Ziv-Lempel-Kompression . 93 4.5.4 Burrows-Wheeler-Transformation . 93 Literaturverzeichnis 96 2 3 Einleitung Die Verarbeitung langer Zeichenketten (Strings, Texte) ist eine der grundlegenden Aufgaben in der Informatik. Es ist deshalb wenig verwunderlich, daß bereits ab 1970 zahlreiche Probleme aus diesem Gebiet formuliert und effizient gel¨ost wurden. Neue Herausforderungen ergaben sich in jungerer¨ Zeit durch das Aufkommen des Internet und der Bioinformatik. Diese Vorlesung soll eine Einfuhrung¨ in einige wichtige Probleme und Algorithmen fur¨ Zeichenketten geben. Sie gliedert sich in folgende Abschnitte: 1. Exakte Wortsuche: Gegeben sind W¨orter P (Pattern) und T (Text). Gesucht sind alle Vorkommen von P in T . Wir geben verschiedene Algorithmen an, die dieses Problem effizient l¨osen. Außerdem betrachten wir das Problem der Suche nach einer endlichen Menge von W¨ortern. 2. Suche nach regul¨aren Ausdrucken:¨ Gegeben sind ein Text T und ein regul¨arer Ausdruck α. Gesucht sind Teilw¨orter von T , die in der von α definierten Sprache enthalten sind. 3. Suffixb¨aume und Suffixarrays: Diese Datenstrukturen speichern eine Zeichenkette S so, daß man einen schnellen Zugriff auf jedes Teilwort von S hat. Im Suffixbaum werden alle Suffixe von S in einem Baum gespeichert. Im Suffixarray wird die lexikografische Ordnung der Suffixe von S gespeichert. Wir behandeln effiziente Algorithmen von zur Konstruktion von Suffixb¨aumen und Suffixarrays. Wichtigste Anwendung beider Datenstrukturen ist die wiederholte Suche in einem kon- stanten Text T der L¨ange n. Ist der Suffixbaum fur¨ T konstruiert, so kann die Suche nach einem Wort P der L¨ange m mit einem Aufwand von O(m), also unabh¨angig von n, erledigt werden. Weitere Anwendungen sind die Suche nach Regularit¨aten in Tex- ten (z.B. lange Wiederholungen, sehr h¨aufige Teilw¨orter) sowie die Burrows-Wheeler- Transformation. 4. Ahnlichkeit¨ von Zeichenketten: Das Finden von Ahnlichkeiten¨ in zwei oder mehr Zei- chenketten ist von großer Bedeutung in der Bioinformatik. Die einfachste Aufgabe dieses Typs ist die Bestimmung des Levenshtein-Abstandes (edit distance): Gegeben sind zwei W¨orter S1 und S2. Wie viele Operationen der Form Ersetzen/Einfugen/Streichen¨ eines Zeichens ben¨otigt man, um S1 in S2 umzuwandeln? Dieses Skript entstand zu einer Vorlesung im Rahmen der theoretischen Informatik. Neben der Vermittlung der Algorithmen stehen deshalb Korrektheitsbeweise und Laufzeitabsch¨atzun- gen im Vordergrund. 4 Literatur In den letzten Jahren sind einige Bucher¨ (in englischer Sprache) uber¨ Textalgorithmen er- schienen, u.a. von Apostolico und Galil [1], Crochemore und Rytter [3, 4], Gusfield [6], Na- varro und Raffinot [12] Smyth [14] und Stephen [13]. Auf franz¨osisch gibt es ein Buch von Crochemore, Hancart und Lecroq [5]. Die exakte Wortsuche wird außerdem in zahlreichen allgemeinen Buchern¨ uber¨ Algorithmen betrachtet. Besonders ausfuhrlich¨ geschieht dies im Buch von Heun [7]. Dieses Skript orientiert sich am Buch von Gusfield [6], das ein sehr gut geschriebenes Lehr- buch ist und außerdem einen umfassenden Einblick in die Anwendung von Textalgorithmen in der Bioinformatik vermittelt. Zahlreiche Quellen gibt es auch im Internet. Hier seien nur drei genannt: • http://www.dei.unipd.it/~stelo/ eine umfangreiche Link-Sammlung von Stefano Lonardi, • http://www-igm.univ-mlv.fr/~lecroq/lec en.html die Homepage von Thierry Lecroq mit einer umfangreichen Pr¨asentation (einschließlich Animationen) von Algorithmen zur exakten Wortsuche und zum Sequenzvergleich sowie einer umfassenden Bibliographie zu Textalgorithmen. • http://dcc.uchile.cl/ gnavarro/eindex.html die Homepage von Gonzalo Navarro mit zahlreichen Originalarbeiten und Ubersichts-¨ artikeln aus den letzten Jahren sowie einigen nutzlichen¨ Programmen. 5 Kapitel 0 Begriffe und Notationen Es werden die ublicherweise¨ in einer Grundvorlesung Algorithmen und Datenstrukturen ver- mittelten Kenntnisse vorausgesetzt. Die Notation von Algorithmen in Pseudocode folgt den Konventionen aus dem Standard-Lehrbuch Introduction to Algorithms von Cormen, Leiserson und Rivest [2]. Insbesondere wird der Rumpf einer Schleife durch die Tiefe der Einruckung¨ erkennbar. Bei der Bestimmung von Laufzeiten gehen wir davon aus, daß auf Speicherplatz in kon- stanter Zeit zugegriffen werden kann und fur¨ Zahlen in der Gr¨oßenordnung der betrachte- ten Wortl¨angen die arithmetischen Grundoperationen in konstanter Zeit ausgefuhrt¨ werden k¨onnen (unit cost model). Fur¨ ein Wort S uber¨ einem Alphabet Σ wird die L¨ange von S durch |S| bezeichnet. Die M¨achtigkeit einer Menge M bzw. der Betrag einer reellen Zahl z werden ebenfalls mit |M| bzw. |z| bezeichnet. Die Bedeutung ergibt sich aus dem Kontext. Das Wort der L¨ange 0 heißt das leere Wort und wird mit ε bezeichnet. Es seien u und v W¨orter. Gilt u = u1vu2, so nennt man v ein Teilwort oder Infix von u. Gilt u = vu2, so nennt man v ein Pr¨afix von u. Gilt u = u1v, so nennt man v ein Suffix von u. Ist v ein Teilwort (bzw. Pr¨afix bzw. Suffix) von u mit v 6= u, so nennt man v ein echtes Teilwort (bzw. echtes Pr¨afix bzw. echtes Suffix) von u. Fur¨ 1 ≤ i ≤ |u| ist u[i] das Zeichen an der Stelle i von u. Das Teilwort von der Stelle i bis zur Stelle j von u ist u[i . j]. Gilt i > j oder i > |u|, so ist u[i . j] per definitionem das leere Wort. Die Menge aller W¨orter uber¨ einem Alphabet Σ bezeichnen wir mit Σ∗, die Menge aller nichtleeren W¨orter mit Σ+. Mit ur bezeichnen wir das Wort S von rechts nach links gelesen. Gilt u = ur, so nennt man u ein Palindrom . Eine grundlegende Operation ist der Vergleich zweier Buchstaben. Ergibt sich bei einem solchen Vergleich eine Ubereinstimmung,¨ so sprechen wir von einem Match , anderenfalls von einem Mismatch . ∗ Es sei (Σ, <) ein total geordnetes Alphabet. Die lexikografische Ordnung <lex auf Σ erh¨alt man wie folgt: + 1. ε <lex α fur¨ alle α ∈ Σ . ∗ 2. Aus a < b folgt aα <lex bβ fur¨ alle α, β ∈ Σ . 3. Aus α <lex β folgt aα <lex aβ fur¨ alle a ∈ Σ. 6 Schließlich ben¨otigen wir noch den Begriff des endlichen Automaten. Ausfuhrlich¨ werden diese Stukturen in einfuhrenden¨ Buchern¨ zur Theoretischen Informatik (z.B. [8]) behandelt. Ein nichtdeterministischer endlicher Automat mit ε-Transitionen (NEA) ist ein Quintupel A = (Σ, Z, δ, I, Q), wobei Σ ein Alphabet, Z eine endliche Zustandsmenge, δ ⊆ Z × (Σ ∪ {ε}) × Z eine Uberf¨ uhrungsrelation¨ oder Menge von Transitionen, I ⊆ Z eine Menge von Startzust¨anden, Q ⊆ Z eine Menge von akzeptierenden Zust¨anden sind. Ein NEA wird h¨aufig durch seinen Graphen dargestellt. Dabei werden ein Zustand durch einen Knoten, eine Transition durch eine gerichtete und beschriftete Kante, ein Startzustand durch einen Pfeil von außen und ein Endzustand durch einen Doppelkreis gekennzeichnet. Die ε-Hulle¨ δ0 von A ist wie folgt definiert: 0 1. δ0 := {(z, ε, z): z ∈ Z}, 0 0 0 0 0 2. δi+1 := {(y, ε, z): ∃z ((y, ε, z ) ∈ δi+1 ∧ (z , ε, z) ∈ δ}, fur¨ 0 ≤ i, ∞ ∞ 0 S 0 S 0 3. δ := δi = δi . i=0 i=0 Die Relation δ wird wie folgt zur Relation δ∗ ⊆ Z × Σ∗ × Z erweitert: 1. δn+1 := {(y, wa, z): w ∈ Σn ∧ a ∈ Σ ∧ ∃z0∃z00((y, w, z0) ∈ δn ∧ (z0, a, z00) ∈ δ ∧ (z00, ε, z) ∈ δ0)}, fur¨ n ≥ 0, ∞ 2. δ∗ := S δn. n=0 Anschaulich gesprochen, ist (y, w, z) genau dann in δ∗, wenn es im Graphen des Automaten einen Weg vom Knoten y zum Knoten z mit der Beschriftung w gibt. Die vom NEA A = (Σ, Z, δ, I, Q) akzeptierte Sprache ist ∗ ∗ L(A) = {w ∈ Σ : ∃z1∃z2(z1 ∈ I ∧ z2 ∈ Q ∧ (z1, w, z2) ∈ δ }. Ein NEA heißt (partieller) deterministischer endlicher Automat (DEA), wenn δ eine (par- tielle) Funktion δ : Z × Σ → Z ist und I genau einen Zustand enth¨alt. Es ist bekannt, daß es zu jedem NEA einen ¨aquivalenten DEA gibt, der aber exponentiell gr¨oßer sein kann.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages98 Page
-
File Size-