Изменения

Перейти к: навигация, поиск
Нет описания правки
Система непересекающихся множеств. Реализация с помощью леса корневых деревьев. (disjoint set union (DSU) или Union-Find)
 
==Реализация==
Каждое множество хранится в виде дерева. Элементы множества хранятся в узлах дерева. У каждого множества есть его представитель {{---}} один из элементов этого множества, он хранится в корне дерева. В каждом узле, кроме корня, хранится ссылка на "родителя".
===Сжатие пути===
Эта эвристика несколько модифицирует операцию ''get''. Операция get вызывается для элемента ''x'', проходит через несколько вершин и попадает в корень. Все пройденные в этом процессе вершины принадлежат тому же множеству, что и ''x''. Поэтому подвесим мы можем подвесить (изменим изменить ссылки) их эти вершины напрямую к корню дерева и, таким образом, уменьшим уменьшить его высоту. При нерекурсивной реализации операция ''get'' становится двухпроходной.
===Псевдокод===
14
правок

Навигация