Алгоритм Укконена построения суф. дерева за O(N).
- Online-овость (этот алгоритм лучше уже тем, что можно Online наращивать строку)
- Добавление одного символа. Листья растут сами, без нашей помощи.
- Доказательство того, что более короткий суффикс станет листом не ранее более длинного.
- Суф. ссылки. Подсчет суфф. ссылок.
- Собственно алгоритм.
- Доказательство времени работы O(n).
Суф. массив. Часть 2
- Сортировка суффиксов и сортировка циклических сдвигов (как они друг к другу сводятся)
- Сортировка подсчетом
- Цифровая сортировка
- Сортировка строк за O(N2), построение суф. массива за O(N2).
- Построение LCP за O(NlogN) (хэши с бинпоиском)
- LCP[i,i+1] за O(N) (алгоритм Касаи)
Преобразования суф. структур
- Суф. массив + LCP → суф. дерево за O(n)
- Суф. дерево → суф. массив + LCP за O(n)
Решение задач суф. массивом и суф. деревом
- refrain (максимизировать величину "длина * число вхождений")
- Найти количество подстрок
- Найти подстроку макс длины, встречающуюся дважды, вхождения могут перекрываться
- Найти подстроку макс длины, встречающуюся дважды, вхождения не могут перекрываться