Анализ реализации с ранговой эвристикой — различия между версиями
BoyCoder (обсуждение | вклад) |
BoyCoder (обсуждение | вклад) |
||
Строка 56: | Строка 56: | ||
+ | + | ||
{\sum_{v:v \in get,v \in T2} \limits 1} + {\sum_{v: \in get,v \in T_3} \limits 1} ) / m | {\sum_{v:v \in get,v \in T2} \limits 1} + {\sum_{v: \in get,v \in T_3} \limits 1} ) / m | ||
− | </tex> | + | </tex>, |
</center> | </center> | ||
где <tex> {v \in get } </tex> означает, что ребро, начало которого находится в <tex> v </tex>, было пройдено во время выполнения текущего <tex> get </tex>. | где <tex> {v \in get } </tex> означает, что ребро, начало которого находится в <tex> v </tex>, было пройдено во время выполнения текущего <tex> get </tex>. | ||
Строка 66: | Строка 66: | ||
<tex> | <tex> | ||
S = O(1) + {\sum_{get} \limits} ~ {\sum_{v:v \in get,v \in T_2} \limits} 1/m+ {\sum_{get} \limits} ~ {\sum_{v:v \in get,v \in T_3} \limits} 1 / m | S = O(1) + {\sum_{get} \limits} ~ {\sum_{v:v \in get,v \in T_2} \limits} 1/m+ {\sum_{get} \limits} ~ {\sum_{v:v \in get,v \in T_3} \limits} 1 / m | ||
− | </tex> | + | </tex>. |
</center> | </center> | ||
Строка 74: | Строка 74: | ||
<center> | <center> | ||
<tex> {\sum_{v:v \in get,v \in T_2} \limits} \le \log^*_x(\log_2(n)) = O(\log^*(n)) | <tex> {\sum_{v:v \in get,v \in T_2} \limits} \le \log^*_x(\log_2(n)) = O(\log^*(n)) | ||
− | </tex> | + | </tex>. |
</center> | </center> | ||
− | Для того, чтобы <tex> \log^*_x(\log_2(n)) </tex> существовал необходимо, чтобы <tex> x > e ^{ 1 /e } \approx 1,44 </tex> | + | Для того, чтобы <tex> \log^*_x(\log_2(n)) </tex> существовал необходимо, чтобы <tex> x > e ^{ 1 /e } \approx 1,44 </tex>. |
Строка 85: | Строка 85: | ||
< | < | ||
{\sum_{get} \limits} ~ {\sum_{v:v \in get,v \in T_3} \limits} 1/n | {\sum_{get} \limits} ~ {\sum_{v:v \in get,v \in T_3} \limits} 1/n | ||
− | </tex> </center> | + | </tex>. </center> |
Из первого утверждения и в силу использования сжатия путей следует, | Из первого утверждения и в силу использования сжатия путей следует, | ||
что <tex> R(P(x))</tex> cтрого увеличивается при переходе по ребру из <tex> T_3 </tex>. | что <tex> R(P(x))</tex> cтрого увеличивается при переходе по ребру из <tex> T_3 </tex>. | ||
Строка 94: | Строка 94: | ||
{\sum_{get} \limits}~ {\sum_{v:v \in get,v \in T_3} \limits} 1/n = {\sum_v \limits ~\sum_{get: in ~ this ~ get ~ v \in T_3} \limits } | {\sum_{get} \limits}~ {\sum_{v:v \in get,v \in T_3} \limits} 1/n = {\sum_v \limits ~\sum_{get: in ~ this ~ get ~ v \in T_3} \limits } | ||
1/n \le \sum_v \limits x^{R(v)} /n | 1/n \le \sum_v \limits x^{R(v)} /n | ||
− | </tex></center> | + | </tex>.</center> |
Из второго следствия второго утверждения следует | Из второго следствия второго утверждения следует | ||
<center> <tex> | <center> <tex> | ||
{\sum_{get} \limits}~ {\sum_{v:v \in get,v \in T_3} \limits} 1/n \le \sum_{Rank=0}^{\log_2(n)} \limits {nx^{Rank} \over 2^{Rank} n} | {\sum_{get} \limits}~ {\sum_{v:v \in get,v \in T_3} \limits} 1/n \le \sum_{Rank=0}^{\log_2(n)} \limits {nx^{Rank} \over 2^{Rank} n} | ||
− | </tex></center> | + | </tex>.</center> |
При <tex> x < 2~</tex>: | При <tex> x < 2~</tex>: | ||
Строка 110: | Строка 110: | ||
\le | \le | ||
{ 2 \over 2-x } = O(1) | { 2 \over 2-x } = O(1) | ||
− | </tex></center> | + | </tex>.</center> |
Версия 12:15, 6 июня 2012
Пусть
— процедура объединения двух множеств, содержащих и , а — поиск представителя множества, содержащего . Рассмотрим операций и операций ( ). Не теряя общности, будем считать, что принимает в качестве аргументов представителей, то есть заменяем на .Оценим стоимость операции
. Обозначим — ранг вершины, — представитель множества, содержащего , — отец вершины, — количество вершин в поддереве, корнем которого является .Утверждение: |
Из принципа работы функции следует:
|
Утверждение: |
Докажем по индукции: Для 0 равенство очевидно. Ранг вершины станет равным при объединении поддеревьев ранга , следовательно: . |
Из последнего утверждения следует:
- Количество вершин ранга
Теорема: |
Амортизационная стоимость |
Доказательство: |
Рассмотрим некоторое число . Разобьем наши ребра на три класса:
Обозначим эти классы .Амортизационная стоимость , где означает, что ребро, начало которого находится в , было пройдено во время выполнения текущего . Ребро эквивалентно вершине, в которой оно начинается.В силу того, что получаем:. Во время после прохождения K ребер из второго классаИз выше сказанного и первого следствия второго утверждения получаем, что: . Для того, чтобы существовал необходимо, чтобы .
Из первого утверждения и в силу использования сжатия путей следует, что cтрого увеличивается при переходе по ребру из .Как максимум через переходов ребро перестанет появляться в классе .Из второго следствия второго утверждения следует При :
|