Изменения

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

СНМ с операцией удаления за О(1)

13 байт убрано, 20:21, 31 мая 2014
Введение
* <tex>makeset(x)</tex> - создать новое множество из 1 элемента <tex>x </tex>. Время: <tex>O(1)</tex>
* <tex>union(A, B)</tex> - объединить множества A и B в одно. Время: <tex> O(1) </tex>, без учета времени на операцию <tex>find()</tex>, которая используется, если множества A и B заданы своими произвольными представителями.
* <tex>find(x)</tex> - найти множество, в котором содержится элемент <tex> x </tex>. Время; <tex>O(log n)</tex> в худшем случае, <tex>O(\alpha(n))</tex> - в среднем (<tex>\alpha(n)</tex> - обратная функция Аккермана), где n - размер множества.
* <tex>delete(x)</tex> - удалить элемент x из содержащего его множества. Время: O(1)
* <tex>h(v)</tex> - высота вершины <tex>v</tex>: если <tex>v</tex> является листом, то <tex>h(v) = 0</tex>, иначе <tex>h(v) = max { h(w) | w - ребенок v } </tex>.
* <tex>p(v)</tex> - родитель вершины <tex>v</tex>. Если <tex>v</tex> - корень, то считаем, что <tex>p(v) = v</tex>
* <tex>rank(v)</tex> - ранг вершины, некоторая верхняя оценка на ее высоту.  Как и в [[СНМ_(реализация_с_помощью_леса_корневых_деревьев)|обычной реализации]], выполнено следующее: '''ранг родителя вершин <tex>rank(v) < rank(p(v))</tex>
== Реализация ==
116
правок

Навигация