Дерево палиндромов — различия между версиями
(→Описание структуры) |
(→Реализация) |
||
| Строка 17: | Строка 17: | ||
== Реализация == | == Реализация == | ||
| − | + | Название структуры данных выбрано не совсем удачно, т.к. на самом деле она представляет из себя два дерева, при чем суффиксные ссылки могут вести как в то же, так и в другое дерево. Это сделано для удобства реализации. Также в целях экономии памяти мы не будем хранить | |
| + | |||
| + | Итак, у нас будет два корня. | ||
== Оценка сложности == | == Оценка сложности == | ||
Версия 14:02, 6 июня 2016
Дерево палиндромов — структура данных, позволяющая решить некоторые интересные задачи на палиндромы.
Эту структуру данных придумал Михаил Рубинчик и рассказал ее на летних сборах в Петрозаводске в 2014 году.
Содержание
Описание структуры
Дерево палиндромов состоит из вершин. Каждая вершина соответствует палиндрому. Через будем обозначать строку, которой соответствует вершина .
Ребра дерева палиндромов ориентированные и помечены символами. Ребро с символом из вершины в вершину означает, что
Также в дереве палиндромов присутствуют суффиксные ссылки. Суффиксная ссылка из вершины ведет в вершину , если является наибольшим суффиксом строки .
Построение
Реализация
Название структуры данных выбрано не совсем удачно, т.к. на самом деле она представляет из себя два дерева, при чем суффиксные ссылки могут вести как в то же, так и в другое дерево. Это сделано для удобства реализации. Также в целях экономии памяти мы не будем хранить
Итак, у нас будет два корня.