Space-Efficient k-Mismatch Text Indexes

Abstract

A central task in string processing is text indexing, where the goal is to preprocess a text (a string of length n) into an efficient index (a data structure) supporting queries about the text. Cole, Gottlieb, and Lewenstein (STOC 2004) proposed k-errata trees, a family of text indexes supporting approximate pattern matching queries of several types. In particular, k-errata trees yield an elegant solution to k-mismatch queries, where we are to report all substrings of the text with Hamming distance at most k to the query pattern. The resulting k-mismatch index uses O(nk n) space and answers a query for a length-m pattern in O(k n n + m + occ) time, where occ is the number of approximate occurrences. In retrospect, k-errata trees appear very well optimized: even though a large body of work has adapted k-errata trees to various settings throughout the past two decades, the original time-space trade-off for k-mismatch indexing has not been improved in the general case. We present the first such improvement, a k-mismatch index with O(nk-1 n) space and the same query time as k-errata trees. Previously, due to a result of Chan, Lam, Sung, Tam, and Wong (Algorithmica 2010), such an O(nk-1 n)-size index has been known only for texts over alphabets of constant size. In this setting, however, we obtain an even smaller k-mismatch index of size only O(n k-2++2k+2-(k 2) n)⊂eq O(nk-1.5+ n) for 2 k O(1) and any constant >0. Along the way, we also develop improved indexes for short patterns, offering better trade-offs in this practically relevant special case.

0

Turn this paper into a full lesson

ArcXiv compiles a staged curriculum from this paper: 8-12 lessons across beginner → advanced, synthesised section guides, visuals, flashcards, a quiz, exercises, and on-demand deep dives per section. Grounded in the abstract, never invented.

Discussion (0)

Sign in to join the discussion.

Loading comments…