Succinct структуры, деревья и скобочные последовательности
Формально, succinct-структуры — это такие, которые используют дополнительной памяти для обеспечения операций над множеством из бит. Неформально — это несколько способов хранения дерева размера за бит и использования этих для навигации по деревьям, а иногда и для ответов на довольно сложные запросы.
Одно из подобных битовых представлений вы, с большой вероятностью, встречали: делаем обход в глубину, каждый раз, когда опускаемся, записываем «(», когда поднимаемся — «)». В результате мы должны получить правильную скобочную последовательность длины . В целом, вот эти бит, но что можно делать с таким представлением? Как оказывается, всё, что нам обычно нужно от дерева, можно получить с помощью небольших вспомогательных вычислений. А сами succinct-деревья очень даже практичны, особенно, когда число узлов переваливает за миллион.
