A run in a string is a maximal periodic substring. For example, the string
bananatree contains the runs anana=(an)3/2
and ee=e2. There are less than n runs in any
length-n string, and computing all runs for a string over a linearly-sortable
alphabet takes 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 O(nα(n)) time algorithm
(where α(n) is the extremely slowly growing inverse Ackermann function).
We show how to achieve O(n) time by exploiting combinatorial
properties of the Lyndon array, thus proving Kosolobov's conjecture.Comment: This work has been submitted to ICALP 202