- •Часть 2
- •Содержание
- •1. Рабочая программа курса "математические основы информатики"
- •Часть 2.
- •Предисловие
- •Практические занятия
- •Литература (основная)
- •Литература (дополнительная)
- •2. Краткий конспект лекций
- •2.1.Задачи целочисленного булева программирования
- •2.2. Каноническая и многомерная задачи о ранце и их интерпретации
- •2.3. Задача коммивояжера и ее интерпретации
- •2.4. Задачи о назначениях и их интерпретации
- •2.5. Задача целочисленного линейного программирования в общей постановке
- •2.6. Метод ветвей и границ
- •2.7. Общая схема метода ветвей и границ Джеффриона-Марстена
- •2.8. Решение канонической задачи о ранце методом ветвей и границ
- •2.9. Решение многомерной задачи о ранце методом ветвей и границ
- •2.10. Решение задачи коммивояжера методом ветвей и границ
- •2.11. Решение задачи целочисленного линейного программирования методом ветвей и границ
- •2.12. Решение задачи о ранце с использованием табличной схемы
- •2.13. Решение задачи о ранце с использованием рекуррентных соотношений динамического программирования
- •2.14. Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования
- •2.15. Задачи теории расписаний
- •2.16. Задачи теории расписаний с одним обслуживающим прибором
- •2.17. Перестановочный прием в задачах теории расписаний
- •2.18. Теорема Лившица-Кладова
- •2.19. Задачи теории расписаний в общей постановке
- •2.20. Задача Джонсона. Графики Ганта
- •2.21.Постановка задачи теории расписаний как задачи частично-целочисленного линейного программирования
- •2.22. Сетевые модели. Расчет временных характеристик сетевых моделей
- •2.23. Потоки в сетях. Теорема Форда-Фалкерсона о максимальном потоке
- •2.24. Алгоритм Форда-Фалкерсона нахождения максимального потока в транспортной сети
- •2.25. Решение задачи о назначениях алгоритмом Куна
- •2.26. Минимаксные задачи о назначениях
- •2.27. Задачи о назначениях с индивидуальными предпочтениями
- •3. Задачник с решением типовых задач
- •3.1. Решение задачи о ранце
- •3.1.1. Решение задачи о ранце методом ветвей и границ
- •3.1.2. Решение задачи о ранце методом динамического программирования (табличная форма)
- •3.1.3. Решение задачи о ранце методом динамического программирования (рекуррентная схема)
- •3.1.4. Решить следующие задачи о ранце :
- •3.2. Решение задачи коммивояжера
- •3.2.1. Решение задачи коммивояжера методом ветвей и границ
- •3.2.2. Решение задачи коммивояжера с использованием рекуррентных соотношений динамического программирования
- •3.2.3. Решить задачи коммивояжера:
- •3.3. Решить задачу Джонсона для двух станков, построить график Ганта для оптимального расписания
- •3.4. Решение задачи о назначениях алгоритмом Куна
- •3.5. Решение минимаксных (максиминных) задач о назначениях
- •3.6. Решить задачи о назначениях с индивидуальными предпочтениями
- •3.7. Нахождение максимального потока в транспортной сети алгоритмом Форда-Фалкерсона
- •3.8. Расчет временных характеристик сетевых моделей
- •Рассчитать временные характеристики сетевой модели
- •4. Контрольные задания
- •5. Вопросы к экзамену
- •3.Задачи целочисленного булева программирования.
- •6.Задача коммивояжера и ее интерпретации.
- •8.Задача целочисленного линейного программирования в общей постановке.
2.23. Потоки в сетях. Теорема Форда-Фалкерсона о максимальном потоке
Пусть G=(V,A) - взвешенный ориентированный (n,m) граф и R= r(i,j) - его матрица весов, элемент которой r(i,j) - вес дуги (i,j), (i,j) A. Пусть в графе G нет петель и контуров. Выделим в нём две особые вершины - вершину “исток” (u) и вершину “сток” (s). Вершины графа G мы будем интерпретировать как географические пункты, дуги - дороги их соединяющие, веса дуг - пропускные способности дорог, т.е. количество груза которое можно перевезти по дороге в единицу времени. Таким образом, построенную сетевую модель называют транспортной сетью. Задача поиска максимального потока в транспортной сети заключается в определении максимально возможного объема груза, который может быть перевезен из истока в сток по существующим дорогам с заданными пропускными способностями.
Математическая модель.
В качестве неизвестных математической модели выберем nn матрицу X= x(i,j) , элемент которой x(i,j) - означает количество груза, которое в единицу времени будет перевезено из пункта i в пункт j, (i,j) A
Ограничения математической модели.
x(i,j) r(i,j), (i,j) A. (1)
По дороге (i,j) нельзя перевозить груза больше, чем пропускная способность дороги.
x(i,j) = - x(j,i), (i,j) A. (2)
Количество груза, перевезенное из пункта i в пункт j равен количеству груза с обратным знаком, которое будет перевезено в обратном направлении.
x(i,j)= 0 , если i=j, (i,j) A. (3)
Внутри промежуточных пунктов груз не перевозится.
x(i,j) = 0, если i V\ {u,s}. (4)
В промежуточных пунктах груз не пропадает.
x(u,j) 0. (5)
Из истока отправляется неотрицательное количество груза.
Матрица X, удовлетворяющая условиям (1) -(5), называется потоком в транспортной сети.
Постановка оптимизационной задачи.
В качестве критерия оптимальности выберем функционал
F(X) = x(u,j) max. (6)
Критерий (6) означает максимизацию величины груза, который может быть перевезен по транспортной сети.
Полученная задача (1) -(6) поиска максимального потока в транспортной сети является задачей линейного программирования. Её решение может быть осуществлено, например, симплекс-методом. Однако специфика задачи позволила для её решения построить более эффективный метод, основанный на теореме Форда-Фалкерсона.
В дальнейшем будем называть величину F(X) - мощностью потока X. Поток X(0), на котором достигается оптимальное решение задачи (1) -(6), называется максимальным потоком.
Назовем (S(u),S(s)) - сечением сети, если пара множеств S(u) и S(s) является разбиением множества вершин V, при котором u S(u), s S(s).
Обозначим через Q(S(u), S(s)) = x(i,j) - величину потока через сечение (S(u),S(s)), здесь суммирование происходит, соответственно, по всем вершинам множества S(u) и всем вершинам множества S(s).
Обозначим через K(S(u), S(s)) = r(i,j) - пропускную способность сечения (S(u),S(s)), здесь суммирование происходит, соответственно, по всем вершинам множества S(u) и всем вершинам множества S(s).
Лемма.
Мощность любого потока не больше пропускной способности любого сечения.
Доказательство.
Надо доказать, что F(X) K(S(u), S(s)), для любого потока X и любого сечения (S(u), S(s)).
Из условий (4), просуммировав его по всем i , i S(u)\{u}, получим
(i,j) =0, (7)
(здесь суммирование производится, соответственно, по i S(u)\{u} и j V).
Из условий (2) следует, что
x(i,j) =0, (8)
если суммирование берется по одному и тому же произвольному подмножеству S множества V.
Рассмотрим величину
F(X) = x(u,j) = x(u,j) + x(i,j), где во втором слагаемом суммирование берется, соответственно, по i S(u)\{u} и i V, т.е. по условию (7) второе слагаемое равно 0. Преобразуем полученное выражение
x(i,j) + x(i,j), где в первом слагаемом суммирование берется, соответственно, по i S(u) и по i S(s), т.е. оно определяет величину потока через (S(u),S(s)) - сечение, а во втором слагаемом суммирование берется по одному и тому же множеству S(u), т.е. по условию (8), второе слагаемое равно нулю. Учитывая условия (1) математической модели, получаем доказательство леммы.
Теорема Форда-Фалкерсона “О максимальном потоке в транспортной сети”.
Если для некоторого потока найдется сечение такое, что величина потока через него равна пропускной способности этого сечения, то этот поток максимален.
Доказательство.
Пусть X(0) - поток, для которого существует сечение (S(u) , S(s)), такое, что величина потока X(0) через него равна величине K(S(u), S(s)) - пропускной способности (S(u) , S(s)) сечения.
Из доказательства леммы следует, что x(u,j) = x(i,j) = L(X)
где суммирование берется, соответственно, по i S(u) и по j S(s).
Будем доказывать теорему от противного.
Пусть существует поток X’ , такой, что F(X’) > F(X(0)), т.е.
F(X’) = x’(u,j) = L(X’) > L(X(0)) = K(S(u), S(s)), что противоречит лемме.
Теорема доказана.