A run in a string is a maximal periodic substring. For example, the string $\texttt{bananatree}$ contains the runs $\texttt{anana} = (\texttt{an})^{3/2}$ and $\texttt{ee} = \texttt{e}^2$. There are less than $n$ runs in any length-$n$ string, and computing all runs for a string over a linearly-sortable alphabet takes $\mathcal{O}(n)$ time (Bannai et al., SODA 2015). Kosolobov conjectured that there also exists a linear time runs algorithm for general ordered alphabets (Inf. Process. Lett. 2016). The conjecture was almost proven by Crochemore et al., who presented an $\mathcal{O}(n\alpha(n))$ time algorithm (where $\alpha(n)$ is the extremely slowly growing inverse Ackermann function). We show how to achieve $\mathcal{O}(n)$ time by exploiting combinatorial properties of the Lyndon array, thus proving Kosolobov's conjecture.
翻译:字符串中的运行是一个最大周期子字符串。 例如, 字符串$\ textt{ bananatree} $ 包含运行 $\ textt{ anna} = (\ textt{ an})\\\ 3/2} $ 和 $\ textt{ ee} =\ textt{ { e\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2 美元。 在任何长度- 美元字符串中运行的值小于 $n untt{ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 字串中, 计算所有字符串的运行在线性字母的字符串上运行 $\ mathcall{ O} (n) (n) 时间算算算算( $\ 极慢于 Ackermannmann 函数 。 我们展示如何实现$\\ amacoldoalO transal_ train 。
Alphabet is mostly a collection of companies. This newer Google is a bit slimmed down, with the companies that are pretty far afield of our main internet products contained in Alphabet instead.https://abc.xyz/