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

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

Файл №1123758 Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.)) 160 страницаТ. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (1123758) страница 1602019-05-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Там же предлагается разработать структуру данных, которая позволит выбрать применимую операцию за время О(1). Тем самым следствие будет доказано. И Упражнения 26.4-1. Покажите, как реализовать обобщенный алгоритм проталкивания пред- потока, в котором на каждый подъем затрачивается время О (У), на каждое проталкивание — О (1), и то же время О (1) — на выбор применимой операции; суммарное время выполнения при этом составляет О (УзЕ). 26.4-2.

Докажите, что время, затрачиваемое в целом на выполнение всех О (Уз) подъемов в обобщенном алгоритме проталкивания предпотока, составляет только О (У Е). Часть Ч1 Алгоритмы для работы с графами 774 26.4-3. Предположим, что с помощью алгоритма проталкивания предпотока найден максимальный поток для транспортной сети С = (У, Е). Разработайте быстрый алгоритм поиска минимального разреза в С. 26.4-4. Разработайте эффективный алгоритм проталкивания предпотока для поиска максимального паросочетания в двудольном графе.

Проанализируйте время его работы. 26.4-5. Предположим, что все пропускные способности ребер транспортной сети С = (К Е) принадлежат множеству (1, 2,..., Ь). Проанализируйте время выполнения обобщенного алгоритма проталкивания предпотока, выразив его через ]У], ]Е] и /с. (Указание: сколько ненасыщающих проталкиваний можно применить к каждому ребру, прежде чем оно станет насыщенным?) 26.4-6. Покажите, что строку 7 процедуры 1ьпт~лшхн Ркнг~.отт можно заменить строкой 7 Ь[а] - [У[С]] — 2 и это не повлияет на корректность или асимптотическую производительность универсального алгоритма проталкивания предпотока. 26.4-7. Пусть 61 (и, е) — расстояние (количество ребер) от и до е в остаточной сети Су.

Покажите, что в процессе работы процедуры ОВНВШС Риэп КВ1ЛВеь выполняются следующие свойства: если Ь[и] < ]У], то Ь[и] < < б г (и, т), а если Ь [и] > ]У[, то Ь [и] — [У] < ду(и, з). * 26.4-8. Как и в предыдущем упражнении, пусть бу (и, с) — расстояние от и до с в остаточной сети Су. Покажите, как можно модифицировать обобщенный алгоритм проталкивания предпотока, чтобы в процессе работы процедуры выполнялись следующие свойства — если Ь [и] < ]У], то Ь [и] = 61 (и, т), а если Ь [и] > [У], то Ь [и] — ]У] = 61 (и, а).

Суммарное время, затраченное на обеспечение выполнения данного свойства, должно составлять 0 (У Е). 26.4-9. Покажите, что количество ненасышающих проталкиваний, выполняемых процедурой ОВннис Рын КВ1.лвн. в транспортной сети С = (К Е), не превышает 4]У[~ ]Е], если [У[ > 4. * 26.5 Алгоритм "поднять-в-начало" Метод проталкивания предпотока позволяет нам применять основные операции в произвольном порядке.

Однако после пцательного выбора порядка их выполнения и при эффективном управлении структурой сетевых данных, можно Глава 26. Задача о максимальном потоке решить задачу поиска максимального потока быстрее, чем за предельное время 0 (Ъ'зЕ), определенное следствием 26.26.

Далее мы рассмотрим алгоритм "поднять-в-начало" (ге1аЬе!-го-ггоп[), основанный на методе проталкивания пред- потока, время выполнения которого составляет 0 (Ъ'з), что асимптотически не хуже, чем 0 (Ъ'зЕ), а для плотных сетей — лучше. Алгоритм "поднять-в-начало" поддерживает список вершин сети. Алгоритм сканирует список с самого начала, выбирает некоторую переполненную вершину и, а затем "разгружает" ее, т.е. выполняет операции проталкивания и подъема до тех пор, пока избыток в и не станет равен О. Если выполнялось поднятие вершины, то она переносится в начало списка (отсюда и название алгоритма: "поднять-в- начало"), и алгоритм начинает очередное сканирование списка. Для исследования корректности и временных характеристик данного алгоритма используется понятие "допустимых'* ребер: это ребра остаточной сети, через которые можно протолкнуть поток.

Доказав некоторые свойства сети, состоящей из допустимых ребер, мы рассмотрим операцию разгрузки а затем представим и проанализируем сам алгоритм "поднять-в-начало". Допустимые ребра и сети Пусть С = (К Е) — некоторая транспортная сеть с источником в и стоюм 1, у' — предпоток в С, а Ь вЂ” функция высоты.

Ребро (и, и) называется допустимым РебРам (адш1зз1Ые едйе), если сг(и,и) > О и Ь(и) = Ь(и) + 1. В пРотивном случае ребро (и, и) называется недопустимым (1пайп(зз1Ые). Допустимой сетью (абш1зз(Ые пепчогк) является сеть Су ь = (К Еу ь), где Еу, — множество допустимых ребер. Допустимая сеть состоит из тех ребер, через которые можно протолкнуть поток.

Следующая лемма показывает, что такая сеть является ориентированным ациклическим графом. Лемма 26.27 (Допустимая сеть является ациклической). Если С = Я Е)— неюторая транспортная сеть с источником в и стоюм 1, 1' — предпоток в С, а Ь— функция высоты, тогда допустимая сеть Су ь = (К Еу ь) является ациклической. Доказательство. Доказательство проводится методом от противного. Предположим, что Сук содержит некоторый циклический путь р = (ио,иы..., иь)„где ио = иь и Ь > О. Поскольку каждое ребро пути р является допустимым„справедливо равенство Ь (и; г) = Ь (и;) + 1 для г = 1, 2,..., Ь. Просуммировав эти равенства вдоль циклического пугн, получаем: Ь(ич 1) = ~~ (Ь(и;)+1) = ~~) Ь(сч)+/с. 1=1 Часть Ч1 Алгоритмы для работы с графами 776 Поскольку каждая вершина циклического пути р встречается при суммировании по одному разу, приходим к выводу, что к = О, что противоречит первоначальному предположению.

Следующая лемма показывает, как операции проталкивания и подъема изменяют допустимую сеть. Лемма 26.28. Пусть С = (У, Е) — транспортная сеть с источником а и стоком г, г" — предпоток в С, и предположим, что атрибуг Ь вЂ” функция высоты. Если вершина и переполнена и ребро (и,п) является допустимым, то применяется операция Рцзн(и, о). Данная операция не создает новые допустимые ребра, однако она может привести к тому, что ребро (и, о) станет недопустимым.

Доказательсюиво. По определению допустимого ребра, из и в е можно протолкнуть поток. Поскольку вершина и переполнена, применяется операция РОзн(и, е). В результате проталкивания потока из и в и может быть создано только одно новое остаточное ребро (п, и). Поскольку 1з [ю] = 6 [и] — 1, ребро (и, и) не может стать допустимым. Если примененная операция является насыщающим проталкиванием, то после ее выполнения су (и, э) = О и ребро (и, э) становится недопустимым. и Лемма 26.29. Пусть С = (Ъ; Е) — транспортная сеть с источником а и стоком г, г" — предпоток в С, и предположим, что атрибут й — функция высоты. Если вершина и переполнена и не имеется допустимых ребер, выходящих из и, то применяется операция Кщ.хввг.(и).

После подъема появляется по крайней мере одно допустимое ребро, выходящее из и, но нет допустимых ребер, входящих в и. Доказательство. Если вершина и переполнена, то, согласно лемме 26.15, к ней применяется или операция проталкивания, или операция подъема. Если не существует допустимых ребер, выходящих из и, то протолкнуть поток из и невозможно, следовательно, применяется операция Кщ.лвц.(и). После данного подъема 6 [и] = 1+ шш (1з [о]: (и, е) е Е~).

Таким образом, если ц — вершина, в которой реализуется минимум указанного множества, ребро (и, о) становится допустимым. Следовательно, после подъема существует по крайней мере одно допустимое ребро, выходящее из и. Чтобы показать, что после подъема не существует входящих в и допустимых ребер, предположим, что существует некоторая вершина е, такая что ребро (и, о) допустимо.

Тогда после подъема 6 [е] = Ь [и] + 1, так что непосредственно перед подъемом л [е] > л [и] + 1. Но, согласно лемме 26.13, не существует остаточных ребер между вершинами, высоты которых отличаются более чем на 1. Кроме того, подъем вершины не меняет остаточную сеть. Таким образом, ребро (о, и) не принадлежит остаточной сети, следовательно, оно не может находиться в допустимой сети. Глава 2б. Задача о максимальном потоке Списки соседей Ребра в алгоритме "поднять-в-начало*' обьединены в так называемые "списки соседей". В заданной транспортной сети С = (У, Е) списком соседей (пе1яЬЬог Ы) Ю [и] некоторой вершины и Е У является односвязный список вершин, смежных с и в С.

Таким образом, вершина и оказывается в списке Ф [и] только в том случае, если (и, и) е Е или (и, и) е Е. Список соседей И [и] содержит только такие вершины и, для которых может существовать остаточное ребро (и, и). На первую вершину в списке Ж [и] указывает указатель беад [АГ [и]]. Для вершины, следующей за и в списке соседей, поддерживается указатель пех1-пездббог [и]; этот указатель имеет значение я~, если и — последняя вершина в списке соседей. Алгоритм "поднять-в-начало" циклически обрабатывает каждый список соседей в произвольном порядке, который фиксируется в процессе выполнения алгоритма.

Для каждой вершины и поле ситтеп1 [и] указывает на текущую вершину списка Ю [и]. Первоначально сиггепг [и] устанавливается равным беаН [М [и]]. Разгрузка переполненной вершины Переполненная вершина и разгружаешся (йзсйагяес1) путем проталкивания всего ее избыточного потока через допустимые ребра в смежные вершины, при этом, если необходимо, производится подъем вершины и, чтобы ребра, выходящие из вершины и, стали допустимыми. Псевдокод разгрузки выглядит следующим образом: Ензснлксв(и) 1 зт)з11е е[и] > О 2 йо и — ситтеп1[и] 3 Ни = ып. 4 тпеп Кв~лвв~(и) 5 сиггеп1[и] — леал [7Ч [и]] 6 е!яен с7(и,и) > О и 6[и] = 7з[и]+1 7 Феп Рын(и, и) 8 е1ке ситтеп1[и] — пехг-пегдббог[и] На рис.

26.9 показаны несколько итераций цикла иййе (строки 1-8), тело цикла выполняется до тех пор„пока вершина и имеет положительный избыток. Каящая итерация выполняет одно из трех действий в зависимости от текущей вершины и из списка соседей Аг [и]. На рисунке показаны только смежные с у вершины и ребра, входящие в у или выходящие из нее.

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

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

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