102
правки
Изменения
Нет описания правки
'''Heavy-light декомпозиция''' {{---}} техника разбиения дерева на множество рёберно-непересекающихся путей так, чтобы при прохождении от одной вершины до другой произошла смена не более, чем <tex>Oдля решения задач о запросах на пути в дереве (\log{n}в том числе с модификациями)</tex> путей.
==Описание задачи==
{{Задача|definition=Пусть у нас есть дерево <tex>T</tex> c <tex>n</tex> вершинами и нам нужно проводить операции на нем на пути от вершины <tex>v</tex> до вершины <tex>u</tex>. (Например сумма на пути с модификацией прибавления на пути)}}Множество подобных запросов делаются за время <tex>O(\log^p2{n})</tex> с помощью Heavy-light декомпозиции.
==Описание декомпозиции==
[[Файл:Heavylight.png|thumb|right|300x150px|Пример разбиения на лёгкие/тяжёлые рёбра.]]
Декомпозиция заключается в классификации всех рёбер дерева <tex>T</tex> в 2 вида: легкие и тяжёлые. Введём функцию <tex>s(v)</tex>, которая будет обозначать размер поддерева вершины <tex>v</tex>.
'''Тяжёлые ребра''' {{---}} ребра <tex>(u, v)</tex> такие, что <tex>s(v) \geqgeqslant</tex> <tex dpi="150">\frac{s(u)}{2}</tex>.
'''Лёгкие ребра''' {{---}} соответственно все остальные.
Теперь рассмотрим вершины, из которых не ведет ни одно тяжёлое ребро. Будем идти от них вверх до корня или пока не пройдем легкое ребро. Получится какое-то множество путей. Утверждается, что оно будет являться искомым.
Существует вариант Heavy-light декомпозиции на вершинно-непересекающихся путях. Чтобы получить такой путь нужно всего-лишь выкинуть последнее ребро из всех путей в рёберно-непересекающейся декомпозиции.
==Доказательство корректности полученной декомпозиции==
{{Утверждение
|proof =
Докажем по отдельности корректность декомпозиции.
}}
'''return''' res
</code>
== См.также ==
*[[Метод двоичного подъема]]
*[[Дерево отрезков. Построение]]
*[[Link-Cut Tree]]
==СсылкиИсточники информации==
*[http://en.wikipedia.org/wiki/Heavy_path_decomposition Wikipedia — Heavy path decomposition]
*[http://e-maxx.ru/algo/heavy_light MAXimal :: algo :: Heavy-light декомпозиция]
[[Категория: Алгоритмы и структуры данных]]
[[Категория: Задача о наименьшем общем предке]]
[[Категория: Структуры данных]]