Дерево палиндромов
Версия от 11:37, 6 июня 2016; BioRyajenka (обсуждение | вклад)
Дерево палиндромов — структура данных, позволяющая решить некоторые интересные задачи на палиндромы.
Эту структуру данных придумал Михаил Рубинчик и рассказал ее на летних сборах в Петрозаводске в 2014 году.
Содержание
Описание структуры
Дерево палиндромов состоит из вершин. Каждая вершина соответствует палиндрому. Через
будем обозначать строку, которой соответствует вершина .Ребра дерева палиндромов ориентированные и помечены символами. Ребро с символом В данном примере мы получаем палиндром aba добавлением символа a к обоим сторонам палиндрома b
из вершины в вершину означает, чтоТакже в дереве палиндромов присутствуют суффиксные ссылки. Суффиксная ссылка из вершины
ведет в вершину , если является наибольшим суффиксом строки .Построение
Реализация
//Название структуры данных, выбрано не совсем удачно, т.к. на самом деле в структуре хранится два