Анализ реализации с ранговой эвристикой — различия между версиями
| Строка 9: | Строка 9: | ||
<tex> R(P(v))>R(v) </tex> | <tex> R(P(v))>R(v) </tex> | ||
|proof= | |proof= | ||
| − | Из того как работает | + | Из того как работает <tex> get </tex> следует: |
1.<tex> R(L(v))>R(v) </tex> | 1.<tex> R(L(v))>R(v) </tex> | ||
| Строка 49: | Строка 49: | ||
Обозначим эти классы <tex> T1,T2,T3 </tex> | Обозначим эти классы <tex> T1,T2,T3 </tex> | ||
| + | |||
Амортизированная стоимость<tex> S= {\sum_{get} \limits} ({\sum_{v \in get,v \in T1} \limits 1} + {\sum_{v \in get,v \in T2} \limits 1} + {\sum_{v \in get,v \in T3} \limits 1} ) / m </tex> , где <tex> {v \in get } </tex> означает что ребро начало которого находится в <tex> v </tex> было пройдено во время выполнения текущего <tex> get </tex>. | Амортизированная стоимость<tex> S= {\sum_{get} \limits} ({\sum_{v \in get,v \in T1} \limits 1} + {\sum_{v \in get,v \in T2} \limits 1} + {\sum_{v \in get,v \in T3} \limits 1} ) / m </tex> , где <tex> {v \in get } </tex> означает что ребро начало которого находится в <tex> v </tex> было пройдено во время выполнения текущего <tex> get </tex>. | ||
Ребро <tex> v </tex> эквивалентно вершине в которой оно начинается. | Ребро <tex> v </tex> эквивалентно вершине в которой оно начинается. | ||
| Строка 65: | Строка 66: | ||
При <tex> x < 2~~~{\sum_{get} \limits}~ {\sum_{v \in get,v \in T3} \limits} 1/n < { 2 \over 2-x } = = O(1) </tex>. | При <tex> x < 2~~~{\sum_{get} \limits}~ {\sum_{v \in get,v \in T3} \limits} 1/n < { 2 \over 2-x } = = O(1) </tex>. | ||
В результате <tex> S=O(1)+O(1)+O(1)=O(1) </tex>. | В результате <tex> S=O(1)+O(1)+O(1)=O(1) </tex>. | ||
| − | В силу того что интервал <tex> (1,44..2) </tex> не пустой теорема доказана. | + | В силу того что интервал <tex> (1,44...2) </tex> не пустой теорема доказана. |
}} | }} | ||
Версия 07:07, 8 марта 2011
Пусть - процедура слития двух множеств содержащих ,, а - поиск корня поддерева содержащего . Рассмотрим операций и операций . Для удобства и без потери общности будем считать принимает в качестве аргументов корни поддеревьев и , то есть заменяем на .
Тогда нам надо оценить стоимость операции . Обозначим - ранг вершины, - отец вершины, - самый первый отец вершины, - количество вершин в поддерева корнем которого является
| Утверждение: |
|
Из того как работает следует: 1. 2. Между и существует путь вида : Записав неравенство из первого пункта вдоль пути из второго пункта следует что |
| Утверждение: |
|
Докажем по индукции: Для 0 равенство очевидное. Ранг вершины стает равным при сливании поддеревьев ранга i-1, отсюда следует: . |
Из второго утверждения следует:
1.
2. Количество вершин ранга
| Теорема: |
Амортизационная стоимость |
| Доказательство: |
|
Рассмотрим некоторое . Разобьем наши ребра на три класса: 1.Ведут в корень или в сына корня. 2. 3. Все остальные. Обозначим эти классы Амортизированная стоимость , где означает что ребро начало которого находится в было пройдено во время выполнения текущего . Ребро эквивалентно вершине в которой оно начинается. В силу того что получаем . После K ребер из второго класса Из выше сказанного и первого следствия второй леммы получаем что . Для того чтоб существовал необходимо чтобы Рассмотрим сумму Из первого утверждения следует только увеличивается при переходе по ребру из Т3. Как максимум через переходов ребро перестанет появляться в классе Т3. . При . В результате . В силу того что интервал не пустой теорема доказана. |