English

Sliding Window String Indexing in Streams

Data Structures and Algorithms 2023-01-24 v1

Abstract

Given a string SS over an alphabet Σ\Sigma, the 'string indexing problem' is to preprocess SS to subsequently support efficient pattern matching queries, i.e., given a pattern string PP report all the occurrences of PP in SS. In this paper we study the 'streaming sliding window string indexing problem'. Here the string SS arrives as a stream, one character at a time, and the goal is to maintain an index of the last ww characters, called the 'window', for a specified parameter ww. At any point in time a pattern matching query for a pattern PP may arrive, also streamed one character at a time, and all occurrences of PP within the current window must be returned. The streaming sliding window string indexing problem naturally captures scenarios where we want to index the most recent data (i.e. the window) of a stream while supporting efficient pattern matching. Our main result is a simple O(w)O(w) space data structure that uses O(logw)O(\log w) time with high probability to process each character from both the input string SS and the pattern string PP. Reporting each occurrence from PP uses additional constant time per reported occurrence. Compared to previous work in similar scenarios this result is the first to achieve an efficient worst-case time per character from the input stream. We also consider a delayed variant of the problem, where a query may be answered at any point within the next δ\delta characters that arrive from either stream. We present an O(w+δ)O(w + \delta) space data structure for this problem that improves the above time bounds to O(log(w/δ))O(\log(w/\delta)). In particular, for a delay of δ=ϵw\delta = \epsilon w we obtain an O(w)O(w) space data structure with constant time processing per character. The key idea to achieve our result is a novel and simple hierarchical structure of suffix trees of independent interest, inspired by the classic log-structured merge trees.

Keywords

Cite

@article{arxiv.2301.09477,
  title  = {Sliding Window String Indexing in Streams},
  author = {Philip Bille and Johannes Fischer and Inge Li Gørtz and Max Rishøj Pedersen and Tord Joakim Stordalen},
  journal= {arXiv preprint arXiv:2301.09477},
  year   = {2023}
}
R2 v1 2026-06-28T08:17:51.545Z