Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по МОИ(глава 3).doc
Скачиваний:
13
Добавлен:
05.11.2018
Размер:
1.6 Mб
Скачать

3.Wlg положить Size[a] Size[b]

4.Otherwise поменять ролями a и в in

begin

5. Element=List[A];

6. While Element do

begin

7. R[Element]=B;

8. Last=Element;

9. Element=Next[Element]

end;

10. Next[Last]=List[B];

11. List [В]=List[A];

J2. Size[B]=Size[A]+ Size[B];

13. In_Name[К]=В;

14. Out_Name[B]=K

end

end

В

Рис. 20: Структура данных после выполнения

операции ОБЪЕДИНИТЬ

алгоритме используются обозначения:

wlg (without loss of generality) – без потери в общности;

otherwise – в противном случае;

in – в.

Пример 3.6. После выполнения операции Union(1,2,4) структура данных рис. 19 превратится в структуру данных, изображенную на рис. 20. 

Теорема 13. С помощью алгоритма 16 можно выполнить n–1 (максимально возможное число) операций ОБЪЕДИНИТЬ за O(nlogn) шагов.

Доказательство. За каждое выполнение операции ОБЪЕДИНИТЬ будем налагать на перемещаемые элементы одинаковые штрафы, в сумме равные сложности этого выполнения. Так как сложность пропорциональна числу перемещаемых элементов, то величина штрафа, налагаемого на один элемент, будет всегда одна и та же. Основное здесь – это заметить, что всякий раз, когда элемент перемещается из списка, он оказывается в списке, по крайней мере в два раза длиннее прежнего. Поэтому никакой элемент нельзя переместить более чем log п раз и, значит, суммарный штраф, налагаемый на один элемент, составляет О(logn).

65