Изменения

Перейти к: навигация, поиск

Link-Cut Tree

1135 байт добавлено, 23:34, 8 июня 2014
Решение задачи в частном случае
==Решение задачи в частном случае==
Сначала научимся выполнять эти операции для частного случая, в котором все деревья - это пути. Для этого представим путь в виде splay-дерева, в которм ключи выбираются равными глубине вершины.[[Файл:Path_to_tree.png|250px|thumb|right|Пример построения дерева для пути]]
Тогда операциям link и cut будут соответсвовать merge и split.
сумма
Чтобы прибавить При прибавлении <tex>\alpha</tex> на пути от вершины <tex>v</tex> до корня, надо вызвать сначала вызвается <tex>splay(v)</tex>, после чего в левом поддереве находятся вершины, которые лежат на пути к корню. Затем надо прибавить <tex>\alpha</tex> к <tex>\Delta w(v)</tex> и ,чтобы сохранить веса вершин, которые находятся ниже в пути, вычесть <tex>\alpha</tex> от <tex>\Delta w(v.right)</tex>, чтобы сохранить веса вершин которые находятся ниже <tex>v</tex> в пути.[[Файл:Linkcut_weights.png|250px|thumb|right|Представление веса вершины]]
Для поиска минимума поступим аналогично. Определим <tex>\Delta min(v)</tex> таким образом, чтобы сохранялся следующий инвариант: <tex>min(v) = \Delta min(v) + w(v) </tex>. Пусть <tex>l</tex> и <tex>r</tex> дети <tex>v</tex>, тогда
Чтобы найти минимум на пути, надо вызвать <tex>splay(v)</tex>, а затем сравнить минимум <tex>v</tex> и минимум её левого ребенка.
 
 
 
 
 
 
 
 
 
==Link-cut tree==
Чтобы обобщить, разобъем дерево на множество непересекающихся путей. Каждое ребро обозначим либо solid-ребром, либо dashed-ребром. Все пути в представляемом дереве хранятся в виде splay-деревьев. Корень каждого splay-дерева хранит указатель на вершину-родителя.
[[Файл:Linkcut_paths.png|500px||center|Разбиение дерева на пути]]
 
Ключевая операция в link-cut-деревьях {{---}} <tex>expose(u)</tex>. После её выполнения <tex>u</tex> лежит на одном пути с корнем представляемого дерева и при этом становится корнем в splay-дереве получившегося пути.
[[Файл:Linkcut_expose.png|500px||center|Разбиение дерева на пути]]
234
правки

Навигация