Dynamic Multiple Pattern Matching
This work was also published as a Rice University thesis/dissertation: http://hdl.handle.net/1911/16740
Pattern matching algorithms are among the most important and practical contributions of theoretical computer science. Pattern matching is used in a wide variety of applications such as text editing, information retrieval, DNA sequencing, and computer vision. Several combinatorial problems arise in pattern matching such as matching in the presence of local errors, scaling, rotation, compression, and multiple patterns. A common feature shared by many solutions to these problems is the notion of preprocessing the patterns and/or texts prior to the actual matching. We study the problem of pattern matching with multiple patterns. The set of patterns is called a "dictionary." Furthermore, the dictionary can be dynamic in the sense that it can change overtime by insertion or deletion of individual patterns. We need to preprocess the dictionary so as to provide efficient searching as well as efficient updates. We first present a solution to the one dimensional version of the problem where the patterns are strings. A salient feature of our solution is a DFA-based searching mechanism similar to the Knuth-Morris-Pratt algorithm. We then use this solution to solve the two dimensional version of the problem where the patterns are restricted to have square shapes. Finally, we solve the general case, where the patterns can have any rectangular shape, by reducing this problem to a range searching problem in computational geometry.