Анализ реализации с ранговой эвристикой — различия между версиями
Строка 37: | Строка 37: | ||
{{Теорема | {{Теорема | ||
|statement= | |statement= | ||
− | Амортизационная стоимость <tex> get( | + | Амортизационная стоимость <tex> get = O(log^{*}(n)) </tex> |
|proof= | |proof= | ||
Рассмотрим некоторое <tex> x </tex> . | Рассмотрим некоторое <tex> x </tex> . | ||
Строка 48: | Строка 48: | ||
3. Все остальные. | 3. Все остальные. | ||
− | + | Обозначим эти классы <tex> T1,T2,T3 </tex> | |
− | Амортизированная стоимость<tex> S =\ | + | Амортизированная стоимость<tex> S= {\sum_{get} \limits} ({\sum_{u \in get,u \in T1} \limits 1} + {\sum_{u \in get,u \in T2} \limits 1} + {\sum_{u \in get,u \in T3} \limits 1} ) / m = O(1) + {\sum_{get} \limits}{\sum_{u \in get,u \in T2} \limits}/m+ {\sum_{get} \limits}{\sum_{u \in get,u \in T3} \limits}/m </tex> , где <tex> {u \in get } </tex> означает что ребро <tex> u </tex> было пройдено во время выполнения текущего <tex> get </tex>. |
}} | }} |
Версия 00:53, 8 марта 2011
Пусть
- процедура слития двух множеств содержащих , , а - поиск корня поддерева содержащего . Рассмотрим операций и операций . Для удобства и без потери общности будем считать принимает в качестве аргументов корни поддеревьев и , то есть заменяем на .Тогда нам надо оценить стоимость операции
. Обозначим - ранг вершины, - отец вершины, - самый первый отец вершины, - количество вершин в поддерева корнем которого являетсяУтверждение: |
Из того как работает функция get следует: 1. 2. Между Записав неравенство из первого пункта вдоль пути из второго пункта следует что и существует путь вида : |
Утверждение: |
Докажем по индукции: Для 0 равенство очевидное. Ранг вершины стает равным при сливании поддеревьев ранга i-1, отсюда следует: . |
Из второго утверждения следует:
1.
2. Количество вершин ранга
Теорема: |
Амортизационная стоимость |
Доказательство: |
Рассмотрим некоторое . Разобьем наши ребра на три класса:1.Ведут в корень или в сына корня. 2. 3. Все остальные. Обозначим эти классы Амортизированная стоимость , где означает что ребро было пройдено во время выполнения текущего . |