Fast Searching in Packed Strings

From MaRDI portal



Abstract: Given strings P and Q the (exact) string matching problem is to find all positions of substrings in Q matching P. 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 mleqn be the lengths P and Q, respectively, and let sigma denote the size of the alphabet. On a standard unit-cost word-RAM with logarithmic word size we present an algorithm using time Oleft(frac{n}{log_sigma n} + m + occ ight). Here occ is the number of occurrences of P in Q. For m=o(n) this improves the O(n) bound of the Knuth-Morris-Pratt algorithm. Furthermore, if m=O(n/logsigman) our algorithm is optimal since any algorithm must spend at least Omega(frac(n+m)logsigmalogn+occ)=Omega(fracnlogsigman+occ) 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.











This page was built for publication: Fast Searching in Packed Strings

Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q3637108)