Анализ реализации с ранговой эвристикой — различия между версиями
(Новая страница: «Пусть <tex>R(v)</tex> - ранг вершины,<tex>P(v)</tex> - отец вершины,<tex>L(v) </tex> - первой {{Утверждение |statement…») |
|||
Строка 1: | Строка 1: | ||
− | Пусть <tex>R(v)</tex> - ранг вершины,<tex>P(v)</tex> - отец вершины,<tex>L(v) </tex> - | + | Пусть union(v1,v2) - процедура слития двух множеств содержащих v1,v2, а get(v) - поиск корня поддерева содержащего x. Рассмотрим n операций union и m операций get. Для удобства и без потери общности будем считать что у нас union принимает в качестве аргументов корни поддеревьев и (m>n), то есть (union(v1,v2) заменяем на union(get(v1),get(v2)). Тогда нам надо оценить стоимость операции get(v). |
+ | Обозначим <tex>R(v)</tex> - ранг вершины,<tex>P(v)</tex> - отец вершины,<tex>L(v) </tex> - самый первый отец вершины. | ||
{{Утверждение | {{Утверждение | ||
|statement= | |statement= | ||
− | + | <tex> R(P(v))>R(v) </tex> | |
|proof= | |proof= | ||
− | + | Из того как работает функция get следует: | |
+ | 1.<tex> R(L(v))>R(v) </tex> | ||
+ | 2. Между <tex> v </tex> и <tex> P(v) </tex> существует путь вида : <tex> v -> L(v) -> L(L(v)) ... ->P(v) </tex> | ||
+ | Записав неравенство из первого пункта вдоль пути из второго пункта следует что <tex> R(P(v))>R(v) </tex> | ||
}} | }} |
Версия 23:46, 7 марта 2011
Пусть union(v1,v2) - процедура слития двух множеств содержащих v1,v2, а get(v) - поиск корня поддерева содержащего x. Рассмотрим n операций union и m операций get. Для удобства и без потери общности будем считать что у нас union принимает в качестве аргументов корни поддеревьев и (m>n), то есть (union(v1,v2) заменяем на union(get(v1),get(v2)). Тогда нам надо оценить стоимость операции get(v). Обозначим
- ранг вершины, - отец вершины, - самый первый отец вершины.Утверждение: |
Из того как работает функция get следует: 1. Записав неравенство из первого пункта вдоль пути из второго пункта следует что 2. Между и существует путь вида : |