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 декомпозиция — техника разбиения дерева на множество рёберно-непересекающихся путей так, чтобы при прохождении от одной вершины до другой произошла смена не более, чем [math]O(\log{n})[/math] путей.

Описание задачи

Пусть у нас есть дерево [math]T[/math] c [math]n[/math] вершинами и нам нужно проводить операции на нем на пути от вершины [math]v[/math] до вершины [math]u[/math]. Множество подобных запросов делаются за время [math]O(\log{n})[/math] при Heavy-light декомпозиции.

Описание декомпозиции

Декомпозиция заключается в классификации всех рёбер дерева [math]T[/math] в 2 вида: легкие и тяжёлые. Введём функцию [math]s(v)[/math], которая будет обозначать размер поддерева вершины [math]v[/math]

Тяжёлые ребра — ребра [math](u, v)[/math] такие, что [math]s(v) \geq s(u) / 2[/math].

Лёгкие ребра — соответственно все остальные.

Теперь рассмотрим вершины, из которых не ведет ни одно тяжёлое ребро. Будем идти от них вверх до корня или пока не пройдем легкое ребро. Получится какое-то множество путей. Утверждается, что оно будет являться искомым.

Доказательство корректности полученной декомпозиции

Утверждение:
Полученная декомпозиция является искомой.
[math]\triangleright[/math]

Докажем по отдельности корректность декомпозиции.

1. Все рёбра покрыты путями.

Есть два типа вершин: те, из которых ведёт ровно одно тяжёлое ребро и те, из которых не ведёт ни одного тяжёлого ребра. Для первого типа вершин мы дойдем до них некоторым путём через тяжёлое ребро снизу по определению выбора путей, а лёгкие рёбра ведущие из неё возьмем как последние рёбра в соответствующих путях. Для второго типа вершин мы по определению выбора путей возьмем их как начальные и пойдем вверх.

Таким образом все рёбра будут покрыты.

2. Все пути не пересекаются.

Докажем от противного. Пусть мы взяли какое-то ребро дважды. Это значит, что из какой-то вершины вело более чем одно тяжёлое ребро, чего быть не могло. Получили противоречие.

3. При прохождении пути от вершины [math]v[/math] до вершины [math]u[/math] произойдет смена не более, чем [math]O(\log{n})[/math] путей.

Понятно.
[math]\triangleleft[/math]

Примеры задач

Some examples