АННОТАЦИЯ 2
ВВЕДЕНИЕ 5
ГЛАВА 1 ПОСТАНОВКА ЗАДАЧИ НА ИССЛЕДОВАНИЕ 7
1.1 Описание задачи о максимальном потоке 7
1.2 Математическая модель задачи о максимальном потоке 8
1.3 Приложения задачи о максимальном потоке 10
ГЛАВА 2 АЛГОРИТМЫ ПОИСКА МАКСИМАЛЬНОГО ПОТОКА 13
2.1 Алгоритм Форда-Фалкерсона 13
2.2 Алгоритм Эдмондса-Карпа 17
2.3 Алгоритм Диница 22
2.4 Метод масштабирования потока 26
2.5 Сравнение алгоритмов поиска максимального потока 29
ГЛАВА 3 ТЕСТИРОВАНИЕ АЛГОРИТМОВ ПОИСКА МАКСИМАЛЬНОГО
ПОТОКА 32
3.1 Исходные данные для тестирования 32
3.2 Тестирование алгоритмов 36
3.2.1 Тестирование на случайных графах 36
3.2.2 Тестирование на ациклических разреженных графах 39
3.2.3 Тестирование на полных графах 41
3.2.4 Тестирование на двудольных графах 43
3.2.5 Тестирование на графах решётках 45
3.3 Выводы по тестированию 49
ЗАКЛЮЧЕНИЕ 52
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 53
АННОТАЦИЯ
Тема бакалаврской работы: «Сравнительный анализ алгоритмов поиска максимального потока». Актуальность работы заключается в том, что при решении различных практических задач возникает необходимость переслать что-либо из одной точки в другую. Для решения данной проблемы может использоваться модель задачи о максимальном потоке. Поэтому выбор правильного алгоритма поиска максимального потока имеет большое значение, так как это чревато неэффективным или неточным решением исходной проблемы. Также, к задаче поиска максимального потока сводятся и другие важные оптимизационные практические задачи.
Объект исследования: процесс поиска максимального потока.
Предмет исследования: алгоритмы Форда-Фалкерсона, Эдмондса-Карпа, Диница поиска максимального потока.
Цель: выявление преимуществ и недостатков алгоритмов поиска
максимального потока для их правильного использования на практике.
Первая глава работы посвящена описанию задачи о максимальном потоке, ее математической модели и применениях.
Во второй главе описываются алгоритмы Форда-Фалкерсона, Эдмондса- Карпа, Диница, а также приведены доказательства корректности и сложности данных алгоритмов.
Третья глава посвящена тестированию алгоритмов и их сравнительному анализу.
Бакалаврская работа выполнена на 52 страницах, состоит из введения, трёх глав, заключения, списка литературы, состоящего из 22 литературных источников, 31 рисунка и 2 таблиц.
Задача максимального потока была решена еще в середине прошлого века, но несмотря на это, она до сих пор не теряет своей актуальности. Как правило, поток определяет способ передачи чего-либо из одной точки в другую. К примеру, перевозка груза от завода до распределительного склада и от склада до самих магазинов; движение людей от мест проживания к местам работы; доставка писем от отправителей к получателям. Так же, как будет показано дальше, к потокам можно свести и ряд других задач, которые, с первого взгляда, с потоками ничего общего не имеют. [6]
Несмотря на большое разнообразие ситуаций, связанных с потоками, в них возникает ряд определенных проблем. Примерами таких проблем могут быть максимизация объемов перевозки товара и минимизация времени этих перевозок, максимизация прибыли и минимизация суммарных затрат при выполнении каких-либо работ. [1][3]
Задача нахождения максимального потока является одной из наиболее изучаемых задач комбинаторной оптимизации и представляет собой частный случай задачи линейного программирования. Она была впервые сформулирована в 1954 году Харрисом как упрощенная модель советской железнодорожной системы движения. [3][8] Позже, в 1955 году Форд и Фалкерсон создали первый алгоритм нахождения максимального потока. [4][5] Но, несмотря на то, что данный алгоритм был не столь эффективен, он стал трамплином к более производительным и элегантным решениям.
Как уже было сказано, задача нахождения потока имеет широкое применение в реальных задачах, а значит существует необходимость в ее эффективном решении. Отсюда возникает необходимость в алгоритмах поиска потока, имеющих наибольшую производительность. Но, несмотря на широкий ряд существующих алгоритмов, какого-то универсального, подходящего для любой задачи, скорее всего не существует. В каких-то случаях лучше использовать один алгоритм, в каких-то другой.
Данная работа посвящена как теоретическому, так и практическому сравнительному анализу алгоритмов поиска максимального потока.
Целью бакалаврской работы является выявление сильных и слабых сторон алгоритмов поиска максимального потока в некоторых ситуациях для их правильного и эффективного использования на практике.
Объект исследования - процесс поиска максимального потока.
Предметом исследования являются алгоритмы поиска максимального потока Форда-Фалкерсона, Эдмонса-Карпа, Диница.
Для достижения поставленной цели необходимо выполнить следующие задачи:
• рассмотреть задачу о максимальном потоке и ее применения;
• рассмотреть алгоритмы решения задачи о максимальном потоке;
• провести теоретический сравнительный анализ алгоритмов;
• изучить различные модели сетей;
• разработать компьютерную программу генерирования сетей;
• провести генерирование тестовых данных;
• разработать компьютерную программу, реализующую алгоритмы
поиска максимального потока;
• провести тестирование алгоритмов на сгенерированных данных;
• провести сравнительный анализ алгоритмов на основе результатов тестирования.
Бакалаврская работа состоит из введения, трех глав и заключения.
В первой главе рассказывается о задаче поиска максимального потока, ее математической модели и применениях.
Во второй главе дано описание алгоритмов поиска максимального потока. Приведены доказательства корректности и асимптотические оценки работы алгоритмов, а также проведен теоретический сравнительный анализ их работы.
Третья глава посвящена генерированию тестовых данных, тестированию алгоритмов и их сравнительному анализу на основе результатов тестирования.
В ходе выполнения бакалаврской работы была изучена задача о максимальном потоке и ее применения. Она актуальна как в классических проблемах, в которых необходимо переслать что-то из одной точки в другую, так и в весьма необычных, таких как сегментация изображений или нахождение циркуляции. Поэтому эффективное решение задачи о максимальном потоке имеет большое значение.
Были изучены алгоритмы Форда-Фалкерсона, Эдмондса-Карпа, Диница, позволяющие решать задачу поиска максимального потока; а также метод масштабирования потока, улучшающий асимптотическую сложность всех рассматриваемых алгоритмов. Был проведен анализ корректности и сложности каждого алгоритма.
Далее были сгенерированы исходные данные для тестирования алгоритмов и произведено само тестирование.
По результатам тестирования и теоретического анализа алгоритмов был проведен их сравнительный анализ. На практике самым эффективным алгоритмом оказался классический алгоритм Диница, хотя асимптотически наиболее быстрым является вариант данного алгоритма с использованием масштабирования потока. Все же остальные алгоритмы относительно друг друга сработали так, как и ожидалось.
Данный результат показывает, что при решении какой-либо реальной задачи, которая решается с помощью поиска максимального потока, недостаточно выбрать алгоритм, который в теории является наиболее эффективным, так как на практике он может показать не тот результат, который ожидался. Лучше провести тестирование алгоритмов на данных максимально приближенным к реальным и выбрать нужный алгоритм по результатам данного тестирования.
1. Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн. Алгоритмы: построение и анализ. — М.: «Вильямс», 2017. — 1328 с.
2. Асанов, М.О. Дискретная математика: Графы, матроиды, алгоритмы / М.О. Асанов, В.А. Баранский, В.В. Расин. - СПб. : Лань, 2017. - 368 с.
3. Harris, T.E. Fundamentals of a Method for Evaluating Rail Net Capacities / T.E. Harris, F.S. Ross // 1955.
4. Ford, L.R. Maximal flow through a network / L.R. Ford, D.R. Fulkerson // Canadian Journal of Mathematics. - 1956.
5. Ford, L.R. Flows in Networks / L.R. Ford, D.R. Fulkerson. - Princeton : Princeton University Press, 1962. - 332 с.
6. Майника, Э. Алгоритмы оптимизации на сетях и графах / Э. Майника. - М. : Мир, 2013. - 324 с.
7. Malhotra, V.M. An O(|V|3) algorithm for finding maximum flows in networks / V.M. Malhotra, M. Pramodh Kumar, S.N. Maheshwari // Information Processing Letters. - 1978.
8. Schrijver, A. On the history of the transportation and maximum flow problems / A. Schrijver // Mathematical Programming. - 2014. - С. 437-445
9. Пападимитриу Х. Комбинаторная оптимизация. Алгоритмы и сложность. / Х.Пападимитриу, К. Стайглиц, пер. с англ. - М.: Мир, 2017 - 512 с.
10. Dinitz, E.A. Algorithm for solution of a problem of maximum flow in a network with power estimation / E.A. Dinitz // Doklady Akademii Nauk SSSR. - 1970. - Т. 194, № 4. - С. 1277-1280
11. Juan, Olivier Capacity Scaling for Graph Cuts in Vision / Olivier Juan, Yuri Boykov // IEEE 11th International Conference on Computer Vision. - 2007.
12. Sleator, D.D. A data structure for dynamic trees / D.D. Sleator, R.E. Tarjan // Journal of Computer and System Sciences. - 2014. - . - Т. 26, № 3. - С. 362-391
13. Акулич, Н.А. Математическое программирование в примерах и задачах / Н.А. Акулич. - М. : Высшая школа, 2015.
14. Ахо А., Структуры данных и алгоритмы. / А. Ахо, Дж. Ульман, Дж. Хоп-крофт, пер. с англ. - М: Вильямс, 2015 г - 384 с.
15. Павловская Т. А., Щупак Ю. А. "C/C++. Структурное и объектно-ориентированное программирование". — СПб: 2017. — 352 с.
16. Скиена С. С., Олимпиадные задачи по программированию. Руководство поподготовке к соревнованиям. / С.С. Скиена, М.А. Ревилла, пер. с англ. - М.:Кудиц-Образ, 2015 - 416 с.
... Всего источников – 22.