Изменения

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

Splay-дерево

168 байт добавлено, 19:48, 8 апреля 2012
Нет описания правки
==Определение=='''Сплей-дерево (Splay-tree)''' {{---}} двоичное дерево поиска, поддерживающее свойство сбалансированностипозволяющее находить быстрее те данные, которые использовались недавно. Относится к разряду сливаемых деревьев. Сплей-дерево было придумано Робертом Тарьяном и Даниелем Слейтером в 1983 году. Основной идеей для сохранение баланса работы дерева является перетаскивание найденной вершины в корень почти после каждой операции поиска. Для <tex> p(x) </tex> - предка вершины <tex> x </tex> эвристика "Move to Root" совершает повороты вокруг ребра <tex> \langle x, p(x) \rangle </tex>, пока <tex> x </tex> не окажется корнем дерева.Данный поворот аналогичен zig - повороту.
==Операции со splay-деревом==
===Move to Root===
Пусть <tex> p(x) </tex> - предок вершины <tex> x </tex>.
Эвристика "Move to Root" совершает повороты вокруг ребра <tex> \langle x, p(x) \rangle </tex>, пока <tex> x </tex> не окажется корнем дерева.
Данный поворот аналогичен zig - повороту.
===Splay===
"Splay" так же как и "Move to Root" перетаскивает вершину в корень дерева, но при этом она использует другую последовательность поворотов. Эти повороты можно совершать в прямом и обратном порядке в зависимости от задачи, что иллюстрируют рисунки. Пока <tex> x </tex> не является корнем дерева выполняется следующее :
Данная операция занимает <tex> O(d) </tex> времени, где <tex> d </tex> - длина пути от <tex> x </tex> до корня. В результате этой операции <tex> x </tex> становится корнем дерева, а расстояние до корня от каждой вершины сокращается примерно пополам, что связано с разделением случаев "zig-zig" и "zig-zag".
 
===Find===
эта операция выполняется как для обычного бинарного дерева, только после нее запускается операция Splay.
===Merge===
94
правки

Навигация