Как стать автором
Обновить
12
0
Аникушин Дмитрий @DeMoN_MIPT

Пользователь

Отправить сообщение

Построение суффиксного дерева: алгоритм Укконена

Время на прочтение8 мин
Количество просмотров37K
По просьбам трудящихся выкладываю описание и доказательство алгоритма Укконена.

Описание задачи


Требуется построить суффиксное дерево для данной строки за разумное время. Суффиксное дерево — это бор, состоящий из всех суффиксов данной строки. Если в кратце, бор — подвешенное дерево с символами на ребрах, реализация структуры данных для хранения строк. Строки получаются прохождением из корня по рёбрам, записывая соответствующие им символы, до терминальной вершины.

Бор для произвольного набора строк строится за O (суммы длин этих строк). Очевидно, что сумма длин всех суффиксов строки пропорциональна квадрату длины самой строки. Таким образом, построение суффиксного дерева тривиальным алгоритмом работает за O(N2). И тут возникает резонный вопрос, можно ли построить суффиксное дерево быстрее?

На самом деле можно.
Реализация и доказательство алгоритма под катом
Всего голосов 39: ↑38 и ↓1+37
Комментарии25

Информация

В рейтинге
Не участвует
Откуда
Москва и Московская обл., Россия
Работает в
Зарегистрирован
Активность