step20
|
Ukkonen's online algorithm for constructing suffix tree. More...
#include <suffix_tree.hpp>
Classes | |
struct | edge_type |
struct | slice_type |
Public Types | |
using | value_type = Char |
using | size_type = Size |
Public Member Functions | |
const Char * | data () const |
Size | size () const |
bool | leaf (Size node) const |
virtual | ~suffix_tree ()=default |
void | clear () noexcept |
void | push_back (Char ch) |
slice_type | label (Size node) const |
slice_type | labels (const edge_type &edge) const |
std::optional< edge_type > | find (std::ranges::forward_range auto &&str) const |
Find the minimum depth edge which labels start with substring. | |
generator< edge_type > | depth_first_search (edge_type start) const |
Ukkonen's online algorithm for constructing suffix tree.
Time complexity O(N*log(K)), space complexity O(N), where: N - text length, K - alphabet size.
Char | - type of the characters; |
Size | - to specify the maximum number / offset of characters; |
Map | - to associate characters with nodes. |
using step20::suffix_tree< Char, Size, Map >::size_type = Size |
using step20::suffix_tree< Char, Size, Map >::value_type = Char |
|
virtualdefault |
|
inlinenoexcept |
|
inline |
|
inline |
Space complexity asymptotically close to O(log(N)), O(N) at worst, where: N - text length.
|
inline |
Find the minimum depth edge which labels start with substring.
Time complexity O(M), where: M - substring length.
|
inline |
|
inline |
|
inline |
|
inline |
Basic exception guarantee. Content is released if an exception occurs.
|
inline |