Heavy-light декомпозиция — различия между версиями
(Новая страница: «'''Heavy-light декомпозиция''' {{---}} техника разбиения дерева на множество рёберно-непересекающ...») |
|||
Строка 11: | Строка 11: | ||
Теперь рассмотрим вершины, из которых не ведет ни одно тяжёлое ребро. Будем идти от них вверх до корня или пока не пройдем легкое ребро. Получится какое-то множество путей. Утверждается, что оно будет являться искомым. | Теперь рассмотрим вершины, из которых не ведет ни одно тяжёлое ребро. Будем идти от них вверх до корня или пока не пройдем легкое ребро. Получится какое-то множество путей. Утверждается, что оно будет являться искомым. | ||
==Доказательство корректности полученной декомпозиции== | ==Доказательство корректности полученной декомпозиции== | ||
− | + | {{Утверждение | |
+ | |statement = Полученная декомпозиция является искомой. | ||
+ | |proof = | ||
+ | Докажем по отдельности корректность декомпозиции. | ||
+ | |||
+ | 1. Все рёбра покрыты путями. | ||
+ | |||
+ | Есть два типа вершин: те, из которых ведёт ровно одно тяжёлое ребро и те, из которых не ведёт ни одного тяжёлого ребра. Для первого типа вершин мы дойдем до них некоторым путём через тяжёлое ребро снизу по определению выбора путей, а лёгкие рёбра ведущие из неё возьмем как последние рёбра в соответствующих путях. Для второго типа вершин мы по определению выбора путей возьмем их как начальные и пойдем вверх. | ||
+ | |||
+ | Таким образом все рёбра будут покрыты. | ||
+ | |||
+ | 2. Все пути не пересекаются. | ||
+ | |||
+ | Докажем от противного. Пусть мы взяли какое-то ребро дважды. Это значит, что из какой-то вершины вело более чем одно тяжёлое ребро, чего быть не могло. Получили противоречие. | ||
+ | |||
+ | 3. При прохождении пути от вершины <tex>v</tex> до вершины <tex>u</tex> произойдет смена не более, чем <tex>O(\log{n})</tex> путей. | ||
+ | |||
+ | Понятно. | ||
+ | }} | ||
+ | |||
==Примеры задач== | ==Примеры задач== | ||
Some examples | Some examples |
Версия 11:21, 4 июня 2015
Heavy-light декомпозиция — техника разбиения дерева на множество рёберно-непересекающихся путей так, чтобы при прохождении от одной вершины до другой произошла смена не более, чем
путей.Содержание
Описание задачи
Пусть у нас есть дерево
c вершинами и нам нужно проводить операции на нем на пути от вершины до вершины . Множество подобных запросов делаются за время при Heavy-light декомпозиции.Описание декомпозиции
Декомпозиция заключается в классификации всех рёбер дерева
в 2 вида: легкие и тяжёлые. Введём функцию , которая будет обозначать размер поддерева вершиныТяжёлые ребра — ребра
такие, что .Лёгкие ребра — соответственно все остальные.
Теперь рассмотрим вершины, из которых не ведет ни одно тяжёлое ребро. Будем идти от них вверх до корня или пока не пройдем легкое ребро. Получится какое-то множество путей. Утверждается, что оно будет являться искомым.
Доказательство корректности полученной декомпозиции
Утверждение: |
Полученная декомпозиция является искомой. |
Докажем по отдельности корректность декомпозиции. 1. Все рёбра покрыты путями. Есть два типа вершин: те, из которых ведёт ровно одно тяжёлое ребро и те, из которых не ведёт ни одного тяжёлого ребра. Для первого типа вершин мы дойдем до них некоторым путём через тяжёлое ребро снизу по определению выбора путей, а лёгкие рёбра ведущие из неё возьмем как последние рёбра в соответствующих путях. Для второго типа вершин мы по определению выбора путей возьмем их как начальные и пойдем вверх. Таким образом все рёбра будут покрыты. 2. Все пути не пересекаются. Докажем от противного. Пусть мы взяли какое-то ребро дважды. Это значит, что из какой-то вершины вело более чем одно тяжёлое ребро, чего быть не могло. Получили противоречие. 3. При прохождении пути от вершины Понятно. до вершины произойдет смена не более, чем путей. |
Примеры задач
Some examples