Approximate Pattern Matching with Index Structures
Total Page:16
File Type:pdf, Size:1020Kb
Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen a Approximatec e Pattern Matching b with Index Structuresd f Johannes Krugel a c b d c e d f e e e f a d e b c f Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Approximate Pattern Matching with Index Structures Johannes A. Krugel Vollständiger Abdruck der von der Fakultät für Informatik der Technischen Universität München zur Erlangung des akademischen Grades eines Doktors der Naturwissenschaften (Dr. rer. nat.) genehmigten Dissertation. Vorsitzender: Univ.-Prof. Dr. Helmut Seidl Prüfer der Dissertation: 1. Univ.-Prof. Dr. Ernst W. Mayr 2. Univ.-Prof. Dr. Stefan Kramer, Johannes Gutenberg-Universität Mainz Die Dissertation wurde am 06.05.2015 bei der Technischen Universität München eingereicht und durch die Fakultät für Informatik am 19.01.2016 angenommen. ii Zusammenfassung Ziel dieser Arbeit ist es, einen Überblick über das praktische Verhalten von Indexstrukturen und Algorithmen zur approximativen Textsuche (approximate pattern matching, APM) zu geben, abhängig von den Eigenschaften der Eingabe. APM ist die Suche nach Zeichenfolgen in Texten oder biologischen Sequenzen unter Berücksichtigung von Fehlern (wie z. B. Rechtschreibfehlern oder genetischen Mutationen). In der Offline-Variante dieses Problems kann der Text vorverarbeitet werden, um eine Indexstruktur aufzubauen bevor die Suchanfragen beantwortet werden. Diese Arbeit beschreibt und diskutiert praktisch relevante Indexstrukturen, Ähnlichkeitsmaÿe und Suchalgorithmen für APM. Wir schlagen einen neuen effizienten Suchalgorithmus für Suffixbäume im externen Speicher vor. Im Rahmen der Arbeit wurden mehrere Indexstrukturen und Algorithmen für APM implementiert und in einer Softwarebibliothek bereitgestellt; die Implementierungen sind effizient, stabil, generisch, getestet und online verfügbar. Wir haben reale Testinstanzen zusammengestellt sowie Textgeneratoren zur Erzeugung künstlicher Testinstanzen mittels stochastischer Prozesse implementiert; die Parameter der stochastischen Prozesse können erlernt werden. Alle Testinstanzen wurden hinsichtlich ihrer statistischen Eigenschaften analysiert. Dies ermöglicht eine experimentelle Untersuchung unter realen und/ oder sehr kontrollierten Bedingungen. In einer Reihe von Experimenten haben wir das Verhalten der einzelnen Indexstrukturen und Algorithmen in Abhängigkeit der Eigenschaften der Eingabe untersucht. Abschlieÿend geben wir Empfehlungen für eine geeignete, situationsbezogene Auswahl der Verfahren und der Parameterwerte. iii Abstract The aim of this thesis is to provide an overview of the practical performance of index structures and algorithms for approximate pattern matching (APM) depending on the properties of the input. APM is the problem of searching a pattern in a text or biological sequence tolerating some errors (e. g. spelling mistakes or genetic mutations). In the offline variant, the text can be preprocessed to build an index structure before answering the search queries. This thesis describes and discusses several practically relevant solutions for APM, including index structures, similarity measures, and search algorithms. We propose a new efficient algorithm for APM of multiple patterns using suffix forests in external memory. As part of this project, several index structures and algorithms were implemented in a software library; the implementations are efficient, stable, generic, tested, and available online. We assembled real world test instances and implemented text generators to produce synthetic texts using stochastic processes; the parameters of the processes can be learned. All test instances were analyzed regarding their statistical properties. This makes it possible to perform experiments under realistic and/or very controlled conditions. In a series of experiments, we investigated the behavior of the individual index structures and algorithms depending on the properties of the input. Then we change the perspective and give recommendations for choosing the respective best solution in different practical settings, and furthermore, we indicate appropriate parameter values. iv CONTENTS Contents Abstract iii Contents iv List of Figures v List of Tables v I Introduction1 1 Introduction 3 1.1 Motivation.........................................3 1.2 Basics and notation...................................5 1.3 Problem instances....................................7 1.3.1 Text........................................7 1.3.2 Dictionary.....................................7 1.3.3 Collection of texts................................7 1.3.4 Convertibility...................................7 1.4 Query types........................................9 1.4.1 Exact pattern matching.............................9 1.4.2 Approximate pattern matching......................... 10 1.4.3 Online vs. offline pattern matching....................... 11 1.5 Contributions and structure of this thesis....................... 11 1.6 Implementation environment.............................. 12 II Solutions 15 2 Index structures 17 2.1 Suffix arrays....................................... 19 2.1.1 Classical suffix array............................... 19 2.1.2 Suffix array with LCP table........................... 23 2.2 Tries and suffix trees................................... 24 2.2.1 Trie........................................ 24 2.2.2 Suffix tree..................................... 27 2.2.3 Space reduced suffix tree by Kurtz....................... 29 2.2.4 WOTD suffix tree................................. 31 2.2.5 STTD64 suffix tree................................ 36 2.2.6 Enhanced suffix array.............................. 39 2.2.7 Suffix forest in external memory........................ 42 2.2.8 Other suffix trees in external memory..................... 47 2.3 Compressed indexes.................................. 47 2.3.1 FM index..................................... 48 2.3.2 Compressed suffix array............................ 51 2.3.3 LZ index...................................... 53 2.3.4 Compressed suffix trees............................ 55 2.4 q-gram indexes...................................... 56 CONTENTS v 2.4.1 q-gram index................................... 56 2.4.2 q-sample index.................................. 60 2.4.3 q-gram index with two levels.......................... 61 2.4.4 Other q-gram-based indexes.......................... 65 2.5 Summary......................................... 66 3 Algorithms for approximate search 69 3.1 String measures..................................... 69 3.1.1 Hamming distance................................ 69 3.1.2 Edit distance................................... 70 3.1.3 Alignments and scoring matrices........................ 72 3.1.4 q-gram based measures............................ 73 3.1.5 Further measures................................ 74 3.1.6 Discussion.................................... 75 3.2 Online approximate search............................... 76 3.2.1 Dynamic Programming............................. 77 3.2.2 Bit-parallel algorithm of Myers......................... 78 3.2.3 Splitting the pattern (PEX)............................ 79 3.2.4 Backward automaton (ABNDM)........................ 81 3.2.5 Further algorithms................................ 82 3.3 Approximate search in index structures........................ 82 3.3.1 Neighborhood generation............................ 83 3.3.2 Backtracking in tries and suffix trees...................... 84 3.3.3 Partitioning into exact search.......................... 86 3.3.4 Intermediate partitioning............................. 89 3.3.5 Partitioning with hierarchical verification.................... 90 3.3.6 Approximate search in suffix forests...................... 92 3.3.7 Approximate search in compressed indexes................. 94 3.3.8 Specialized indexes for approximate string matching............ 95 3.3.9 Metric indexes.................................. 96 3.3.10 Top-K-queries.................................. 97 3.4 Summary......................................... 97 4 Software libraries 99 4.1 Index structures for approximate search........................ 99 4.2 Index structures for exact search............................ 100 4.3 Online approximate search............................... 101 4.4 String measures..................................... 101 4.5 Bioinformatics...................................... 102 4.6 Summary......................................... 102 III Evaluation 105 5 Test instances 107 5.1 Real world test instances................................ 107 5.1.1 Natural language texts.............................. 107 5.1.2 DNA sequences................................. 108 5.1.3 Protein sequences................................ 109 vi CONTENTS 5.2 Text analysis....................................... 109 5.2.1 Length....................................... 109 5.2.2 Alphabet..................................... 110 5.2.3 Distribution of q-grams............................. 110 5.2.4 Entropy...................................... 111 5.2.5 Compressibility.................................. 113 5.2.6 Repeat structure................................. 113 5.2.7 Other measures for long-range correlations.................. 114 5.3 Text generators...................................... 115 5.3.1 Bernoulli text generator............................. 116 5.3.2 Fibonacci string generator........................... 116 5.3.3 Markov process................................. 116 5.3.4 Approximate repeats