Залишковий графік в максимальному потоці


14

Я читав про максимальний потік Проблемі тут . Я не міг зрозуміти інтуїцію за Залишковим графіком. Чому ми розглядаємо задні ребра під час обчислення потоку?

Чи може хто-небудь допомогти мені зрозуміти концепцію залишкового графіка?

Як змінюється алгоритм у непрямих графіках?

Відповіді:


28

Інтуїція, що відображає залишковий графік у задачі про максимальний потік , дуже добре представлена ​​в цій лекції. Пояснення йде наступним чином.

Припустимо, що ми намагаємося вирішити задачу максимального потоку для наступної мережі G (де кожна мітка fe/ce позначає як потік fe просунутий через край e і ємність ce цього краю):

Приклад роботи

Один з можливих жадібних підходів полягає в наступному:

  1. Виберіть довільний збільшує шлях , який йде від джерела вершин з к стене вершина т таким чином, що еPst ); тобто всі ребра в Р мають доступну ємність.e(ePfe<ceP
  2. ΔΔPΔ=mineP(cefe)
  3. Перейдіть до кроку 1, поки не існує шляхів розширення.

Тобто знайдіть шлях із наявною потужністю, надішліть потік по цьому шляху і повторіть.

У , одне можливе виконання вищевказаних евристичних знаходить у цьому порядку три шляхи збільшення , та . Ці шляхи висувають 2, 2 і 1 одиницю потоку відповідно для загального потоку 5:P 1 P 2 P 3GP1P2P3

Можливе виконання жадного підходу для максимального потоку

Вибір шляхів у такому порядку веде до оптимального рішення; однак, що станеться, якщо ми спочатку (тобто перед та )?P 1 P 2P3P1P2

Блокування шляху

Ми отримуємо те, що називається блокуючим потоком : більше шляхів розширення не існує. У цьому випадку загальний витрата становить 3, що не є оптимальним. Цю проблему можна вирішити, якщо дозволити операції скасування (тобто, дозволяючи надсилати потік у зворотному порядку, скасовуючи роботу попередніх ітерацій): просто натисніть на 2 одиниці потоку назад від вершини до вершини так:vwv

Зворотний потік

Кодування цих дозволених операцій скасування є основною метою залишкового графіка .

Залишковий графік мережі має той самий набір вершин, що і і включає для кожного краю :G G e = ( u , v ) GRGGe=(u,v)G

  • Передній край ємністю , якщо .c e - f e c e - f e > 0e=(u,v)cefecefe>0

  • край ємністю , якщо .e=(v,u)fefe>0

Наприклад, розглянемо залишковий графік , отриманий після першої ітерації евристики, коли евристичний спочатку вибирає (тобто коли він отримує блокуючий потік):RP3

Залишковий графік

Зауважте, що операція скасування, яка висуває 2 одиниці потоку від до , кодується як прямий (збільшуючий) шлях від до в :wvstR

Шлях збільшення в залишковому графіку

В загальному:

Коли в залишковому графіку вибрано шлях збільшення :PR

  • Кожне ребро в яке відповідає передньому краю в збільшує потік, використовуючи ребро з наявною ємністю.PG
  • Кожне ребро в яке відповідає ребру, що йде назад, у відміняє потік, який був відсунутий у напрямку вперед в минулому.PG

Це головна ідея методу Форда – Фулкерсона .

Метод Форда – Фулкерсона протікає точно так само, як описаний вище жадібний підхід, але він зупиняється лише тоді, коли в залишковому графіку немає більше шляхів розширення (не в початковій мережі). Метод правильний (тобто він завжди обчислює максимальний потік), оскільки залишковий графік встановлює таку умову оптимальності :

Враховуючи мережу , потік є максимальним у якщо в залишковому графіку немає шляху.GfGst


Чи є приклад, коли шляхи додаються в порядку найменшої довжини, як описано в алгоритмі Едмондса-Карпа? У вашому зустрічному прикладі перший шлях - це довжина 3, тоді як коротший (тобто 2) шлях можна знайти, і він буде доданий першим, якщо ми робимо Edmonds-Karp.
Рой

Ви можете просто зробити все доріжка в вихідному графі має довжину . Для цього розділіть вершину на дві вершини та . Потім розділіть на і . Додайте також два ребра та ємністю . Край, який спочатку йшов від до , тепер перейде від до . Ми можемо отримати той самий вид блокування потоку, якщо спочатку обрати шлях, який містить край .3 v v 1 v 2 w w 1 w 2 ( v 1 , v 2 ) ( w 1 , w 2 ) 2 v w v 1 w 2 ( v 1 , w 2 )st3vv1v2ww1w2(v1,v2)(w1,w2)2vwv1w2(v1,w2)
Маріо Червера

Ваш приклад має сенс. Ми завжди можемо розширити графік на інші краї в розрізі, щоб зробити відповідний край на одному з найкоротших шляхів.
Рой

3

Інтуїція за залишковою мережею полягає в тому, що вона дозволяє нам "скасувати" вже призначений потік, тобто якщо ми вже призначили 2 одиниці потоку від до , то передача 1 одиниці потоку від до тлумачиться як скасування однієї одиниці вихідного потоку від до .Б В А А БABBAAB

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.