Jump to content

Ukkonen's algorithm

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Anurag.x.singh (talk | contribs) at 08:45, 9 November 2014 (I added my Ukkonen's algorithm implementation here under external link). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computer science, Ukkonen's algorithm is a linear-time, online algorithm for constructing suffix trees, proposed by Esko Ukkonen in 1995.[1]

The algorithm begins with an implicit suffix tree containing the first character of the string. Then it steps through the string adding successive characters until the tree is complete. This order addition of characters gives Ukkonen's algorithm its "on-line" property. Earlier algorithms proceeded backward from the last character to the first one, let it be from the longest to the shortest suffix [2] or from the shortest to the longest suffix.[3] The naive implementation for generating a suffix tree requires O(n2) or even O(n3) time, where n is the length of the string. By exploiting a number of algorithmic techniques, Ukkonen reduced this to O(n) (linear) time, for constant-size alphabets, and O(n log n) in general.

References

  1. ^ Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1007/BF01206331, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with |doi=10.1007/BF01206331 instead.
  2. ^ Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1145/321941.321946, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with |doi=10.1145/321941.321946 instead.
  3. ^ Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1109/SWAT.1973.13, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with |doi=10.1109/SWAT.1973.13 instead.