Главная » Просмотр файлов » Алгоритмы - построение и анализ

Алгоритмы - построение и анализ (1021735), страница 154

Файл №1021735 Алгоритмы - построение и анализ (Алгоритмы - построение и анализ) 154 страницаАлгоритмы - построение и анализ (1021735) страница 1542017-07-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 154)

° Базовый алгоритм Форда-Фалкерсоиа При выполнении каждой итерации метода Форда-Фалкерсона мы находим некоторый увеличивающий путь р, и поток у вдоль каждого ребра данного пути увеличивается на величину остаточной пропускной способности су (р). Приведенная далее реализация данного метода вычисляет максимальный поток в графе С = (К Е) путем обновления потока у [и,п] между каждой парой вершин и и и, соединенных ребром'. Если вершины и и и не связаны ребром ни в одном направлении, неявно предполагается, что Г" [и, и] = О. Предполагается, что значения пропускных способностей задаются вместе с графом и с(и, и) = О, если (и, н) ф Е.

Остаточная пропускная способность су (и, и) вычисляется по формуле (26.5). В коде процедуры су (р) в действительности является просто временной переменной, в которой хранится остаточная пропускная способность пути р. 'Квадратные скобки используются, когда идентификатор (в данном случае г) трактуется вак изменяемое поле, а когда зто функпня — используются круглые скобки. Часть Ч1.

Алгоритмы для работы с графами 750 РО80 Вл.кензо(С> я, т) 1 1ог (для) каждого ребра (и, и) Е Е1С] 2 По Ди, и] +- О У[о, и] О 4 и'И!е существует путь р из и в 1 в остаточной сети Су 5 я1о су(р) +- пйп (су(и, и): (и, и) принадлежит р) б 1ог (для) каждого ребра (и, и) ш р 7 Йо 7" '1и, и] - Ди, и] + су(р) 8 Л.л] --Лъ,.] Приведенный псевдокод алгоритма Рокп Рзл.кбкбом является расширением приведенного ранее псевдокода Ропп Рпькекзон Мнтноп. На рис. 26.5 показаны результаты каждой итерации при тестовом выполнении. Строки 1-3 инициализируют поток 7" значением О. В цикле зчЬПе в строках 4-8 выполняется неоднократный поиск увеличивающего пути р в Су„и поток 7" вдоль пути р увеличивается на остаточную пропускную способность су (р).

Когда увеличивающих путей больше нет, поток 7" является максимальным. Остаточная сеть на рис. 26.5а — это исходная сеть С; поток 1', показанный на рис. 26.5д, является максимальным потоком. Анализ метода Форда-Фалкерсона Время выполнения процедуры РОкп РтзькбкзОи зависит от того, как именно выполняется поиск увеличивающего пути р в строке 4. При неудачном методе поиска алгоритм может даже не завершиться: величина потока будет последовательно увеличиваться, но она не обязательно сходится к максимальному значению потоказ.

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

В таком предположении непосредственная реализация процедуры РОкп РОз кинзой имеет время работы О (е ] г" ]), где 7"* — максимальный поток, найденный данным алгоритмом. Анализ проводится следующим образом. Выполнение строк 1-3 занимает время 9 (Е). Цикл ткЬПе в строках 4-8 выполняется не бо- Метод Форда-Фалкерсона может работать бесконечно, только если значения пропускной способности ребер яаляются иррациональными числами.

Глава 26. Задача о максимальном потоке 751 1// ( и Рис. 26.5. Работа базового алгоритма Форда-Фалкерсона (послеловательные итерации цикла чгвйе). В левой части кажлого рисунка показана остаточная сеть С/ с выделенным увеличивающим путем р; в правой части показан новый поток у, который получается в результате прибавления ~р к ~ лес ~~'~ раз, поскольку величина потока за каждую итерацию увеличивается по крайней мере на одну единицу.

Работа внутри цикла зтЫ1е зависит от того, насколько эффективно организовано управление структурой данных, используемой для реализации сети С = (У, Е). Предположим, что мы поддерживаем структуру данных, соответствующую ориентированному графу С' = (К, Е"), где Е' = ((и, о): (и, о) б Е или (о, и) б Е). Часть Ч1. Алгоритмы для работы с графами 752 ф~э ъд, Ж ~'йд„ .-!п~Р„о а) б) в) Рис.

26.6. Транспортная сеть, лля которой выполнение процедуры Ровп Р~л.кнкзом мо- жет занимать время тт(Е (~'(), (,1'*) = 2000000 Алгоритм Эдмоидса-Карпа Указанный недостаток метода Форда-Фалкерсона можно преодолеть, если реализовать вычисление увеличивающего пути р в строке 4 как поиск в ширину, т.е. если в качестве увеличивающего пути выбирается кратчаймшй путь из з Ребра сети С являются также ребрами графа С', поэтому в этой структуре данных можно довольно легко хранить пропускные способности и потоки.

Для данного потока г" в С, ребра остаточной сети Сг состоят из всех ребер (и, ц) графа С', таких что с (и, о) — г" 1и, и1 ф О. Таким образом, время поиска пути в остаточной сети составляет 0 (У+ Е') = 0 (Е), если используется только поиск в глубину или поиск в ширину. Каждая итерация цикла ттп11е занимает время О (Е), так что в результате общее время выполнения процедуры Рокп Ри.кнкзглч составляет О (Е 1,г"' ~). Когда значения пропускных способностей являются целыми числами и оптимальное значение потока ~~" ~ невелико, время выполнения алгоритма ФордаФалкерсона достаточно неплохое. Но на рис. 26.6а показан пример того, что может произойти в простой транспортной сети, с большим значением ~ Г" 1 Величина максимального потока в данной сети равна 2 000 000: 1 000 000 единиц потока идет по пути з -+ и -+ 1, а другие 1 000 000 единиц идут по пути з -~ ц -+ т.

Если первым увеличивающим путем, найденным процедурой Роищ Ргл.кнкзом, является путь з и с -> 1, как показано на рис. 26.6а, поток после первой итерации имеет значение 1. Полученная остаточная сеть показана на рис. 26.66. Если в ходе выполнения второй итерации найден увеличивающий путь з — о -+ и -> т, как показано на рис. 26. 66, поток станет равным 2. На рис. 26.6в показана соответствующая остаточная сеть. Можно продолжать процедуру, выбирая увеличивающий пуп з и — + ц — 8 для итераций с нечетным номером а -~ и и г для итераций с четным номером.

В таком случае нам придется выполнить 2000000 увеличений, при этом величина потока на каждом шаге увеличивается всего на 1 единицу. Глава 26. Задача о максимальном потоке 753 в ~ в остаточной сети, где каждое ребро имеет единичную длину (вес). Такая реализация метода Форда-Фалкерсона называется алгоритмом Эдмондса-Карпа (ЫшоиЬ-Кагр а18опйип). Докажем, что время выполнения алгоритма ЭдмондсаКарпа составляет О (г' Ез). Анализ зависит от расстояний между вершинами остаточной сети Су. В следующей лемме длина кратчайшего пути из вершины и в и в остаточной сети Су, где каждое ребро имеет единичную длину, обозначена как бу (и, и). Лемма 26.8.

Если для некоторой транспортной сети С = (У, Е) с источником з и стоком т выполняется алгоритм Эдмондса-Карпа, то для всех вершин и е е Ъ' — (з, 1) длина кратчайшего пути бу (з, и) в остаточной сети Су монотонно возрастает с каждым увеличением потока. б~(з,и) = б'~(з,и) — 1. (26.7) Исходя из того, как мы выбирали и, можно утверждать, что длина пути до вер- шины и не уменьшилась, т.е. б~У(з,и) > бу(з,и).

(26.8) Мы утверждаем, что в таком случае (и, и) ф Е~. Почему7 Если (и, и) Е Е~, тогда справедливо следующее: бу (з,и) < бу (з,и)+ 1 < < бу~ (з, и) + 1 = = б~~(з,и) (согласно лемме 24.10, неравенство треугольника) (согласно неравенству (26.8)) (согласно уравнению (26.7)), что противоречит предположению б'~ (з, и) < бу (з, и). Теперь посмотрим, как может получиться, что (и, и) ф Ег, но (и, и) Е Е~? Увеличение должно привести к возрастанию потока из и в и. Алгоритм ЭдмондсаКарпа всегда увеличивает поток вдоль кратчайших путей, поэтому последним Доказательство.

Предположим, что для неюторой вершины и Е 'г' - (з, г) существует такое увеличение потока, юторое приводит к уменьшению длины кратчайшего пути из з в и, и покажем, что это предположение приведет нас к противоречию. Пусть г" — поток, который был непосредственно перед первым увеличением, приведшим к уменьшению длины некого кратчайшего пути, а Г"' — поток сразу после этого увеличения. Пусть и — вершина с минимальной длиной кратчайшего пути б~ (з, и), которая уменьшилась в результате увеличения потока, т.е. б~ (з, и) < < бу (з, и).

Пусть р = з -+ и — и — кратчайший путь от з к и в С~~, таюй что (и, и) Е Е~ и Часть Ч1 Алгоритмы для работы с графами 754 ребром кратчайшего пути из з в и в Су является ребро (и, и). Следовательно, бу(в,и) = бу (з,и) — 1 < < б~ (в,и) — 1 = = б~(в,и) — 2 (согласно неравенству (26.8)) (согласно уравнению (26.7)), что противоречит предположению б~~ (з, и) < бу (з, и), а значит, наше предположение о существовании вершины и не верно. ы Следующая теорема устанавливает верхний предел количества итераций алгоритма Эдмондов-Карпа.

Теорема 26.9. Если для некоторой транспортной сети С = (У, Е) с источником з и стоком 1 выполняется алгоритм Эдмондов-Карпа, то общее число увеличений потока, выполняемое данным алгоритмам, составляет О (У Е). бг (з, и) = бу (в, и) + 1.

После того как поток увеличен, ребро (и, и) исчезает из остаточной сети. Оно не может появиться в другом увеличивающем пути, пока не будет уменьшен поток из и в и, а это может произойти только в том случае, если на некотором увеличивающем пути встретится ребро (и, и). Если в этот момент поток в сети С составлял Г"', справедливо следующее равенство: б~~(в,и) = б'~ (з,и) + 1. Поскольку, согласно лемме 26.8, бу (в, и) < б' (в, и), получаем: б~ (з,и) = б~у (з, и) + 1 > бу (з, и) + 1 = бу (з,и) + 2.

Характеристики

Тип файла
DJVU-файл
Размер
18,3 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6551
Авторов
на СтудИзбе
299
Средний доход
с одного платного файла
Обучение Подробнее