1,271 research outputs found
Computing All Distinct Squares in Linear Time for Integer Alphabets
Given a string on an integer alphabet, we present an algorithm that computes the set of all distinct squares belonging to this string in time linear to the string length. As an application, we show how to compute the tree topology of the minimal augmented suffix tree in linear time. Asides from that, we elaborate an algorithm computing the longest previous table in a succinct representation using compressed working space
On the Parikh-de-Bruijn grid
We introduce the Parikh-de-Bruijn grid, a graph whose vertices are
fixed-order Parikh vectors, and whose edges are given by a simple shift
operation. This graph gives structural insight into the nature of sets of
Parikh vectors as well as that of the Parikh set of a given string. We show its
utility by proving some results on Parikh-de-Bruijn strings, the abelian analog
of de-Bruijn sequences.Comment: 18 pages, 3 figures, 1 tabl
Fast Algorithm for Partial Covers in Words
A factor of a word is a cover of if every position in lies
within some occurrence of in . A word covered by thus
generalizes the idea of a repetition, that is, a word composed of exact
concatenations of . In this article we introduce a new notion of
-partial cover, which can be viewed as a relaxed variant of cover, that
is, a factor covering at least positions in . We develop a data
structure of size (where ) that can be constructed in time which we apply to compute all shortest -partial covers for a
given . We also employ it for an -time algorithm computing
a shortest -partial cover for each
Computing Runs on a Trie
A maximal repetition, or run, in a string, is a maximal periodic substring whose smallest period is at most half the length of the substring. In this paper, we consider runs that correspond to a path on a trie, or in other words, on a rooted edge-labeled tree where the endpoints of the path must be a descendant/ancestor of the other. For a trie with n edges, we show that the number of runs is less than n. We also show an O(n sqrt{log n}log log n) time and O(n) space algorithm for counting and finding the shallower endpoint of all runs. We further show an O(n log n) time and O(n) space algorithm for finding both endpoints of all runs. We also discuss how to improve the running time even more
- …