Анализ реализации с ранговой эвристикой
Версия от 12:10, 6 июня 2012; BoyCoder (обсуждение | вклад)
Пусть
— процедура объединения двух множеств, содержащих и , а — поиск представителя множества, содержащего . Рассмотрим операций и операций ( ). Не теряя общности, будем считать, что принимает в качестве аргументов представителей, то есть заменяем на .Оценим стоимость операции
. Обозначим — ранг вершины, — представитель множества, содержащего , — отец вершины, — количество вершин в поддереве, корнем которого является .Утверждение: |
Из принципа работы функции следует:
|
Утверждение: |
Докажем по индукции: Для 0 равенство очевидно. Ранг вершины станет равным при объединении поддеревьев ранга , следовательно: . |
Из последнего утверждения следует:
- Количество вершин ранга
Теорема: |
Амортизационная стоимость |
Доказательство: |
Рассмотрим некоторое число . Разобьем наши ребра на три класса:
Обозначим эти классы .Амортизационная стоимость
где означает, что ребро, начало которого находится в , было пройдено во время выполнения текущего . Ребро эквивалентно вершине, в которой оно начинается.В силу того, что получаем:
Во время после прохождения K ребер из второго классаИз выше сказанного и первого следствия второго утверждения получаем, что:
Для того, чтобы существовал необходимо, чтобы
Из первого утверждения и в силу использования сжатия путей следует, что cтрого увеличивается при переходе по ребру из .Как максимум через переходов ребро перестанет появляться в классе .Из второго следствия второго утверждения следует При :
|