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