Анализ реализации с ранговой эвристикой — различия между версиями
BoyCoder (обсуждение | вклад) |
м (rollbackEdits.php mass rollback) |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 15: | Строка 15: | ||
|proof= | |proof= | ||
Из принципа работы функции <tex> get </tex> следует: | Из принципа работы функции <tex> get </tex> следует: | ||
− | #<tex> R(L(v))>R(v) </tex> | + | #<tex> R(L(v))>R(v) </tex>. |
− | #Между <tex> v </tex> и <tex> P(v) </tex> существует путь вида: <tex> v \rightarrow L(v) \rightarrow L(L(v)) \rightarrow \dots \rightarrow P(v) </tex> | + | #Между <tex> v </tex> и <tex> P(v) </tex> существует путь вида: <tex> v \rightarrow L(v) \rightarrow L(L(v)) \rightarrow \dots \rightarrow P(v) </tex>. |
Записав неравенство из первого пункта вдоль пути из второго пункта, получаем требуемое. | Записав неравенство из первого пункта вдоль пути из второго пункта, получаем требуемое. | ||
}} | }} | ||
Строка 33: | Строка 33: | ||
Из последнего утверждения следует: | Из последнего утверждения следует: | ||
− | #<tex> R(v) \le \log_2(n) </tex> | + | #<tex> R(v) \le \log_2(n) </tex>. |
− | #Количество вершин ранга <tex> i \le {n \over 2^i} </tex> | + | #Количество вершин ранга <tex> i \le {n \over 2^i} </tex>. |
{{Теорема | {{Теорема | ||
Строка 69: | Строка 69: | ||
</center> | </center> | ||
− | Во время <tex> get </tex> после прохождения K ребер из второго класса <tex> R(v_1) \ge x^{x^{.^{.^{.^{x^{R(v)}}}}}} </tex> | + | Во время <tex> get </tex> после прохождения K ребер из второго класса <tex> R(v_1) \ge x^{x^{.^{.^{.^{x^{R(v)}}}}}} </tex>. |
Из выше сказанного и первого следствия второго утверждения получаем, что: | Из выше сказанного и первого следствия второго утверждения получаем, что: | ||
Строка 96: | Строка 96: | ||
</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} |
Текущая версия на 19:21, 4 сентября 2022
Пусть
— процедура объединения двух множеств, содержащих и , а — поиск представителя множества, содержащего . Рассмотрим операций и операций ( ). Не теряя общности, будем считать, что принимает в качестве аргументов представителей, то есть заменяем на .Оценим стоимость операции
. Обозначим — ранг вершины, — представитель множества, содержащего , — отец вершины, — количество вершин в поддереве, корнем которого является .Утверждение: |
Из принципа работы функции следует:
|
Утверждение: |
Докажем по индукции: Для 0 равенство очевидно. Ранг вершины станет равным при объединении поддеревьев ранга , следовательно: . |
Из последнего утверждения следует:
- .
- Количество вершин ранга .
Теорема: |
Амортизационная стоимость |
Доказательство: |
Рассмотрим некоторое число . Разобьем наши ребра на три класса:
Обозначим эти классы .Амортизационная стоимость , где означает, что ребро, начало которого находится в , было пройдено во время выполнения текущего . Ребро эквивалентно вершине, в которой оно начинается.В силу того, что получаем:. Во время после прохождения K ребер из второго класса .Из выше сказанного и первого следствия второго утверждения получаем, что: . Для того, чтобы существовал необходимо, чтобы .
Из первого утверждения и в силу использования сжатия путей следует, что cтрого увеличивается при переходе по ребру из .Как максимум через переходов ребро перестанет появляться в классе .Из второго следствия второго утверждения следует: При :
|