Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

648 Глава 13. Алгоритмы графа

(a) (b)

(c) (d)

(e) (f)

Рисунок 13.18: Пример выполнения алгоритма Краскэла ПО СТАНДАРТНОМУ ГОРНОМУ ВРЕМЕНИ на графе с весами целого числа. Мы показываем группы как заштрихованные области, и мы выдвигаем на первый план край, рассматриваемый в каждом повторении. (Продолжается в рисунке 13.19.)

13.6. Минимальные деревья охвата 649

(g) (h)

(i) (j)

(k) (l)

Рисунок 13.19: Пример выполнения алгоритма Краскэла ПО СТАНДАРТНОМУ ГОРНОМУ ВРЕМЕНИ. Отклоненные края показывают разбитые. (Продолжается в рисунке 13.20.)

650 Глава 13. Алгоритмы графа

(m) (n)

Рисунок 13.20: Пример выполнения алгоритма Краскэла ПО СТАНДАРТНОМУ ГОРНОМУ ВРЕМЕНИ. Край, который рассматривают в (n), сливает последние две группы, который завершает это выполнение алгоритма Краскэла. (Продолженный от рисунка 13.19.)

Продолжительность алгоритма Краскэла

Мы обозначаем число вершин и края входного графа G с n и m, соответственно. Из-за высокого уровня описания мы дали для алгоритма Краскэла в Кодовом Фрагменте 13.25, анализирование его продолжительности требует, чтобы мы дали больше деталей о его внедрении. Определенно, мы должны указать на используемые структуры данных и как они осуществлены.

Мы можем осуществить приоритетную очередь Q использование кучи. Таким образом мы можем инициализировать Q

в O (m регистрируют m), время повторными вставками, или в O (m) время, используя восходящее строительство кучи (см. Раздел 8.3.6). Кроме того, при каждом повторении, в то время как петля, мы можем удалить край минимального веса в O (регистрируют m) время, которое фактически является O (регистрируют n), с тех пор G просто. Таким образом полное время, проведенное выступающие приоритетные операции очереди, не больше, чем O (m, регистрируют n).

Мы можем представлять каждую группу C использование одних из данных о разделении находки союз struc-

tures обсужден в Разделе 11.4.3. Вспомните, что основанная на последовательности находка союз struc-ture позволяет нам выступать, серия союза N и найти операции в O (N регистрируют N), время, и основанная на дереве версия может осуществить такой ряд операций в O (N регистрация* N)

время. Таким образом, так как мы выполняем n- 1 требование функционировать союз и при большинстве требований m к

найдите, полное время потраченный на сливающиеся группы и определение групп это ver-

tices принадлежат, не больше, чем O (m, регистрируют n), использование основанного на последовательности подхода или O (m регистрация* n) использование основанного на дереве подхода.

Поэтому, используя аргументы, подобные используемым для алгоритма Дейкстры, нас

придите к заключению, что продолжительность алгоритма Краскэла - O ((n + m), регистрируют n), который может быть упрощен как O (m, регистрируют n), так как G прост и связан.