Constructing Suffix Trees: Difference between revisions

From Algorithm Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 8: Line 8:
== Parameters ==  
== Parameters ==  


No parameters found.
$n$: length of string


== Table of Algorithms ==  
== Table of Algorithms ==  
Line 32: Line 32:
| [[Süleyman Cenk Sahinalp ; Uzi Vishkin (Constructing Suffix Trees Constructing Suffix Trees)|Süleyman Cenk Sahinalp ; Uzi Vishkin]] || 1994 || $O(log^{2}(n)$) || $O(n^{({1}+\eps)})$ for any fixed eps>{0} || Exact || Parallel || [https://link.springer.com/content/pdf/10.1007/3-540-57811-0_3.pdf Time & Space]
| [[Süleyman Cenk Sahinalp ; Uzi Vishkin (Constructing Suffix Trees Constructing Suffix Trees)|Süleyman Cenk Sahinalp ; Uzi Vishkin]] || 1994 || $O(log^{2}(n)$) || $O(n^{({1}+\eps)})$ for any fixed eps>{0} || Exact || Parallel || [https://link.springer.com/content/pdf/10.1007/3-540-57811-0_3.pdf Time & Space]
|-
|-
| [[Farach (Constructing Suffix Trees Constructing Suffix Trees)|Farach]] || 1997 || $O(log n)$ || $O(n)$ || Exact || Randomized || [https://www.cs.rutgers.edu/~farach/pubs/PRAMSuffixICALP.pdf Time & Space]
| [[Farach (Constructing Suffix Trees Constructing Suffix Trees)|Farach]] || 1997 || $O(\log n)$ || $O(n)$ || Exact || Randomized || [https://www.cs.rutgers.edu/~farach/pubs/PRAMSuffixICALP.pdf Time & Space]
|-
|-
| [[Rytter (Constructing Suffix Trees Constructing Suffix Trees)|Rytter]] || 2004 || $O(logn)$ || $O(n)$ || Exact || Parallel || [https://www.researchgate.net/publication/228945502_On_parallel_transformations_of_suffix_arrays_into_suffix_trees Time & Space]
| [[Rytter (Constructing Suffix Trees Constructing Suffix Trees)|Rytter]] || 2004 || $O(\log n)$ || $O(n)$ || Exact || Parallel || [https://www.researchgate.net/publication/228945502_On_parallel_transformations_of_suffix_arrays_into_suffix_trees Time & Space]
|-
|-
| [[McCreight (Constructing Suffix Trees Constructing Suffix Trees)|McCreight]] || 1976 || $O(n)$ || $O(n)$ || Exact || Deterministic || [http://libeccio.di.unisa.it/TdP/suffix.pdf Time]
| [[McCreight (Constructing Suffix Trees Constructing Suffix Trees)|McCreight]] || 1976 || $O(n)$ || $O(n)$ || Exact || Deterministic || [http://libeccio.di.unisa.it/TdP/suffix.pdf Time]
Line 43: Line 43:


[[File:Constructing Suffix Trees - Time.png|1000px]]
[[File:Constructing Suffix Trees - Time.png|1000px]]
== Space Complexity Graph ==
[[File:Constructing Suffix Trees - Space.png|1000px]]
== Time-Space Tradeoff ==
[[File:Constructing Suffix Trees - Pareto Frontier.png|1000px]]

Latest revision as of 09:10, 28 April 2023

Description

Let $T = t_1 t_2 \cdots t_n, be a string over an alphabet $\Sigma$. Each string $x$ such that $T = uxv$ for some (possibly empty) strings $u$ and $v$ is a substring of $T$, and each string $T_i = t_i \cdots t_n$, where $1 \leq i \leq n + 1$ is a suffix of $T$; in particular, $T_{n+1} = \epsilon$ is the empty suffix. The set of all suffixes of $T$ is denoted $\sigma(T)$. The suffix trie $STrie(T)$ of $T$ is a trie representing $\sigma(T)$.

Suffix tree $STree(T)$ of $T$ is a data structure that represents $STrie(T)$ in space linear in the length $|T|$ of $T$. This is achieved by representing only a subset $Q' \cup \{ \perp \}$ of the states of $STrie(T)$.

Parameters

$n$: length of string

Table of Algorithms

Name Year Time Space Approximation Factor Model Reference
Naive 1973 $O(n^{2})$ $O(n)$ Exact Deterministic
Weiner's algorithm 1973 $O(n)$ $O(n)$ Exact Deterministic Time
Pratt 1973 $O(n)$ Exact Deterministic
Ukkonen 1995 $O(n)$ $O(n)$ Exact Deterministic Time
Ukkonen and D. Wood 1993 $O(n^{2})$ $O(n^{2})$ Exact Deterministic Time & Space
Hariharan 1997 $O(log^{4}(n)$) $O(n)$ Exact Parallel Time & Space
Süleyman Cenk Sahinalp ; Uzi Vishkin 1994 $O(log^{2}(n)$) $O(n^{({1}+\eps)})$ for any fixed eps>{0} Exact Parallel Time & Space
Farach 1997 $O(\log n)$ $O(n)$ Exact Randomized Time & Space
Rytter 2004 $O(\log n)$ $O(n)$ Exact Parallel Time & Space
McCreight 1976 $O(n)$ $O(n)$ Exact Deterministic Time

Time Complexity Graph

Constructing Suffix Trees - Time.png