Home
Scholarly Works
Fast and Practical Algorithms for Computing All...
Conference

Fast and Practical Algorithms for Computing All the Runs in a String

Abstract

A repetition in a string x is a substring $${ \bf{w}} = {\it \bf{u}}^e$$ of x, maximum e ≥ 2, where u is not itself a repetition in w. A run in x is a substring $${\it \bf{w}} = {\it \bf{u}}^e{\it \bf{u^{*}}}$$ of “maximal periodicity”, where $${\it \bf{u}}^e$$ is a repetition and u* a maximum-length possibly empty proper prefix of u. A run may encode as many as $$|{\it \bf{u}}|$$ repetitions. The maximum number of repetitions in any string $${\it \bf{x}} = {\it \bf{x}}[1..n]$$ is well known to be Θ(nlogn). In 2000 Kolpakov & Kucherov showed that the maximum number of runs in x is O(n); they also described a Θ(n)-time algorithm, based on Farach’s Θ(n)-time suffix tree construction algorithm (STCA), Θ(n)-time Lempel-Ziv factorization, and Main’s Θ(n)-time leftmost runs algorithm, to compute all the runs in x. Recently Abouelhoda et al. proposed a Θ(n)-time Lempel-Ziv factorization algorithm based on an “enhanced” suffix array — a suffix array together with other supporting data structures. In this paper we introduce a collection of fast space-efficient algorithms for computing all the runs in a string that appear in many circumstances to be superior to those previously proposed.

Authors

Chen G; Puglisi SJ; Smyth WF

Series

Lecture Notes in Computer Science

Volume

4580

Pagination

pp. 307-315

Publisher

Springer Nature

Publication Date

January 1, 2007

DOI

10.1007/978-3-540-73437-6_31

Conference proceedings

Lecture Notes in Computer Science

ISSN

0302-9743

Labels

View published work (Non-McMaster Users)

Contact the Experts team