Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП_САОД_2003.doc
Скачиваний:
85
Добавлен:
25.11.2018
Размер:
3.26 Mб
Скачать
      1. Нахождение минимального остовного дерева

Приведем без доказательства следующее свойство MST (minimal spanning tree – минимальное остовное дерево на английском языке).

В графе G = (VE) рассмотрим U – некоторое подмножество V, такое что U и V\U не пусты. Пусть (uv) – ребро наименьшей стоимости, одна вершина которого – u  U, а другая – v  V\U. Тогда существует некоторое MST, содержащее ребро (uv).

Рисунок 57. Граф и его остовное дерево минимальной длины

На этом свойстве основаны два известных алгоритма.

        1. Алгоритм Прима

В этом алгоритме строится множество вершин U, из которого «вырастает» остовное дерево.

Сначала U = . На каждом шаге алгоритма находится ребро наименьшей стоимости (uv) такое, что u  U, v  V\U, затем вершина v переносится из V\U в U. Этот процесс продолжается до тех пор, пока множество U не станет равным множеству V.

Рисунок 58. Алгоритм Прима

U := ;

U:= U  любая вершина;

while V\U <>  do begin

Выбрать ребро (u, v) наименьшей стоимости, где uU, vV\U;

U:= U  v;

V\U := (V\U)  v;

end;

Очевидно, данный алгоритм для графа с n вершинами имеет сложность, пропорциональную O(n2)

        1. Алгоритм Крускала

Здесь построение MST начинается с графа, состоящего только из n вершин графа G и не имеющего ребер. Таким образом, каждая вершина является связанной (сама с собой) компонентой. Это дает n связных компонент. В процессе выполнения алгоритма связанные компоненты постепенно объединяются друг с другом, формируя остовное дерево.

При построении постепенно возрастающих связанных компонент поочередно проверяются ребра из множества E в порядке возрастания их длин. Если очередное ребро связывает две вершины из разных компонент, тогда оно добавляется в остовное дерево. Если это ребро связывает две вершины из одной компоненты, то оно отбрасывается, так как его добавление в связанную компоненту может привести к образованию цикла. Число ребер, необходимое для остовного дерева равно n-1. Граф связан, а значит E содержит как минимум такое их количество. Когда остовное дерево будет содержать n-1 ребер, алгоритм завершается.

Создать список ребер L, в неубывающем по длине порядке

while число отмеченных ребер < n-1 do begin

Удалить w из головы списка L;

if w соединяет две несвязных компоненты then

отметить w и добавить к MST

else {w - внутри компоненты}

не отмечать w {это приведет к циклу в MST}

end;

Рисунок 59. Алгоритм Крускала

Сложность алгоритма для графа с n вершинами и m ребрами пропорциональна O(m*log m).

Литература

  1. * Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. – М.: Мир, 1979.

  2. Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы. – М.: "Вильямс", 2001. – 384 с.

  3. * Бентли Д. Жемчужины творчества программистов. – М.: Радио и связь, 1990.

  4. * Вирт Н. Алгоритмы + структуры данных = программы. – М.: Мир, 1985.

  5. * Вирт Н. Алгоритмы и структуры данных. – М: Мир, 1989. – 360 с.

  6. * Грин Д., Кнут Д. Математические методы анализа алгоритмов. – М: Мир, 1987.

  7. * Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. – М.: Мир, 1981.

  8. * Дейкстра Э. Дисциплина программирования. – М: Мир, 1978.

  9. * Кнут Д.Е. Искусство программирования для ЭВМ. В 3-х томах. – М.: Мир, 1976.

  10. Кнут Д.Е. Искусство программирования. В 3-х томах. – М.: "Вильямс", 2000.

  11. * Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: Построение и анализ. – М.: МЦНМО, 2001.

  12. Лэгсам Й., Огенстайн М. Структуры данных для персональных ЭВМ. – М.: Мир, 1989. – 586с.

  13. * Матьяш В.А., Путилов В.А., Фильчаков В.В., Щекин С.В. Структуры и алгоритмы обработки данных. – Апатиты, КФ ПетрГУ, 2000. – 80 с.

  14. * Оре О. Графы и их применение. – М.: Мир, 1965.

  15. * Рейнгольд Э., Нивергельт Ю., Део Н. Комбинаторные алгоритмы. Теория и практика. – М.: Мир, 1980.

  16. * Сибуя М., Ямамото Т. Алгоритмы обработки данных. – М: Мир, 1986. – 218 с.

  17. * Успенский В.А., Семенов А.Л. Теория алгоритмов: основные открытия и приложения. – М.: Наука, 1987.

  18. * Харари Ф. Теория графов. – М: Мир, 1973.

* - имеются в наличии в библиотеке СПбГУАП.

Русскоязычные ресурсы InterNet

  1. http://algo.4u.ru/

  2. http://algolist.manual.ru/

  3. http://alglib.chat.ru/

  4. http://algo.do.ru/

  5. http://hcinsu.chat.ru/

  6. http://algolist.da.ru/

  7. http://progstone.narod.ru/links/wantalgo.html

  8. http://www.sevmashvtuz.edu/links/algorithms.html

© СПбГУАП, 2003

_______________________________________________________________

Лицензия ЛР №020341 от 07.05.97 г.

Подписано к печати Формат 60х84 1/16 Бумага тип №3

Печать офсетная Усл. печ. л Тираж ___ экз.

_______________________________________________________________

Редакционно-издательский отдел

Отдел оперативной полиграфии СПбГУАП