Главная » Просмотр файлов » Дж. Андерсон - Дискретная математика и комбинаторика (2004)

Дж. Андерсон - Дискретная математика и комбинаторика (2004) (1127091), страница 124

Файл №1127091 Дж. Андерсон - Дискретная математика и комбинаторика (2004) (Дж. Андерсон - Дискретная математика и комбинаторика (2004)) 124 страницаДж. Андерсон - Дискретная математика и комбинаторика (2004) (1127091) страница 1242019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Рассмотрим сеть, изображенную на рис. !6.5. РЛЗДбЛ 16Л. Сети и потоки 697 (3.3) Ь вЂ” '— с Ф ф ~ф а '3 Ф' 4, (4,4) Рис. !б б Кажется, что у этой сети максимальный поток, потому что не сушествует ориентированного пути, по которому можно увеличить поток. Заметим, однако, что сеть на рис.

!6.6 имеет больший поток, и, фактически, он максимальный. (3,3) 9 4Ь а ,Й, ~Ф' о' б ~е ~0 (4,2) Риа /б.б Следует обратить внимание, что если поток из источника равен сумме пропускных способностей ребер, выходящих из источника, или поток, втекаюший в сток, равен сумме пропускных способностей ребер, входяших в сток, то поток максимальный. Однако, поток может быть максимальным и без удовлетворения какого-либо из этих признаков. Например, сеть на рис, 16.7 имеет максимальный поток. (1,1) ~ Ь вЂ” с г -Ф „ (2,2) Итак, как же находить максимальные в смысле потока сети? Для этого сформируем пути из а в 3, не обрашая внимания на направление ребер.

Такие пути назовем целями. Рассмотрим снова сеть с потоком, изображенную на рис. 16.5. Одним из таких путей является (8,6) (3,3) (9,6) а — Ь вЂ” с — 3. Очевидно, что нет возможности увеличить поток по этому пути, поскольку ребро из Ь в с наполнено до его пропускной способности. То же самое верно и для цепи (8,6) (5,3) (т,т] а -'-+ Ь -'~ е -'~ г.

Однако, при рассмотрении цепи (8,6) (5,3) (4,4) (5,3) (9,6) а — '- Ь вЂ” е — б -' с -~ 698 ГЛИНА тб. Сети видим: если увеличить поток на 2 для стрелок, имеющих то же самое направление, что и цепь, и уменьшить поток на 2 для стрелок, имеющих противоположное направление, то получим (8,8) (5,5) (4,2) (5,5) (9,8) а -' 6 -'- е ~'- д -'~ с -~ а, что увеличивает поток на 2.

Первый вопрос, который следовало бы задать: "Почему выбираем 22". Вполне очевидно, что поток желательно увеличить как можно больше. Но он не может превысить пропускную способность ни одного из заданных ребер. Именно по этой причине мы ограничены величиной 2. Кроме того, если ребро имеет направление, противоположное цепи, то нельзя уменьшить поток через это ребро более, чем на текущую величину потока через него, иначе получим отрицательный поток.

Поэтому, если бы не было других ограничений, то ограничило бы изменение потока до 4. Второй вопрос: "Как это влияет на сохранение потока?". Убедимся, что условие сохранения потока выполняется. Рассмотрим, например, изменение (8,8) (5,3) а — Ь -~ е на (8,8) (5,5) а -' Ь вЂ” е. Поток, выходящий из вершины Ь, увеличен на ту же самую величину, что и поток, входящий в вершину Ь. Поэтому чистый поток через 6 остается прежним. При изменении (5,3) (4,4) Ь вЂ” е -4( на (5,5) (4,2) 6-4 е — 4( поток из вершины 6 в вершину е увеличен на ту же величину, на которую уменьшен поток из вершины и' в вершину е, поэтому чистый поток в вершине е остался тем же.

Наконец, рассмотрим изменение (4,4) (5,3) е — Ы вЂ” с на (4,2) (5,5) е — д — с Поток из 4( в е уменьшен на ту же величину, на которую увеличен поток из 4( в с. Поэтому чистый поток и вершины д остался неизменным. Процесс увеличения потока в сети чрезвычайно прост. Формируем цепь из а в 2. Если возможно, то увеличиваем поток, определяя наибольшую величину, которую можно добавить к каждому из ребер, имеющих то же самое направление, что и цепь, чтобы поток не превысил пропускную способность, и которую можно вычесть из каждого ребра, имеющего противоположное направление, не РАздел 1б.

и сети и потоки 699 создавая отрицательный поток. Поскольку последнее ребро, входящее в з, имеет то же самое направление, что и цепь, то поток в з возрастает. Аналогично, ребро, выходящее из а, имеет то же самое направление, что и цепь, поэтому, как и ожидалось, поток из а возрастает. Так и должно было быть, потому что поток(а) = лоток(з). Потому что пропускная способность — конечная величина, а общая величина потока увеличивается, неизбежно наступает момент, когда наращивать поток далее нельзя.

Когда это происходит, получаем максимальный поток. До сих пор рассматривался способ увеличения уже существующего потока. А с какого потока начинать? Ответ прост. Следует начинать с нулевого потока, т.е. когда поток через каждое ребро равен О, а затем наращивать его. Теперь перейдем к изложению систематического алгоритма для нахождения максимального потока.

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

Проще говоря, резерв заданной вершины равен максимальной величине, на которую поток вдоль цепи до этой вершины можно увеличить без нарушения самого потока. Рассмотрим также множество 5, содержащее все вершины, не задействованные при построении цепи в з. Если 5 окажется пустым, до того как будет достигнута вершина з, то больше не будет вершин, которые можно испытать на пути к ., поэтому нет иного пути в а и нет более возможности увеличить поток, значит поток максимален. Алгоритм (Форда-Фалкерсона) нахождения максимального потока (1) Установить предшественника каждой вершины и резерв равными символу — (непомечено). Вершина помечена, когда ее резерв не обозначен символом —.

Установить резерв вершины а равным оо, с тем чтобы она не ограничивала резерв других вершин. Положить 5 = (а). (2) Если 5 — пустое множество, то поток максимизирован. Если 5 не является пустым, то выбираем любой элемент нз 5 и удаляем его. Полагаем этот элемент равным и. (3) Если ш не помечена, (и, ш) является ребром и г'((и,ю)) < с((и, ш)). Положить резерв вершины ш равным минимуму величины с((и, ю)) — г" ((и, и)) и резерва вершины и. Установить предшественника вершины ш в и. Если и Ф з, добавить и в 5. (4) Если ш не помечена, (ш,и) является ребром и г"((и,ш)) > О. Положить резерв вершины ю равным минимуму из Г"((и,ю)) и резерва вершины и.

Установить предшественника вершины ш в и. Добавить ш во множество 5. (5) Если з помечена, то, используя функцию предшествования, вернуться в вершину а и для каждого ребра цепи добавить резерв вершины з к потоку каждого правильно ориентированного ребра, и вычесть резерв з из потока каждого неправильно ориентированного ребра. Вернуться к шагу 1.

(6) Вернуться к шагу 2. 700 ГЛАНА 76. Свеи Требуется еще доказать, что алгоритм действительно определяет максимальный поток, но сначала посмотрим, как он работает. ПРИМЕР 16.13. Найдем максимальный поток для сети, изображенной на рис. 16.8.

Г Г' ° 6 б 2 Рис. 16.8 На шаге 1 для каждой вершины устанавливаем предшественника и резерв равными символу —, для вершины а устанавливаем резерв, равный оо, и полагаем Я = (а). После чего получаем сеть, изображенную на рис. 16.9. На шаге 2 проверяем, не пусто ли множество Я, и выбираем из него вершину а. На шаге 3 полагаем резерв вершины Ь равным ппп(7, оо) = 7 и устанавливаем вершину а в качестве предшественника вершины Ь. Помещаем вершину Ь во множество Я. Устанавливаем резерв вершины а равным пйп(6, со) = 6 и устанавливаем вершину а в качестве предшественника вершины с(. Помещаем вершину а во множество Я. Шаги 4 и 5 не применяем, поэтому возвращаемся к шагу 2.

Проверяем, не является ли множество Я пустым, и выбираем из него вершину, например, Ь. Теперь множество Я содержит только вершину а. На шаге 3 полагаем резерв вершины с равным ппп(3,7) = 3 и устанавливаем вершину Ь в качестве предшественника вершины с. Помещаем вершину с во множество Я, так что Я = (с,г(). Опять шаги 4 и 5 не применяем и возвращаемся к шагу 2. Проверяем, не является ли множество Я пустым, и выбираем из Я вершину, например, с. Множество Я опять содержит только вершину Н. На шаге 3 полагаем резерв вершины 3 равным ппп(3,5) = 3 и устанавливаем вершину с в качестве предшественника вершины 3. Не помещаем 3 во множество Я. На шаге 4 следует пометить вершину Ы, но она уже помечена.

На шаге 5 видим, что вершина 3 уже помечена, и, используя функцию пред- шествования, находим цепь (7,0) (3,0) (5,0) а -~ Ь -~ с -~ Добавляя 3 (резерв вершины 3) к потоку каждого ребра, получаем (7,3) (3,3) (5,3) а-~Ь-с — + 3, что дает сеть, изображенную на рис. 16.10. РАЗДЕЛ та. П Сегпи и попюки 701 Теперь возвращаемся к шагу 1, где переустанавливаем метки и предшественников и полагаем Я = 1а). На шаге 2 выбираем вершину а из множества Я. На шаге 3 устанавливаем резерв вершины Ь равным ш!п(оо,7 — 3) = 4 и устанавливаем а в качестве предшественника вершины Ь.

Помещаем вершину Ь во множество Я. Полагаем также резерв вершины 41 равным 6 и устанавливаем вершину а в качестве предшественника вершины 4(. Помешаем вершину Н во множество Я. Шаги 4 и 5 не применяем, поэтому возвращаемся к шагу 2. Выбираем вершину Ь из множества Я. Поскольку поток из Ь в с равен пропускной способности из Ь в с, то вершину с не помечаем. Выбираем вершину й из множества Я и продолжаем процесс, после чего получаем цепь (6,0) (2,0) а-'Н вЂ” 'з и, добавляя 2 (резерв вершины 2) к потоку каждого ребра, получаем цепь (6,2) (2,2) а †'+ 6( — 2.

Текушая ситуация изображена на рис, 16.!1. Г(~ Снова возвращаемся к шагу 1 и повторяем процесс, пока не получим цепь (6,2) (2,0) (5,3) а-'~Ы-~с-~ з. Добавляя 2 (резерв вершины 2) к потоку каждого ребра, получаем (6Л) (2,2) (5,5) а — ~Н вЂ” ~с — +з. Ситуация изображена на рис. 16.12. 702 ГЛАВА тб. Сегли о'. Гз,з> Г Г'"', (4,4) б * ( ,2) (а,4) (2,2) р(бс Гб 12 Возвращаемся к шагу 1, переустанавливаем метки предшественника и полагаем Я = (а). На шаге 2 выбираем вершину а из множества Я. Как и ранее, на шаге 3 полагаем резерв вершины Ь равным 4 и устанавливаем вершину а в качестве предшественника вершины Ь. Помещаем вершину Ь во множество Я.

Устанавливаем также резерв вершины (( равным 6 — 4 = 2 и помешаем вершину (1 во множество Я. Возвращаемся к шагу 2. Выбираем вершину Ь из множества Я. Поскольку поток из вершины Ь в вершину с равен пропускной способности из Ь в с, пометить с нельзя, поэтому, в конце концов, возвращаемся к шагу 2. Выбираем вершину 4( из множества Я, Поскольку поток из вершины (( в вершину с и вершину г равен их пропускным способностям, нельзя помечать с и з. Опять возвращаемся к шагу 2, но множество 5 пусто. Процесс закончен. Окончательный поток изображен на рис.16.13. «~- Яэ) ~ф. Ф с(-,-) а(- ) ~~ -В~ (4.4 6 — *(.:) (а,а) (2,2) Рис. !б.

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

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

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

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