Для данной строки S
длины n
—
Оптимальный алгоритм поиска всех уникальных подстрок S
не может быть меньше чем O(n^2)
, Итак, лучший алгоритм даст нам сложность O(n^2)
, Согласно тому, что я прочитал, это может быть реализовано путем создания дерева суффиксов для S
,
Дерево суффиксов для S может быть создано в O(n)
время. Теперь мой вопрос-
Как мы можем использовать дерево суффиксов для S, чтобы получить все уникальные подстроки S
в O(n^2)
?
Попробуйте прочитать о массивах суффиксов: http://en.wikipedia.org/wiki/Suffix_array
Этот метод быстрее, чем дерево суффиксов для получения подстрок в строке.
Это может быть сделано оптимально с помощью попыток. Добавьте строки в три и переберите их от корня к узлу. Каждый путь от корня к узлу будет обозначать суффиксы строки. Возьмите все префиксы этих суффиксов. Это уникальные подстроки.