Главная » Просмотр файлов » Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013)

Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013) (1162189), страница 172

Файл №1162189 Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013) (Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013)) 172 страницаТ. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013) (1162189) страница 1722019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Основные операции Как следует из предыдущих рассуждений, в алгоритме проталкивания пред- потока выполняются две основные операции: проталкивание избытка потока от вершины к одной из соседних с ней вершин и подъем вершины. Применение этих операций зависит от высот вершин, которым мы сейчас дадим более точные определения. Пусть С = (17, Е) представляет собой транспортную сеть с истоком в и стоком г, а З является некоторым предпотоком в С. Функция )з: 17 -+ 1й является функцией высояиы (Ье)яЬ! Пзпс()оп), )г(в) = !17(, )з(г) = О и Ь(и) < )з(о)+1 для каждого остаточного ребра (и,тг) е Е~.

Сразу же можно сформулировать следующую лемму. зв лншрятуре функпия высоты обычно незымегся функцией ресшояния (жзеиже йшсйоп), е высоте вершины нвзывштся мепвзй рвсстояния (жнвпсе !вье!). Мы используем термин "высоте", посюльку он лунце соглвсуется с интуитивным обосноввнием алгоритма. Высоте вершины связенв с ее расстоянием от стока Г, иморое можно найти с помошью поиске в ширину в ьгт. Часть Ку. Алгоритмы для работы с графами 77В Л гб.уг Пусть С = (17, Е) представляет собой транспортную сеть, а / является некоторым предпотоком в С, и пусть Ь вЂ” функция высоты, заданная на множестве И. Для любых двух вершин и, о е 1' справедливо следующее утверждение: если Ь(и) > Ь(о) + 1, то (и, о) не является ребром остаточной сети.

Операция проталкивания Основная операция РОЗН(и, о) может применяться тогда, когда и является переполненной вершиной, су(и, о) > О и Ь(и) = Ь(о) + 1. Представленный ниже псевдокод обновляет предпоток / и избыточный поток для и и о. Предполагается, что остаточные пропускные способности су(и, о) при заданных / и с можно вычислить за фиксированное время. Излишний поток в вершине и поддерживается в виде атрибута и, е, а высота вершины и — в виде атрибута и.Ь. Выражение уеду(и, о) представляет собой временную переменную, в которой хранится количество потока, которое можно протолкнуть из и в о.

РОЗН(и, о) 1 // Применяется при: вершина и переполнена, // су(и, о) > О и и. Ь = о. Ь + 1. 2 // Действие: проталкивает азу(и,о) = ппп(и. е, су(и, о)) // единиц потока из и в о. 3 азу(и,о) = т1п(и, е, су(и,о)) 4 И'(и,о) Е Е 5 (и,о)./ = (и,о)./+ с1у(и,о) 6 е1яе (о,и)./ = (о,и)./ — сау(и,о) 7 и. е = и. е — с) у(и, о) 8 о, е = о.

е + Ьу(и, о) Процедура Рнзн работает следующим образом. Поскольку вершина и имеет положительный избыток и.е и остаточная пропускная способность ребра (и,о) положительна, можно увеличить поток из и в о на величину у)ьу(и,о) ппп(и. е, су(и, о)), при этом избыток и. е не становится отрицательным и не будет превышена пропускная способность с(и,о). В строке 3 вычисляется значение с1у(и,о), после чего в строках 4 — 6 обновляется /.

В строке 5 увеличивается поток в ребре (и, о), поскольку мы проталкиваем поток через остаточное ребро. которое также является и исходным ребром. В строке 6 уменьшается поток в ребре (о, и), поскольку остаточное ребро в действительности обратно ребру в исхолной сети. Наконец в строках 7 и 8 обновляются избыточные потоки в вершины и и о.

Таким образом, если / являлся предпотоком перед вызовом процедуры Рнзн. он останется предпотоком и после ее выполнения. Обратите внимание, что в коде процедуры РОЗН ничто не зависит от высот вершин и и о; тем не менее мы запретили вызов процедуры, если не выполнено условие и. Ь = о. Ь + 1. Таким образом, избыточный поток проталкивается вниз только при разности высот, равной 1. Согласно лемме 26.12 между двумя вершинами, высоты которых отличаются более чем на 1, не сушествует остаточных 779 Глава ЗД Задача о маесамалвном вотоее ребер, а значит, поскольку атрибут Ь является функцией высоты, мы ничего не добьемся, разрешив проталкивать вниз поток при разности высот, превышающей 1.

Процедура Рцзн(и, и) называется проталкиванием (рпзЬ) из и в и. Если операция проталкивания применяется к некоторому ребру (и, и), выходящему из вершины и, будем говорить, что операция проталкивания применяется к и. Если а результате ребро (и, и) становится насыщенным (загшагед) (после проталкивания с/(и, и) = О), то это насыщающее проталкивание (зацпаг)пя рпзЬ), в противном случае это ненасыщающее проавалкивание (попзаппаг)пя рцзЬ). Если ребро становится насыщенным, оно исчезает из остаточной сети. Один из результатов ненасышаюшего проталкивания характеризует следующая лемма. Л гбв После ненасышаюшего проталкивания из и в и вершина и более не является переполненной.

Доказательство. Поскольку проталкивание ненасыщаюшее, фактическое количество посланного потока аь/(и, и) должно быть равно величине и. е непосредственно перед проталкиванием. Поскольку избыток и. е уменьшается на зту величину, после проталкивания он становится равным О. Операция подъема Основная операция Квълввь(и) применяется, если вершина и переполнена и если и. Ь < и. Ь для всех ребер (и, и) е Е/. Иными словами, переполненную вершину и можно подвергнуть подъему, если все вершины и, для которых имеется остаточная пропускная способность от и к и, расположены не ниже и, так что протолкнуть поток из и нельзя. (Напомним, что по определению ни исток в, ни сток Г не могут быть переполнены; следовательно, ни в, ни Г нельзя подвергать подъему.) Кн.лвн. (и) 1 // Применяется при: вершина и переполнена, и для всех и Е $', таких, // что(и,и) ~ Е/, имеем и.Ь < и.Ь.

2 // Деиствие: увеличивает высоту и. 3 и.Ь = 1+пни(и.Ь: (и,и) е Е/'1 Когда вызывается операция Кн.лвн.(и), мы говорим, что вершина и подвергается подъему (ге!аЬе!ед). Заметим, что когда выполняется подъем и, Е/ должно содержать хотя бы одно ребро, выходящее из и, чтобы минимизация в коде операции осуществлялась по непустому множеству.

Это свойство вытекает из предположения о том, что вершина и переполнена, что, в свою очередь, говорит нам, что и.с = ~/(и,и) — ~/(и,и) > О. чсу Поскольку все потоки неотрицательны, должна быть по крайней мере одна вершина и, такая, что (и,и)./ > О. Но тогда с/(и,и) > О, откуда вытекает, что Часть ст. Алгоритмы длл работы с графами 780 (и, с) е Е7.

Таким образом, операция йньАннь(н) назначает н наибольшую вы- соту, допускаемую наложенными на функцию высоты ограничениями. 1ЬПТ1АПЕЕ-РКЕН.ОЧ7(С, Л) 1 1ог каждой вершины с Е С. У 2 0.ЬиаО 3 е.еьаО 4 1ог каждого ребра (и, е) ~ С. Е 5 (н,о).1' = О 6 л.Ь = (С. 17~ 7 1ог каждой вершины с Е л. Аф 8 (з, 0).7 = с(л, е) 9 е.е = с(л,е) 10 л.е = з.е — с(л,о) 1н[т1Ащхн-Ркнгьоа создает начальный предпоток 7", определяемый как е (и, е), если н = з, О в противном случае . (26.15) Иначе говоря, каждое ребро, выходящее из истока л, заполняется до его пропускной способности, а все остальные ребра не несут потока.

Для каждой вершины о, смежной с истоком, изначально мы имеем с. е = с(л, с) и инициализируем л. е суммой этих значений с обратным знаком. Обобщенный алгоритм начинает работу с начальной функцией высоты Ь, задаваемой следующим образом: т ~Ц, если н = л, и.Ь = О в противном случае .

(26. 16) Уравнение (26.16) определяет функцию высоты, поскольку единственными ребрами (н, е), для которых и. Ь > е. Ь + 1, являются те, для которых и = з, и эти ребра заполнены, а это означает, что их нет в остаточной сети. Инициализация, за которой следует ряд операций проталкивания и подъема, выполняемых без определенного порядка, образует алгоритм Онннк10-РпзнйН.АВН.. Оехнк1с-РОБн-ин1.АВе1(С) 1 1спт!Ашхе-Ркен.0% (С, л) 2 зтЫ)е существует применимая операция проталкивания или подъема 3 выбрать и выполнить операцию проталкивания или подъема Обобщенный алгоритм Обобщенный алгоритм проталкивания предпотока использует следующую подпрограмму для создания начального предпотока в транспортной сети.

Глава зд Задача о макличальнач потоке В следующей лемме утверждается, что до тех пор, пока существует хотя бы одна переполненная вершина, применима хотя бы одна из этих операций. Лемма 2б.14 (Для переполненной вершном можно выполнить либо протелннванне, либо подъем) Пусть С = (К Е) представляет собой транспортную сеть с истоком в и стоком й а ( является предпотоком, и пусть Ь является произвольной функцией веса для (. Если и представляет собой произвольную переполненную вершину, то к ней применимо либо проталкивание, либо подъем. Доказательство.

Для любого остаточного ребра (и, и) выполняется соотношение Ь(и) < Ь(и) + 1, поскольку Ь представляет собой функцию высоты. Если к переполненной вершине и не применима операция проталкивания, то для всех остаточных ребер (и, и) должно выполняться условие Ь(и) < Ь(и) +1, откуда следует, что Ь(и) < Ь(и). В таком случае к и можно применить операцию подъема.

° Корректность метода проталкивании предпотока Чтобы показать, что обобщенный алгоритм проталкивания предпотока позволяет решить задачу максимального потока, сначала докажем, что если он завершается, то предпоток 1" является максимальным потоком. Затем докажем, что алгоритм завершается. Начнем с рассмотрения некоторых свойств функции высоты Ь. Лемма 2б.15 (Высота вершины никогда не уменьшается1 При выполнении процедуры Снннк1с-Рсзн-КпсАвпс над транспортной сетью С = (К, Е) для любой вершины и е Г ее высота и.

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

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

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