Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Самостоятельная работа / Метод указания к ОЛР_ММИПиУ_2014 (АСОИ)_практика.doc
Скачиваний:
213
Добавлен:
29.02.2016
Размер:
20.06 Mб
Скачать

1.3 Алгоритм нахождения максимального потока на сети (алгоритм Форда -Фалкерсона)

Рассмотрим алгоритм Форда-Фалкерсона на следующем примере.

Пример 1. На заданной сети указаны пропускные способности ребер. Предполагается, что пропускные способности в обоих направлениях одинаковы. Требуется:

1) сформировать на сети поток максимальной мощности, направленный из истока I в сток S;

2) выписать ребра, образующие на сети разрез минимальной пропускной способности (рис. 4).

Рисунок 4 - Исходная сеть

Решение.

Построим матрицу пропускных способностей сети ( M1 ),с элементами С(eij) :

1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 49Прямая соединительная линия 48

  1. 0 2 9 3 5 0 0 0 0 0

  2. 2 0 0 0 4 0 0 7 0 0

  3. 9 0 0 8 0 5 4 0 0 0

  4. 3 0 8 0 0 0 6 0 0 0

  5. 5 4 0 0 0 0 8 1 0 6

  6. 0 0 5 0 0 0 3 0 2 0

М1 = 7 0 0 4 6 8 0 0 0 9 4

8 0 7 0 0 1 0 0 0 0 5

9 0 0 0 0 0 2 9 0 0 8

10 0 0 0 0 6 0 4 5 8 0

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

1 = (1, 2, 8, 10), ( 1 ) = 2;

2 = (1, 5, 10), ( 2 ) = 5;

3 = (1, 4, 7, 10), ( 3 ) = 3;

4 = (1, 3, 6, 19), ( 4 ) = 2.

Т.о. пропускная способность потока 0 равна:

0 = ( 1 )+ ( 2 )+ ( 3 )+ ( 4 ) = 12

Величина потока каждого ребра выглядят так:

(e12) = 2; (e15) = 5; (e14) = 3; (e13) = 2;

(e28) = 2; (e510) = 5; (e47) = 3; (e36) = 2;

(e810) = 2; (e69) = 2;

(e910) = 2;

Составим теперь матрицу построенного потока M2 c элементами (eij):

1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 47Прямая соединительная линия 46

  1. 0 2 2 3 5 0 0 0 0 0

2 -2 0 0 0 0 0 0 2 0 0

3 -2 0 0 0 0 2 0 0 0 0

4 -3 0 0 0 0 0 3 0 0 0

5 -5 0 0 0 0 0 0 0 0 5

6 0 0 -2 0 0 0 0 0 2 0

7 0 0 0 -3 0 0 0 0 0 3

8 0 -2 0 0 0 0 0 0 0 2

9 0 0 0 0 0 -2 0 0 0 2

10 0 0 0 0 -5 0 -3 -2 -2 0

Далее строим матрицу М3 = М1 - М2 = { C(eij) - (eij) }:

1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 44Прямая соединительная линия 451  0 0 7 0 0 0 0 0 0 0

2  4 0 0 0 4 0 0 5 0 0

3 11 0 0 8 0 3 4 0 0 0

4  6 0 8 0 0 0 3 0 0 0

5 10 4 0 0 0 0 8 1 0 1

6  0 0 7 0 0 0 3 0 0 0

7  0 0 4 9 8 0 0 0 9 1

8  0 9 0 0 1 0 0 0 0 3

9  0 0 0 0 0 4 9 0 0 6

10  0 0 0 0 11 0 7 7 10 0

В соответствии с данным алгоритмом составляем максимальный поток:

1)Построим начальный поток.

2)Составляем по ненасыщенному пути А={1,2,3,4,5,6,7,8,9,10}, где 1I и 10S,в сответствии с п.2 алгоритма построения по теореме Форда-Фалкерсона,сток попал в количество ребер по ненасыщенному пути.

3)Выделим путь из истока в сток, состоящий из ненасыщенных ребер 5=(1,2,3,4,5,6,7,8,9,10).

Далее строим матрицу М3 = М1 - М2 = { C(eij) - (eij) }:

1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 42Прямая соединительная линия 431  0 0 7 0 0 0 0 0 0 0

2  4 0 0 0 4 0 0 5 0 0

3 11 0 0 8 0 3 4 0 0 0

4  6 0 8 0 0 0 3 0 0 0

5 10 4 0 0 0 0 8 1 0 1

6  0 0 7 0 0 0 3 0 0 0

7  0 0 4 9 8 0 0 0 9 1

8  0 9 0 0 1 0 0 0 0 3

9  0 0 0 0 0 4 9 0 0 6

10  0 0 0 0 11 0 7 7 10 0

поток:

1//3 4 =(1, 3, 4, 7)=1

3//4,6,7

4//7

7//5,9,10

M4:

1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 40Прямая соединительная линия 411  0 0 1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

-1 0 0 1 0 0 0 0 0 0

0 0 -1 0 0 0 1 0 0 0

0 0 0 0 0 0 0 0 0 0

6  0 0 0 0 0 0 0 0 0 0

7  0 0 0 -1 0 0 0 0 0 1

8  0 0 0 0 0 0 0 0 0 0

9  0 0 0 0 0 0 0 0 0 0

10  0 0 0 0 0 0 -1 0 0 0

M5=M3-M4

1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 38Прямая соединительная линия 391  0 0 6 0 0 0 0 0 0 0

4 0 0 0 4 0 0 5 0 0

12 0 0 7 0 3 4 0 0 0

6 0 9 0 0 0 2 0 0 0

10 4 0 0 0 0 8 1 0 1

6  0 0 7 0 0 0 3 0 0 0

7  0 0 4 10 8 0 0 0 9 0

8  0 9 0 0 1 0 0 0 0 3

9  0 0 0 0 0 4 9 0 0 6

10 0 0 0 0 11 0 8 7 10 0

1//3 5 = (1,3,4,7,5)=1

3//4,6,7

4//7

7//5,9

5//2,8,10

M6: 1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 36Прямая соединительная линия 371  0 0 1 0 0 0 0 0 0 0

2  0 0 0 0 0 0 0 0 0 0

3 -1 0 0 1 0 0 0 0 0 0

4  0 0 -1 0 0 0 1 0 0 0

5  0 0 0 0 0 0 -1 0 0 1

6  0 0 0 0 0 0 0 0 0 0

7  0 0 0 -1 1 0 0 0 0 0

8  0 0 0 0 0 0 0 0 0 0

9  0 0 0 0 0 0 0 0 0 0

10  0 0 0 0 -1 0 0 0 0 0

M7=M5-M6

1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 34Прямая соединительная линия 351  0 0 5 0 0 0 0 0 0 0

2  4 0 0 0 4 0 0 5 0 0

3 13 0 0 6 0 3 4 0 0 0

4  6 0 10 0 0 0 1 0 0 0

5 10 4 0 0 0 0 9 1 0 0

6  0 0 7 0 0 0 3 0 0 0

7  0 0 4 11 7 0 0 0 9 0

8  0 9 0 0 1 0 0 0 0 3

9  0 0 0 0 0 4 9 0 0 6

10  0 0 0 0 12 0 8 7 10 0

1//3 6 = (1,3,4,7,9,8)=1

3//4,6,7

4//7

7//5,9

9//8

8//2,10

M8 1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 32Прямая соединительная линия 331  0 0 1 0 0 0 0 0 0 0

2  0 0 0 0 0 0 0 0 0 0

3 -1 0 0 1 0 0 0 0 0 0

4  0 0 -1 0 0 0 1 0 0 0

5  0 0 0 0 0 0 -1 0 0 0

6  0 0 0 0 0 0 0 0 0 0

7  0 0 0 -1 1 0 0 0 0 0

8  0 0 0 0 0 0 0 0 -1 1

9  0 0 0 0 0 0 0 1 0 0

10  0 0 0 0 0 0 0 -1 0 0

M9=M7-M8

1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 30Прямая соединительная линия 311  0 0 4 0 0 0 0 0 0 0

2  4 0 0 0 4 0 0 5 0 0

3 14 0 0 5 0 3 4 0 0 0

4  6 0 11 0 0 0 0 0 0 0

5 10 4 0 0 0 0 10 1 0 0

6  0 0 7 0 0 0 3 0 0 0

7  0 0 4 12 6 0 0 0 9 0

8  0 9 0 0 1 0 0 0 1 2

9  0 0 0 0 0 4 9 -1 0 6

10  0 0 0 0 12 0 8 8 10 0

1//3 7 = (1,3,6,7,5,2,8)=2

3//4,6,7

6//7

7//5,9

5//2,8

2//8

8//9,10

M10 1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 28Прямая соединительная линия 291  0 0 2 0 0 0 0 0 0 0

2  0 0 0 0 -2 0 0 2 0 0

3 -2 0 0 2 0 0 0 0 0 0

4  0 0 -2 0 0 0 0 0 0 0

5  0 2 0 0 0 0 -2 0 0 0

6  0 0 0 0 0 0 2 0 0 0

7  0 0 0 0 2 -2 0 0 0 0

8  0 -2 0 0 0 0 0 0 0 2

9  0 0 0 0 0 0 0 0 0 0

10  0 0 0 0 0 0 0 -2 0 0

M11=M9-M10

1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 26Прямая соединительная линия 271  0 0 2 0 0 0 0 0 0 0

4 0 0 0 6 0 0 3 0 0

16 0 0 3 0 3 4 0 0 0

6 0 13 0 0 0 0 0 0 0

10 2 0 0 0 0 12 1 0 0

6  0 0 7 0 0 0 1 0 0 0

7  0 0 4 12 4 2 0 0 9 0

8  0 11 0 0 1 0 0 0 1 0

9  0 0 0 0 0 4 9 -1 0 6

10  0 0 0 0 12 0 8 10 10 0

1//3 8 = (1,3,6,7,5,2,8,9)=1

3//4,6,7

6//7

7//5,6,9

5//2,8

2//8

8//9

9//10

M12 1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 24Прямая соединительная линия 251  0 0 1 0 0 0 0 0 0 0

0 0 0 0 -1 0 0 1 0 0

-1 0 0 1 0 0 0 0 0 0

0 0 -1 0 0 0 0 0 0 0

0 1 0 0 0 0 -1 0 0 0

6  0 0 0 0 0 0 1 0 0 0

7  0 0 0 0 1 -1 0 0 0 0

8  0 -1 0 0 0 0 0 0 1 0

9  0 0 0 0 0 0 0 -1 0 1

10  0 0 0 0 0 0 0 0 -1 0

M13=M11-M12

1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 22Прямая соединительная линия 231  0 0 1 0 0 0 0 0 0 0

4 0 0 0 7 0 0 2 0 0

17 0 0 2 0 3 4 0 0 0

6 0 14 0 0 0 0 0 0 0

10 1 0 0 0 0 13 1 0 0

6  0 0 7 0 0 0 1 0 0 0

7  0 0 4 12 3 3 0 0 9 0

8  0 12 0 0 1 0 0 0 0 0

9  0 0 0 0 0 4 9 0 0 5

10  0 0 0 0 12 0 8 10 11 0

1//3 8 = (1,3,6,7,9)=1

3//4,6,7

6//7

7//9

9//10

M14 1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 20Прямая соединительная линия 211  0 0 1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

-1 0 0 1 0 0 0 0 0 0

0 0 -1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

6  0 0 0 0 0 0 1 0 0 0

7  0 0 0 0 0 -1 0 0 1 0

8  0 0 0 0 0 0 0 0 0 0

9  0 0 0 0 0 0 -1 0 0 1

10  0 0 0 0 0 0 0 0 -1 0

M15=M13-M14

1 2 3 4 5 6 7 8 9 10

Прямая соединительная линия 18Прямая соединительная линия 191  0 0 0 0 0 0 0 0 0 0

4 0 0 0 7 0 0 2 0 0

18 0 0 1 0 3 4 0 0 0

6 0 15 0 0 0 0 0 0 0

10 1 0 0 0 0 13 1 0 0

6  0 0 7 0 0 0 -1 0 0 0

7  0 0 4 12 3 4 0 0 8 0

8  0 12 0 0 1 0 0 0 0 0

9  0 0 0 0 0 4 10 0 0 4

10  0 0 0 0 12 0 8 10 11 0

A={1}

B={2,3,4,5,6,7,8,9,10}

φi)=5+2+3+2+1+1+2+1+1+1=19

Построим разрез на транспортной сети (рис. 5)

A/B={(1;2),(1;5),(1;4),(1;3)}

Рис. 5 - ИсходнаяГруппа 15транспортная сеть

Считаем пропускную способность разреза (выделен красным цветом на рис. 5):

R(A\B)=2+5+3+9=19

Таким образом, согласно теореме Форда-Фалкерсона построен максимальный поток, равный минимальной пропускной способности разреза сети.

  1. Задания для выполнения работы

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

  2. Предположим, что после выполнения упражнения 1 вы обнаруживаете, что при расчетах считали отсутствующей дугу (4,2) длины 1. Можно ли при этом воспользоваться уже полученными результатами или необходимо вновь в полном объеме провести вычисления по алгоритму Дейкстры?

Рис. 6

  1. Используя алгоритм Флойда, найдите кратчайшие пути между всеми вершинами графа, изображенного на рис. 6.

  2. Используя алгоритм Данцига, найдите кратчайшие пути между всеми парами вершин графа, изображенного на рис. 6. Сравните полученные результаты с результатами выполнения предыдущего упражнения.

  1. Используя обобщенный алгоритм Флойда, найдите первые три кратчайшие пути между всеми парами вершин на графе, изображенном на рис. 6. Выполните то же самое, используя обобщенный алгоритм Данцига.

  2. Предположим, что перед вами стоит задача найти кратчайшие маршруты полетов между всевозможными парами аэропортов Европы. При этом необходимо учесть, что из-за отсутствия возможности получения въездной визы аэропорты некоторых стран могут быть закрыты для тех или иных пассажиров. Выберите наиболее эффективный способ решения данной задачи.

  3. Влияет ли выбор нумерации вершин графа на эффективность алгоритма Флойда, алгоритма Данцига, алгоритма двойного поиска? Если влияет, то почему?

  4. В графе, изображенном на рис. 6, найдите три первые кратчайшие пути между вершиной 1 и всеми остальными вершинами.

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

  1. Предположим, что обобщенный алгоритм Флойда был использован для получения длин трех наилучших путей между всеми парами вершин в задаче поиска узких мест. Как полученные результаты могут быть использованы для поиска самих путей?

  2. Какие значения следует присваивать компонентам вектора при решении задачи о путях с усилениями?

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

Емкость

А

Б

В

Г

А

0,00

0,13

0,14

0,15

Б

0,08

0,00

0,13

0,08

В

0,17

0,12

0,00

0,18

Г

0,10

0,06

0,13

0,00

Найдите два наилучших способа перекачки нефти из емкости А в емкость Г.

  1. Предположим, что после выполнения всех вычислений по алгоритму двойного поиска вы обнаруживаете, что одна из длин дуг была задана неверно. При каких условиях часть полученных результатов может быть оставлена без изменений?

  2. Фармацевтический фирма планирует разработать в течение двенадцати месяцев новый препарат, который мог бы конкурировать с препаратом, недавно выпущенным главными конкурентами данной фирмы.

Разработка нового препарата осуществляется в четыре этапа, которые могут быть пройдены в медленном, нормальном или быстром темпе. Различные темпы прохождения этапов соответствуют различным уровням затрат времени и средств, которые задаются следующей таблицей (в таблице первая цифра — длительность в месяцах, вторая цифра — затраты в тыс. долл.):

AutoShape 27AutoShape 28

Этап

Теоретические исследования

Лабораторные эксперементы

Одобрение правительства

Сбыт

Темп

Медленный

5, 5

3, 6

6, 1

5, 8

Нормальный

4, 7

2, 8

4, 1

4,10

Быстрый

2, 10

1, 12

2, 3

3, 15



Найдите наилучший для фирмы способ разработки за двенадцать месяцев нового препарата при условии, что затраты фирмы не превысят 25 тыс. долл. Найдите второй наилучший способ достижения той же цели.

  1. Управляющий гостиницей должен забронировать номера для новобрачных на следующий месяц. Он получил определенное количество заявок на бронирование с различными датами приезда и отъезда. Каждое возможное бронирование номеров дает гостинице определенный доход, зависящий от того, кем являются клиенты (студенты, служащие, персонал авиакомпаний и т. д.). Каким образом в данном случае использовать алгоритм Дейкстры для выработки расписания бронирования номеров, приносящего гостинице максимальный доход? (Указание. Представьте каждую заявку на бронирование номера дугой, соединяющей вершины, соответствующие датам приезда и отъезда; в соответствующем графе будут отсутствовать контуры, и потому к нему может быть применен алгоритм Дейкстры.)

  1. Индивидуальные задания для выполнения самостоятельной работы

Задачи 1 – 25 (номера заданий соответственно 61 – 85). На заданной сети указаны пропускные способности ребер. Предполагается, что пропускные способности в обоих направлениях одинаковы. Требуется:

1) сформировать на сети поток максимальной мощности, направленный из истока I в сток S;

2) выписать ребра, образующие на сети разрез минимальной пропускной способности: