Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1237

.pdf
Скачиваний:
3
Добавлен:
15.11.2022
Размер:
12.77 Mб
Скачать
Роберт В Флойд
(Robert W Floyd
1936–2001)

Отчёт о решении задачи представлен на рис. 2.6.

Рис. 2.6. Отчёт о решении задачи о Ханойской башне для n = 2

вGRaph INterface (GRIN)

2.2.Нахождение кратчайшего пути

вграфе с рёбрами не единичной длины

Вэтом случае разметка вершин графа учитывает длину (вес) ребра и может уменьшаться в процессе работы алгоритма.

Алгоритм Беллмана–Форда – алгоритм поиска кратчайшего пути во взвешенном графе. Алгоритм находит кратчайшие пути от одной вершины графа до всех остальных. В отличие от алгоритма Дейкстры алгоритм Белл- мана–Форда допускает рёбра с отрицательным весом. Предложен независимо Ричардом Беллманом и Лестером Фордом.

Роберт В Флойд – американский учёный

вобласти теории вычислительных систем.

Лауреат премии Тьюринга. Флойд сменил своё второе имя, которое начиналось на букву W, на саму букву, поэтому после него не ставится точка. Однако он повторял, что «W.» – это приемлемая аббревиатура от «W».

Алгоритм Флойда–Уоршелла находит кратчайшие пути между всеми парами вершин.

Основан на том, что в графе, не имеющем отрицательных ребер, всякий неэлементарный кратчайший путь состоит из совокупности эле-

41

ментарных кратчайших путей. Алгоритм Флойда – Уоршелла является более общим по сравнению с алгоритмом Дейкстры, поскольку он позволяет находить кратчайшие пути между любыми двумя вершинами графа. Алгоритм имеет кубическую сложность.

Также Флойд работал над проблемой формальной верификации (проверки правильности) программ, сделав тем самым большой вклад в логику Хоара, которую иногда называют логикой Флойда–Хоара.

Стивен Уоршелл (Stephen Warshall) (1935–2006) – американский учёный в области программирования и исследования операций.

Зададим с помощью программы GRaph INterface (GRIN) некоторый граф с неединичными рёбрами (рис. 2.7).

Рис. 2.7. Граф задачи нахождения кратчайшего пути между вершинами 1 и 5 в программе GRaph INterface (GRIN)

Задаём: Свойства – Сеть – Кратчайший путь, получаем решение

(рис. 2.8).

Рис. 2.8. Решение задачи на рис. 2.1 в GRaph INterface (GRIN)

42

Отчёт представлен на рис. 2.9.

Рис. 2.9. Отчёт о решении задачи на рис. 2.1 в GRaph INterface (GRIN)

2.3. Нахождение максимального потока в транспортной сети (flow network)

Другой пример экстремальной задачи – нахождение максимального потока в частном классе графов – транспортных сетях (алгоритм Форда–Фалкерсона).

Лестер Рэндольф Форд младший – американский математик, специализировавшийся на проблемах потоков в сети. Сын математика Лестера Рэндольфа Форда старшего.

Л.Р. Форд (Lester Randolph Ford, Jr.,

Д.Р. Фалкерсон

род. в 1927 г.)

(D.R. Fulkerson)

Совместные исследования Форда и Фалкерсона проблемы максимального потока и алгоритм Форда–Фалкерсона для её решения

43

опубликованы как технический доклад в 1954 году и утверждены как теорема Форда–Фалкерсона (рис. 2.10). Также вместе с Ричардом Беллманом Форд разработал алгоритм Беллмана–Форда для нахождения кратчайшего пути в графе с гранями с отрицательным весом.

Рис. 2.10. Публикация Форда и Фалкерсона

Алгоритм нахождения наибольшего потока предложен Фордом и Фалкерсоном (1956) и состоит в постепенном увеличении потока до тех пор, пока он не станет наибольшим.

Предполагается, что пропускные способности дуг и потоки в дугах – это целые числа.

Пример [1]. Пусть задана транспортная сеть, вершина 1 – вход сети (исток), 6 – выход сети (сток), 2, 3, 4, 5 – промежуточные вер-

шины (рис. 2.11).

Рис. 2.11. Некоторая транспортная сеть в GRaph INterface (GRIN)

44

Цифры означают пропускную способность дуг – в числителе, потоки – в знаменателе. Стрелки – направление потока. Поток, входящий в вершину, равен сумме исходящих потоков. При изменении направления промежуточных дуг поток может изменяться.

Разрез сети – линия, разрывающая все пути от истока к стоку

(рис. 2.12).

Рис. 2.12. Некоторые разрезы транспортной сети

Очевидно, что невозможно пропустить через сеть поток, больший потока минимального разреза, равного 6 единицам, хотя вроде бы «выходит» 7 единиц и «приходит» тоже 7, а также есть разрезы сети с 11 единицами.

Нахождение пути максимальной пропускной способности (рис. 2.13)

Рис. 2.13. Нахождение пути максимальной пропускной способности

45

«Отключим» ребро 3, 5 и ещё раз найдём путь максимальной пропускной способности (рис. 2.14).

Рис. 2.14. Нахождение пути максимальной пропускной способности при удалении ребра 3, 5

Теперь «отключим» ребро 2, 3 (рис. 2.15).

Рис. 2.15. Нахождение пути максимальной пропускной способности при удалении ребра (2, 3)

Задача о наибольшем (максимальном) потоке

Эта задача формулируется следующим образом: при заданной конфигурации сети и известной пропускной способности рёбер (дуг) найти наибольший поток и распределение его по дугам сети.

Дуга (ребро) называется насыщенной, если поток в ней равен пропускной способности. Поток называется полным, если каждый

46

путь от истока к стоку содержит, по крайней мере, одну насыщенную дугу (рис. 2.16).

Полный поток зависит от направления дуг. В нашем примере полный поток равен 4 единицам.

Рис. 2.16. Полный поток для сети, изображенной на рис. 2.11

Алгоритм нахождения наибольшего (максимального) потока предложен Фордом и Фалкерсоном и состоит в постепенном увеличении потока до тех пор, пока он не станет наибольшим. Предполагается, что пропускные способности дуг и потоки в дугах – целые числа. Нахождение наибольшего потока проводится в два этапа.

Вначале находится полный поток, затем максимальный, путём последовательного его увеличения. Процесс увеличения потока состоит в разметке графа индексами, указывающими путь, на котором возможно увеличение потока.

Найдём максимальный поток (рис. 2.17).

Рис. 2.17. Максимальный поток для сети на рис. 2.11

в GRaph INterface (GRIN)

47

Отчёт представлен на рис. 2.18.

Рис. 2.18. Отчёт о нахождении максимального потока для сети на рис. 2.11 в GRaph INterface (GRIN)

Получили, естественно, 6 единиц.

Добавим ещё одно ребро (одну «дорогу») (рис. 2.19).

Рис. 2.19. «Улучшенная» сеть, представленная на рис. 2.11,

в GRaph INterface (GRIN)

Найдём максимальный поток (рис. 2.20).

Рис. 2.20. Максимальный поток «улучшенной» сети в GRaph INterface (GRIN)

48

Как и ожидалось, максимальный поток равен 7, и больше из этой сети не «выжать»!

2.5. Решение транспортной задачи

Ранее в исследовании операций мы рассматривали так называемую транспортную задачу (задачу Монжа – Канторовича, Monge – Kantorovich transportation problem).

Впервые подобная задача упоминается в трудах французского математика Гаспара Монжа.

Гаспáр Монж, граф де Пелю́з (фр. Gaspard

Леонид Витальевич

Monge, comte de Péluse; 1746, Бон,

Канторович

Бургундия, Франция – 28 июля 1818,

(1912–1986)

Париж) – французский математик, гео-

 

метр, государственный деятель, морской

 

министр

 

Основное продвижение к решению задачи было сделано ещё практически на полях Великой Отечественной войны советским математиком и экономистом Леонидом Канторовичем.

Леонид Витальевич Канторович советский математик и экономист, лауреат Нобелевской премии по экономике 1975 года «за вклад в теорию оптимального распределения ресурсов». Пионер и один из создателей линейного программирования.

49

Рис. 2.21. Матрица рисков dij передачи из пунктов хi в уi в количествах ai, bi

Пример. Пакеты электронной информации в пунктах хi в количествах ai необходимо переслать в центры обработки данных уi в количествах bj. Общее количество требуемых пакетов информации равно имеющимся в пунктах хi.

Оценки рисков пересылки из хi в уi для одного пакета равна dij. Требуется передать все информационные пакеты с наименьшим

суммарным риском.

Пусть задана матрица рисков dij передачи из пунктов хi в уi в количе-

ствах ai, bj (рис. 2.21).

Эта таблица соответствует, например, схеме-графу вариантов передачи информации.

Ранее мы решали транспортную задачу как задачу линейного программирования, теперь рассмотрим графическое решение.

Граф заданной транспортной задачи, заданный в GRaph INterface (GRIN), изображён на рис. 2.22.

Рис. 2.22. Граф заданной транспортной задачи в GRaph INterface (GRIN)

К сожалению, в программе GRaph INterface (GRIN) нет опции «Транспортная задача или задача Монжа – Канторовича», поэтому приходится использовать только те функции, которые имеются.

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]