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