Анализ реализации с ранговой эвристикой — различия между версиями
Строка 12: | Строка 12: | ||
1.<tex> R(L(v))>R(v) </tex> | 1.<tex> R(L(v))>R(v) </tex> | ||
− | 2. Между <tex> v </tex> и <tex> P(v) </tex> существует путь вида : <tex> v | + | 2. Между <tex> v </tex> и <tex> P(v) </tex> существует путь вида : <tex> v \rightarrow L(v) \rightarrow L(L(v)) \rightarrow ... \rightarrow P(v) </tex> |
Записав неравенство из первого пункта вдоль пути из второго пункта следует что <tex> R(P(v))>R(v) </tex> | Записав неравенство из первого пункта вдоль пути из второго пункта следует что <tex> R(P(v))>R(v) </tex> | ||
}} | }} | ||
Строка 18: | Строка 18: | ||
{{Утверждение | {{Утверждение | ||
|statement= | |statement= | ||
− | <tex> R(v)=i | + | <tex> R(v)=i \Rightarrow K(v) \ge 2^i </tex> |
|proof= | |proof= | ||
Докажем по индукции: | Докажем по индукции: | ||
Для 0 равенство очевидное. | Для 0 равенство очевидное. | ||
Ранг вершины стает равным <tex> i </tex> при сливании поддеревьев ранга i-1, отсюда следует: | Ранг вершины стает равным <tex> i </tex> при сливании поддеревьев ранга i-1, отсюда следует: | ||
− | <tex>K(v) | + | <tex>K(v) \ge K(v1)+K(v2) \ge 2^{i-1}+2^{i-1} \ge 2^i </tex>. |
}} | }} | ||
Строка 30: | Строка 30: | ||
Из второго утверждения следует: | Из второго утверждения следует: | ||
− | 1. <tex> R(v) | + | 1. <tex> R(v) \le log_2(n) </tex> |
− | 2. Количество вершин ранга <tex> i | + | 2. Количество вершин ранга <tex> i \le {n \over 2^i} </tex> |
Строка 50: | Строка 50: | ||
Обозначим эти классы <tex> T1,T2,T3 </tex> | Обозначим эти классы <tex> T1,T2,T3 </tex> | ||
− | Амортизированная стоимость < | + | Амортизированная стоимость |
+ | |||
+ | <wikitex>$$ | ||
+ | S= {\sum_{get} \limits} ({\sum_{v:v \in get,v \in T1} \limits 1} + {\sum_{v:v \in get,v \in T2} \limits 1} + {\sum_{v: \in get,v \in T3} \limits 1} ) / m | ||
+ | $$</wikitex> | ||
+ | , где <tex> {v \in get } </tex> означает что ребро начало которого находится в <tex> v </tex> было пройдено во время выполнения текущего <tex> get </tex>. | ||
Ребро <tex> v </tex> эквивалентно вершине в которой оно начинается. | Ребро <tex> v </tex> эквивалентно вершине в которой оно начинается. | ||
Строка 71: | Строка 76: | ||
В результате <tex> S=O(1)+O(log^*(x))+O(1)=O(log^*(x)) </tex>. | В результате <tex> S=O(1)+O(log^*(x))+O(1)=O(log^*(x)) </tex>. | ||
− | В силу того что интервал <tex> (1, | + | В силу того что интервал <tex> (1,45...2) </tex> не пустой теорема доказана. |
}} | }} | ||
* [http://en.wikipedia.org/wiki/Iterated_logarithm Wikipedia -Iterated logarithm] | * [http://en.wikipedia.org/wiki/Iterated_logarithm Wikipedia -Iterated logarithm] |
Версия 21:52, 22 марта 2011
Пусть
- процедура слития двух множеств содержащих , , а - поиск корня поддерева содержащего . Рассмотрим операций и операций . Для удобства и без потери общности будем считать принимает в качестве аргументов корни поддеревьев и , то есть заменяем на .Тогда нам надо оценить стоимость операции
. Обозначим - ранг вершины, - отец вершины, - самый первый отец вершины, - количество вершин в поддерева корнем которого являетсяУтверждение: |
Из того как работает следует: 1.2. Между Записав неравенство из первого пункта вдоль пути из второго пункта следует что и существует путь вида : |
Утверждение: |
Докажем по индукции: Для 0 равенство очевидное. Ранг вершины стает равным при сливании поддеревьев ранга i-1, отсюда следует: . |
Из второго утверждения следует:
1.
2. Количество вершин ранга
Теорема: |
Амортизационная стоимость |
Доказательство: |
Рассмотрим некоторое число . Разобьем наши ребра на три класса:1.Ведут в корень или в сына корня. 2. 3. Все остальные. Обозначим эти классы Амортизированная стоимость <wikitex>$$ S= {\sum_{get} \limits} ({\sum_{v:v \in get,v \in T1} \limits 1} + {\sum_{v:v \in get,v \in T2} \limits 1} + {\sum_{v: \in get,v \in T3} \limits 1} ) / m $$</wikitex> , где означает что ребро начало которого находится в было пройдено во время выполнения текущего . Ребро эквивалентно вершине в которой оно начинается.В силу того что получаем .Во время после прохождения K ребер из второго классаИз выше сказанного и первого следствия второго утверждения получаем что . Для того чтоб существовал необходимо чтобыРассмотрим сумму Из первого утверждения и того что происходит сжатие путей следует cтрого увеличивается при переходе по ребру из Т3.Как максимум через переходов ребро перестанет появляться в классе Т3. .Из второго следствия второго утверждения следует .При .
|