Article ID | Journal | Published Year | Pages | File Type |
---|---|---|---|---|
436592 | Theoretical Computer Science | 2014 | 13 Pages |
A breakthrough in the field of text algorithms was the discovery of the fact that the maximal number of runs in a word of length n is O(n)O(n) and that they can all be computed in O(n)O(n) time. We study some applications of this result. New simpler O(n)O(n) time algorithms are presented for classical textual problems: computing all distinct k-th word powers for a given k , in particular squares for k=2k=2, and finding all local periods in a given word of length n. Additionally, we present an efficient algorithm for testing primitivity of factors of a word and computing their primitive roots. Applications of runs, despite their importance, are underrepresented in existing literature (approximately one page in the paper of Kolpakov and Kucherov, 1999 [25] and [26]). In this paper we attempt to fill in this gap. We use Lyndon words and introduce the Lyndon structure of runs as a useful tool when computing powers. In problems related to periods we use some versions of the Manhattan skyline problem.