Fast Searching in Packed Strings
Abstract
Given strings and the (exact) string matching problem is to find all positions of substrings in matching . The classical Knuth-Morris-Pratt algorithm [SIAM J. Comput., 1977] solves the string matching problem in linear time which is optimal if we can only read one character at the time. However, most strings are stored in a computer in a packed representation with several characters in a single word, giving us the opportunity to read multiple characters simultaneously. In this paper we study the worst-case complexity of string matching on strings given in packed representation. Let be the lengths and , respectively, and let denote the size of the alphabet. On a standard unit-cost word-RAM with logarithmic word size we present an algorithm using time Here is the number of occurrences of in . For this improves the bound of the Knuth-Morris-Pratt algorithm. Furthermore, if our algorithm is optimal since any algorithm must spend at least time to read the input and report all occurrences. The result is obtained by a novel automaton construction based on the Knuth-Morris-Pratt algorithm combined with a new compact representation of subautomata allowing an optimal tabulation-based simulation.
Cite
@article{arxiv.0907.3135,
title = {Fast Searching in Packed Strings},
author = {Philip Bille},
journal= {arXiv preprint arXiv:0907.3135},
year = {2010}
}
Comments
To appear in Journal of Discrete Algorithms. Special Issue on CPM 2009