From 1830a4f13b7669a0287ec014856ed53ac79db139 Mon Sep 17 00:00:00 2001 From: Ragnar Groot Koerkamp Date: Sat, 5 Oct 2024 15:01:35 +0200 Subject: [PATCH] suffix array searching lemma --- .../lcp-cases.png | Bin 0 -> 154808 bytes .../suffix-array-searching-lemma.org | 199 ++++++++++++++++++ references.bib | 15 ++ 3 files changed, 214 insertions(+) create mode 100644 posts/suffix-array-searching-lemma/lcp-cases.png create mode 100644 posts/suffix-array-searching-lemma/suffix-array-searching-lemma.org diff --git a/posts/suffix-array-searching-lemma/lcp-cases.png b/posts/suffix-array-searching-lemma/lcp-cases.png new file mode 100644 index 0000000000000000000000000000000000000000..dca4d74fa5e2c01ddaba42127328d02523e53160 GIT binary patch literal 154808 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 +#+toc: headlines 3 +#+date: <2024-10-05 Sat> + + +We'll prove that using the "faster" binary search algorithm (see [[#faster-search]]) that tracks the LCP +with the left and right boundary of the remaining search interval has amortized +runtime + +$$ +O\Big(\lg_2(n) + |P| + \lg_2(Occ(P))\cdot |P|\Big), +$$ +when $P$ is a randomly sampled fixed-length pattern from the text and $Occ(P)$ counts the number of occurrences of $P$ in the text. + +Thus, when searching for patterns that follow the same distribution +as the input text, the performance of the faster search method is nearly as good as the +LCP-based $O(|P| + \lg_2 n)$ method when patterns have only few matches. + +First some background. + +* Suffix arrays + +Suffix arrays were introduced by [cite/t:@suffix-arrays-manber-myers-90]. +A suffix array $S$ of a text $T$ of length $n = |T|$ is a permutation of +$[n]=\{0, \dots, n-1\}$ such that $T[S[i]..] < T[S[i+1]..]$, that is, the suffixes +are sorted by the order $S$. + +Given the suffix array, one can search for a pattern $P$ of length $|P|$, +which returns the position $p$ of the /first/ suffix $T[S[p]..]\geq P$. + +In general, we are usually interested in the entire /interval/ of suffixes +$S[l..r]$ that start with the given pattern. This can simply be done by using +two independent searches, as so does not affect the theoretical complexity. But +of course, in practice it's more efficient to find both boundaries in one go. + +* Searching methods + +[cite/author/bc:@suffix-arrays-manber-myers-90] introduce three methods to +search the suffix array, all based on binary search. + +** Naive $O(|P|\cdot \lg_2 n)$ search + +The naive method works using a simple binary search on the suffix array. + +#+caption: Python code for searching a suffix array the naive way. +#+begin_src py +def search(T, S, P): + n = len(T) + l, r = 0, n + while l < r: + m = (l+r)//2 + M = T[S[m]:] + if M < P: + l = m + 1 + else: + r = m + return S[l] +#+end_src + +The binary search needs at most $\lceil \lg_2(n+1)\rceil$ iterations, and in +each iteration the slowest operation is the comparison of the suffix $M=T[S[m]..]$ +with the pattern =P=, which in the worst case compares $|P|$ characters in $O(|P|)$ time. +Thus, the overall runtime is $O(|P| \cdot \lg_2 n)$. + +** Faster $O(|P|\cdot \lg_2 n)$ search +:PROPERTIES: +:CUSTOM_ID: faster-search +:END: +One of the bad cases of the naive method above is that in each iteration, the +entire pattern $P$ is matched. As the remaining search interval $[l, r]$ +narrows, the remaining suffixes get more and more similar to $P$. In fact, once +we know that the first $c$ characters of $L=S[T[l]..]$ match the first $c$ +characters of $R=S[T[r]..]$, every remaining string in the interval also starts +with these same first $c$ characters, and so does $P$. +Thus, in the comparison of $M=T[S[m]..]$ and $P$, we can skip the first $c$ characters. + +In practice, we implement this by keeping the lengths $c_l$ and $c_r$ longest common prefix of $P$ with +$L$ and $R$, and skipping the first $\min(c_l, c_r)$ character comparisons. + +#+caption: Python code for searching a suffix array the faster way. +#+begin_src py +def search(T, S, P): + n = len(T) + l, r = 0, n + c_l, c_r = 0, 0 + while l < r: + m = (l+r)//2 + M = T[S[m]:] + c = min(c_l, c_r) + # The lcp and the comparison can be computed at the same time. + c_m = c + lcp(M[c:], P[c:]) + if M[c:] < P[c:]: + l = m + 1 + c_l = c_m + else: + r = m + c_r = c_m + return S[l] +#+end_src + +In the worst case, this method is still $O(|P| \cdot \lg_2 n)$, but it's widely +known that this method performs very well in practice, and can even be faster than +the $O(|P|+\lg_2 n)$ method below. + +** LCP-based $O(|P| + \lg_2 n)$ search + +Now suppose that for every step in the binary search, we have already precomputed values +$x_l=LCP(L, M)$ and $x_r=LCP(M, R)$. +(This is possible in $O(n)$ time and space using a bottom-up approach on the +implicit binary search tree that contains around $n$ nodes.) + +Now assume that in a step of the binary search, we have $l\geq r$. +Again following the original paper, there are three cases, as they nicely +illustrated. + +#+caption: Three cases of the binary search, taken from [cite/t:@suffix-arrays-manber-myers-90]. +#+attr_html: :class inset large +[[file:lcp-cases.png]] + +The black bars indicate the length of the LCP of each suffix with $P$, and $l$ +and $r$ are the length of the LCP of the left and right of the interval with +$P$. Assume that $l\geq r$ (the symmetric case is equivalent). +The grey area is the length of the LCP of $L=T[S[l]..]$ and $M=T[S[m]..]$. + +Let $x = LCP(L, M)$. The three cases are, in order: +- $x > l$ :: In this case, we know that $P$ is larger than $L$ in the + $l+1$'st character, and since $x>l$, $L$ and $M$ are equal in their $l+1$'st + character, so also $P$ is larger than $M$ in its $l+1$'st character and + $P>M$, so we branch right. +- $x=l$ :: In this case, we know that $P$ shares the first $x$ characters with + $L$ and hence also with $M$. We now compare $P$ with $M$ starting at the + $l+1$'st character. Let's say that $h$ equal characters are compared. + If we branch left, the new value of $r$ is $l+h$, and if we branch right, the + new value of $l$ is $l+h$. Thus, $\max(l, r)$ always increases from $l$ to $l+h$. +- $xn-m_P$, the pattern is simply a bit shorter than $m_P$. In this case, +we assume that $P$ includes a sentinel character at the end, and thus will have +exactly $1$ occurrence in the text. + +Consider a step in the binary search, and assume again that $l \geq r$. We start +comparing $P$ and $M$ at their $\min(l,r)+1=r+1$'st character, and let $y=LCP(P, +M)$ be the computed length of the LCP of $M$ and $P$, which requires $h=y-r$ +comparisons of equal characters. We also still define $x=LCP(L, M)$ +although we do not explicitly compute this. There are a few cases: + +- $y < m_P$ :: + When $M$ does not start with $P$, we know that the pattern is larger or + smaller than $M$ with equal probability, since the pattern was randomly + sampled from the suffix array and thus each of the $m-l$ position left of $M$ + and each of the $r-m$ positions right of $M$ has an equal probability of corresponding + to the chosen pattern. (In the case where $r-l$ is odd, we can randomly choose + between $m=\lfloor \frac{l+r}2\lfloor$ and $m=\lceil \frac{l+r}2\lceil$ to + truly equalize the probabilities.) + + Thus, with probability $1/2$, the minimum of $l$ and $r$ increases to $y$, and + so in expectation, the sum of $l$ and $r$ increases by at least $(y-r)/2 = + h/2$. Since the sum of $l$ and $r$ is at most $2|P|$, the expected total number of + comparisons is at most $4|P|$. + +- $y = m_P$ :: + When $M$ starts with $P$, we trivially do at most $|P|$ comparisons. + When there are $Occ(P)$ occurrences of the pattern $P$, this situation + can happen at most $\lg_2 Occ(P)$ times, and so this incurs a total cost + bounded by $O(|P| \cdot \lg_2 Occ(P))$. + +We conclude that when we fix a length $m_P$ and uniformly random choose a pattern $P$ length $m_P$ random from the input +text, the amortized cost of a search is +$$ +O\Big(\lg_2(n) + m_P + \lg_2(Occ(P))\cdot m_P\Big). +$$ + + +#+print_bibliography: diff --git a/references.bib b/references.bib index 5528e73..3fdfe61 100644 --- a/references.bib +++ b/references.bib @@ -3856,3 +3856,18 @@ @Article{suffix-arrays-with-a-twist url = {http://dx.doi.org/10.31577/cai_2019_3_555}, publisher = {Central Library of the Slovak Academy of Sciences} } + +@Article{suffix-arrays-manber-myers-90, + author = {Manber, Udi and Myers, Gene}, + title = {Suffix Arrays: A New Method for On-Line String Searches}, + journal = {SIAM Journal on Computing}, + year = 1993, + volume = 22, + number = 5, + month = oct, + pages = {935–948}, + issn = {1095-7111}, + doi = {10.1137/0222058}, + url = {http://dx.doi.org/10.1137/0222058}, + publisher = {Society for Industrial & Applied Mathematics (SIAM)} +}