Creative Commons Attribution 3.0 Unported license
In the streaming multi-pattern search problem, which is also known as the streaming dictionary matching problem, a set D={P_1,P_2, . . . ,P_d} of d patterns (strings over an alphabet Sigma), called the dictionary, is given to be preprocessed. Then, a text T arrives one character at a time and the goal is to report, before the next character arrives, the longest pattern in the dictionary that is a current suffix of T. We prove that for a constant size alphabet, there exists a randomized Monte-Carlo algorithm for the streaming dictionary matching problem that takes constant time per character and uses O(d log m) words of space, where m is the length of the longest pattern in the dictionary. In the case where the alphabet size is not constant, we introduce two new randomized Monte-Carlo algorithms with the following complexities:
* O(log log |Sigma|) time per character in the worst case and O(d log m) words of space.
* O(1/epsilon) time per character in the worst case and O(d |\Sigma|^epsilon log m/epsilon) words of space for any 0<epsilon<= 1.
These results improve upon the algorithm of [Clifford et al., ESA'15] which uses O(d log m) words of space and takes O(log log (m+d)) time per character.
@InProceedings{golan_et_al:LIPIcs.ESA.2017.41,
author = {Golan, Shay and Porat, Ely},
title = {{Real-Time Streaming Multi-Pattern Search for Constant Alphabet}},
booktitle = {25th Annual European Symposium on Algorithms (ESA 2017)},
pages = {41:1--41:15},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-049-1},
ISSN = {1868-8969},
year = {2017},
volume = {87},
editor = {Pruhs, Kirk and Sohler, Christian},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ESA.2017.41},
URN = {urn:nbn:de:0030-drops-78550},
doi = {10.4230/LIPIcs.ESA.2017.41},
annote = {Keywords: multi-pattern, dictionary, streaming pattern matching, fingerprints}
}