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

Дискретная математика & математическая логика

..pdf
Скачиваний:
48
Добавлен:
15.11.2022
Размер:
19.42 Mб
Скачать

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

Нахождение полного потока

Ищем путь, все дуги которого не насыщены, и увеличиваем поток на + 1 до тех пор, пока он не станет полным.

Путь µ1 = х0, х1, х3, z: насыщается дуга х0, х1; ϕ (µ1) = 1 – рис. 3.8.

Рис. 3.8. Насыщение дуги х0, х1

Путь µ2 = х0, х2, х4, х3, z: насыщаются дуги х4, х3 и х3, z;

ϕ (µ2) = 1 – рис. 3.9.

Рис. 3.9. Насыщение дуг х4, х3 и х3, z

81

Легко видеть, что больше нет путей из х0 в z, содержащих ненасыщенныедуги. Следовательно, полныйпотокϕ (µ1) + ϕ (µ2) + ϕ (µ3) = 4.

Путьµ3 = х0, х2, х4, z: насыщаютсядугих4, х3 их3, z. Длянасыщенияэтогопутиберёмϕ (µ3) = 2. Насыщаетсядугах2, х4 = 2 – рис. 3.10.

Рис. 3.10. Насыщение дуги х2, х4 = 2

Легко видеть, что больше нет путей из х0 в z, содержащих ненасыщенные дуги. Следовательно, полный поток ϕ (µ1) + ϕ (µ2) + + ϕ (µ3) = 4.

Нахождение наибольшего потока

Процесс увеличения потока состоит в разметке графа индексами, указывающими путь, на котором возможно увеличение потока. Помечаем х индексом 0. Если хi – уже помеченная вершина, то помечаем индексом +i все непомеченные вершины,

вкоторые идут ненасыщенные дуги из хi, и индексом – i все непомеченные вершины, из которых идут дуги в вершину хi. Если

врезультате этого процесса окажется помеченной вершина z, то между вершинами х0 и z найдётся цепь, все вершины которой

различны и помечены номерами предыдущих вершин. Поток в этой цепи увеличивается на 1. Если некоторый поток невозможно увеличить указанным образом, т.е. оказывается невозможным пометить вершину z, то такой поток – наибольший. Начинаем разметку – рис. 3.11.

82

Рис. 3.11. Начальная разметка сети

Вершина z оказалась помеченной индексом +4. Убывающая последовательность индексов +4, –3, +2, +0 определяет цепь = х0, х2, х3, х4, z, поток в которой следует увеличить на 1. Проводим новую разметку – рис. 3.12.

Находим цепь = х0, х2, х1, х3, х4, z, поток в которой также может быть увеличен на 1, увеличиваем – рис. 3.13.

Рис. 3.12. Первая итерация увеличения потока

Рис. 3.13. Вторая итерация увеличения потока

83

При разметке индексов вершина z осталась непомеченной, т.е. ненасыщенных дуг в z нет. Таким образом, наибольший поток найден. Он равен 6.

3.4. ТРАНСПОРТНАЯ ЗАДАЧА

Транспортная задача – задача об оптимальном плане перевозок продукта(ов) из пунктов наличия в пункты потребления. Разработка и применение оптимальных схем грузовых потоков позволяют снизить затраты на перевозки [8].

Транспортная задача (классическая) – задача об опти-

мальном плане перевозок однородного продукта из однородных пунктов наличия продукта в однородные пункты потребления на однородных транспортных средствах (предопределённом количестве) со статичными данными и линеарном подходе (это основные условия задачи).

Для классической транспортной задачи выделяют два типа задач: критерий стоимости (достижение минимума затрат на перевозку), или расстояний, и критерий времени (затрачивается минимум времени на перевозку).

Задача о максимальном потоке в сети изучается уже более 60 лет. Интерес к ней подогревается огромной практической значимостью этой проблемы. Методы решения задачи применяются на транспортных, коммуникационных, электрических сетях, при моделировании различных процессов физики и химии, в некоторых операциях над матрицами, для решения родственных задач теории графов и даже для поиска веб-групп в сети Интернет. Исследования данной задачи проводятся во множестве крупнейших университетов мира [8].

Пример. Однородный груз на станциях хi в количествах ai необходимо доставить на станции уi в количествах bj. Общее количество требуемого груза равно имеющимся запасам. Стоимость перевозки из хi в уi равна dij. Пусть задана матрица стоимостей dij перевозки грузов из пунктов хi в уi в количествах ai, bj:

84

ai

 

 

bj

 

 

 

5

10

 

20

15

 

10

8

3

 

5

2

 

15

4

1

 

6

7

 

25

1

9

 

4

3

dij

Эта таблица соответствует, например, схеме дорог, связывающих заводы-изготовители с потребителями.

Можно записать аналитически:

8х1.1 + 3х1.2 + 5х1.3 + 2х1.4 = 10, 4х2.1 + 1х2.2 + 6х2.3 + 7х2.4 = 15, 1х3.1 + 9х3.2 + 4х3.3 + 3х3.4 = 25, 8х1.1 + 4х2.1 + 1х3.1 = 5,

3х1.2 + 1х2.2 + 9х3.2 = 10, 5х1.3 + 6х2.3 + 4х3.3 = 20, 2х1.4 + 7х2.4 + 3х3.4 = 15,

х1.1 + х1.2

+ х1.3 + х1.4 + х2.1 + х2.2 + х2.3 + х2.4 + х3.1 +

+ х3.2 + х3.3 + х3.4

min.

Итак, имеется всего 12 переменных. Они принимают значения из множества натуральных чисел N0 с нулём = {0, 1, 2, …}.

Проведём подстановку в первое уравнение четвёртого:

5 – 4 х2.1 + 10 – 1 х3.1 – 3 х1.2 + 5х1.3 + 2х1.4 = 10.

Во второе – из пятого:

4х2.1 + 10 – 3 х1.2 – 9 х3.2 + 6х2.3 + 7х2.4 = 15.

В третье – из шестого:

1х3.1 + 9х3.2 + 20 – 5 х1.3 – 6 х2.3 + 3х3.4 = 25.

Легко видеть, что из седьмого уравнения:

3х3.4 = 15 – 2 х1.4 – 7 х2.4.

Тогда 1х3.1 + 9х3.2 + 20 – 5 х1.3 – 6 х2.3 + 15 – 2 х1.4 – 7 х2.4 = 25, т.е. 1х3.1 + 9х3.2 – 5 х1.3 – 6 х2.3 – 2 х1.4 – 7 х2.4 = –10.

Таким образом:

–4 х2.1 – 1 х3.1 – 3 х1.2 + 5х1.3 + 2х1.4 = 5,

4х2.1 – 3 х1.2 – 9 х3.2 + 6х2.3 + 7х2.4 = 5,

85

1х3.1 + 9х3.2 – 5 х1.3 – 6 х2.3 + 3х3.4 = 5,

1х3.1 + 9х3.2 – 5 х1.3 – 6 х2.3 – 2 х1.4 – 7 х2.4 = –10,

х1.1 + х1.2 + х1.3 + х1.4 + х2.1 + х2.2 + х2.3 + х2.4 + х3.1 + х3.2 + х3.3 + х3.4 min.

Заметим, что 1х3.1 + 9х3.2 – 5 х1.3 – 6 х2.3 = 5 – 3 х3.4,

поэтому 5 – 3 х3.4 – 2 х1.4 – 7 х2.4 = –10.

Рис. 3.14. Транспортная сеть

Сведём эту задачу к предыдущей – нахождения наибольшего потока. Для этого введём исток х0, из которого направим исходящие дуги в хi с пропускной способностью ai, и сток z, в который направим входящие дуги от уi с пропускной способностью bj. Соответствующая транспортная сеть представлена на рис. 3.14.

Распределение частичных потоков в транспортной задаче по критерию стоимости

Здесь стоимость dij может быть интерпретирована как длина дуги, и мы получаем возможность использования ранее рассмотренной задачи нахождения кратчайших путей в графе с дугами неединичной длины. Тогда стоимость прохождения потока по некоторому пути равна произведению длины пути на величину потока. Если нет ограничений на пропускную способность дуг, кратчайший путь является путём, обеспечивающим минимальную стоимость

86

прохождения потока. В случае ограничений на пропускную способность дуг задача решается в несколько этапов путём нахождения частичных потоков. На рис. 3.13 пропускные способности дуг от х0 до х1, х2, х3 равны соответственно 10, 15, 25; а пропускные способности дуг от у1, у2, у3, у4 до z – соответственно 5, 10, 15, 20. Пропускные способности дуг хi уj считаются бесконечными. После нахождения частичного потока пропускные способности дуг от х0 к z уменьшаются, и процесс повторяется. В результате получаем табл. 3.1, рис. 3.15.

Таблица 3 . 1

Решение транспортной задачи по критерию стоимости, стоимость = 140

Номер

Маршрут

Частичный

dij

Стоимость

 

маршрута

(xi, yj)

поток

 

перевозки

 

k

 

ϕ k

 

dij ϕ k

 

1

(x3, y1)

5

1

5

 

2

(x2, y2)

10

1

10

 

3

(x1, y4)

10

2

20

 

4

(x3, y4)

5

3

15

 

5

(x3, y3)

15

4

60

 

6

(x2, y3)

5

6

30

 

 

 

50

 

140

Σ

Рис. 3.15. Решение транспортной задачи по критерию стоимости

87

Решение транспортной задачи по критерию времени

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

Рассмотрим ту же задачу, но будем решать её по критерию времени. Ранее полученное решение по критерию стоимости возьмём в качестве первого приближения к наилучшему решению – рис. 3.16.

Рис. 3.16. Начало решения транспортной задачи по критерию стоимости

88

Время прохождения потока по самому продолжительному маршруту (х2, у3) равно 6. Однако оказались неиспользованными менее продолжительные маршруты (х1, у2); (х2, у1); (х1, у3), поэтому возможно, что использование какого-либо из этих маршрутов позволит исключить маршрут (х2, у3). Построим частичный граф G, в который включим только дуги графа G, имеющие продолжительность tij < 6, в этом графе распределение потока такое же, как в графе G – рис. 3.17.

Рис. 3.17. Частичный граф G, в который включены только дуги графа G – рис. 3.15, имеющие продолжительность tij < 6

В этом графе для удобства все промежуточные вершины обозначены х. Поток в этом графе составляет 45 единиц. Найдём наибольший поток в соответствии с ранее решённой задачей. Проведём разметку графа – рис. 3.18.

Получаем путь х0, х2, х4, х3, х6, z, по которому поток может быть увеличен на 5 единиц – рис. 3.19.

Теперь наибольший поток равен 50 единицам и наиболее продолжительный маршрут имеет продолжительность 4. На самом деле, поток из х2 = 5 (t = 4) не возвращается в х3, а пойдёт в z, а поток из х3 = 5 (t = 4) пойдёт в х6.

89

Рис. 3.18. Разметка графа – первая итерация

Рис. 3.19. Разметка графа – вторая итерация

Дальнейшее уменьшение времени прохождения потока добиться невозможно, так как к вершине х6 (у3) не идут маршруты, меньшие 4.

Окончательное распределение потока указано в табл. 3.2.

90

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