УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ФАКУЛЬТЕТ ИНФОРМАТИКИ И РОБОТОТЕХНИКИ
Отчет к курсовой работе по дисциплине
“Дискретная математика”
На тему: Задача о максимальном потоке, алгоритм Форда–Фалкерсона
Научный руководитель:
Васильева Л. И.
Выполнили:
студенты группы ПО-122
ФИРТ
Шаяхметов А.Р.
Корпухин М.В.
УФА
2007г
Задача о максимальном потоке, алгоритм Форда–Фалкерсона.
Содержание:
1. Введение ......................................................................................... стр. 2
2. Теория. Основные понятия .......................................................... стр. 3
3. Постановка задачи.......................................................................... стр. 9
4. Реализация ..................................................................................... стр. 10
5. Тестовый пример............................................................................ стр. 13
6. Заключение .................................................................................... стр. 14
7. Список литературы ....................................................................... стр. 15
Введение
Бурное развитие дискретной математики обусловлено прогрессом компьютерной техники, необходимостью создания средств обработки и передачи информации, а также представления различных моделей на компьютерах, являющихся по своей природе конечными структурами.
Задача о максимальном потоке в сети изучается уже более 60 лет. Интерес к ней подогревается огромной практической значимостью этой проблемы. Методы решения задачи применяются на транспортных, коммуникационных, электрических сетях, при моделировании различных процессов физики и химии, в некоторых операциях над матрицами, для решения родственных задач теории графов, и даже для поиска Web-групп вWWW. Исследования данной задачи проводятся во множестве крупнейших университетов мира.
60 лет назад, задача о максимальном потоке решалась simplexметодом линейного программирования, что было крайне не эффективно. Форд и Фалкресон предложили рассматривать для решения этой задачи ориентированную сеть и искать решение с помощью итерационного алгоритма. В течение 20 лет, все передовые достижения в исследовании данной задачи базировались на их методе. В 1970г. наш соотечественник, Диниц, предложил решать задачу с использованием вспомогательных бесконтурных сетей и псевдомаксимальных потоков, что намного увеличило быстродействие разрабатываемых алгоритмов. А в 1974 Карзанов улучшил метод Диница, введя такое понятие как предпоток. Алгоритмы Диница и Карзанова, как и исследования Форда и Фалкерсона, внесли огромный вклад в решение данной проблемы. На основе их методов 15 лет достигались наилучшие оценки быстродействия алгоритмов. В 1986г. появился третий метод, который также без раздумий можно отнести к фундаментальным. Этот метод был разработан Голдбергом и Таряном, и получил названиеPush-Relabelметода. Для нахождения максимального потока, он использует предпотоки и метки, изменяемые во время работы алгоритма.Push-Relabelалгоритмы очень эффективны, и исследуются до сих пор. И, наконец, в 1997г. Голдберг и Рао предложили алгоритм, присваивающий дугам неединичную длину. Это самый современный из всех известных мне алгоритмов.
В нашей курсовой работе, мы рассмотрим и реализуем на языке программирования C++ алгоритм решения задачи о максимальном потоке, предложенный Фордом и Фалкерсоном.