Механіка флейдів та динамічні показники
Аналіз ефективності алгоритму ЕДмондс-карпного алгоритму в задачах Макса потоку
Table of Contents
Алгоритм Едмондс-Карп: докладний аналіз ефективності
Алгоритм Едмондс-Карп є специфічним впровадженням методу Ford-Fulkerson для обчислення максимального потоку в мережі потоку. Хоча оригінальний метод Ford-Fulkerson використовує довільний пошук шляхів для закріплення (який може призвести до доцільного часу в патологічних випадках), Едмондс-Карп застосовує пошук BFS, що забезпечує найкоротший шлях поглинання (в умовах кількості країв) вибирається кожною ітерацією. Ця гарантія дає добре визначений поліальний час і робить алгоритм кутовий камінь теорії внутрішньопровідних мереж.
Алгоритмічний опис та основні властивості
З огляду на реж. графік G = (V, E)] з джерелом , мийка t], і функція ємності c: E → R+, алгоритм Edmonds-Karp переходить наступним чином:
- Первинний потік f(e) = 0 для всіх країв.
- ] (в тому числі задні краю з потужністю, дорівнює струму потоку).
- , щоб знайти найбільш коротко спрямований шлях до t ]], щоб знайти найкоротший спрямований шлях до t (замірячений в кількості країв).
- Якщо немає шляху, то припиняйте; струмовий потік максимальний.
- В іншому випадку визначають ємність пляшки уздовж шляху (мінімум залишкову ємність).
- Приплив на тягар, що становить вздовж шляху і оновлення залишкових потужностей.
- Повторити з кроку 2.
Використання BFS забезпечує, що кожен знайдений шлях для закріплення є найбільшою доріжкою в залишковому графіку. Виявлено критичне майно: відстань (в краях) від до t] в залишковому графіку ніколи не знижується і строго збільшується кожен O(E)]]. Це призводить безпосередньо до обмеження складності.
Аналіз комплексності
, який спрощує O(E)]] для типових спаржу графіків. Основна проблема обмежує кількість аугментацій. Тому кожен аугментація насичено принаймні один край (пляшка), і кожен край може бути насичений на більшості V/2]] час (з кожним насиченням збільшує відстань від [F7:4[F7:4][F7:4[F7:4]
Точно, стандартний аналіз показує, що кількість аугментацій є на більшості O(VE), тому загальний час O(V E2)] (або O(V E * (V+E))] для повноти). Для щільних графіків, де E = ), це стає O(V4)
Порівняння з іншими Max Flow Algorithms
Алгоритм Дініка
Алгоритм Dinic також використовує BFS для побудови графіка рівня, але потім дозволяє багаторазово перепадаючи доріжки в однофазному режимі через DFS на графіку рівня. Це зменшує кількість BFS, що працює на більшості V] (з тих пір рівень раковини збільшує кожну фазу). Загальна складність O(V2 E) в загальному і O(E √V) для двочастинкового співвідношення. Для більшості практичних мереж, DinicK надсилає
Пуш-Релабель Алгоритми
Методи Push-relabel, такі як алгоритм генплану або найбільш-лабелільний варіант, досягати O(V2 √E) або O(V3) меж. Вони працюють шляхом штовхачування потоку локально по правових краях і релабеляційних вершин для підтримки дійсного маркування. Ці алгоритми є більш складними для реалізації, але часто працюють швидше на практиці, особливо для великих, щільних графіків. Найбільший алгоритм штовхач-релаборатору широко використовується в конкурентному програмування і реально-світових розчинників.
Ще один важливий варіант - масштабування ємності ] алгоритм, який додає параметр масштабування до методу Ford-Fulkerson, що врожаю O(E2 log U)], де U] - максимальна ємність. Це також поліномний, але простіше, ніж штовхач-релабель.
Чому дуплекс-карп навколо Маттирс
Незважаючи на те, що диніка і штовхач-релабель, Едмондс-Карп є педагогічно цінним. Його простота і інтуїтивно зрозумілий доказ поліномічного забігу (на основі найменших шляхів монотонності) робить його відмінним навчальним інструментом. Багато комп'ютерних наук навчальних планок вводять Едмондс-Карп перед переміщенням більш просунутих методів. Додатково для малих і середніх мереж (справа, до декількох тисяч вершин і країв), різниця практичної продуктивності може бути недбалою, особливо якщо граф є спарасом і має низькі можливості крою.
Практичні наслідки та приклади використання
У реальних програмах алгоритм вибору залежить від проблемних обмежень. Наприклад:
- [[FLT]] [LT1]]: Edmonds-Karp знижує алгоритм Хопкрофт-Карп, коли потужності є блоком і мережа є біпартит? Насправді немає – Хопкрофт-Карп є виділеним алгоритмом O(E √V)] час; однак, Едмондс-Карп [:8] ]O(V E)]]
- Трафічна інженерія: У телекомунікаційних і дорожньо-мережах, потоках часто великі і графи спаре. Дінік або штовх-релабель краще за рахунок кращої масштабування.
- Image сегментація: алгоритми ріжучих графів для комп’ютерного зору часто спираються на максимальні витрати / мін-розрізи. Алгоритм Boykov-Kolmogorov, спеціалізований метод аугментації-пата, часто перетворюються генетичні алгоритми для цих графів, але Едмондс-Карп може використовуватися для менших проблем.
- Повчання та прототипування: Коли простота та вірність є параmount над сирою швидкістю, Едмондс-Карп є безпечним вибором. Його поведінка є передбачуваною, і відключення є прямопередня, тому що BFS легко впроваджувати.
Емпіфікична продуктивність
Benchmarks on випадковим графікам показують, що Edmonds-Karp часто працює в найближчий час на практиці, коли межі потужності невеликі (O(1)) через кількість акугментацій обмежена максимальною вартістю потоку, яка може бути невеликою. Однак для високоточних мереж алгоритм може деградувати. Наприклад, розглянути мережу, де потужності великі цілі; значення потоку може бути величезним, що призводить до багатьох аугментацій. У таких випадках Dinic або scaling методи більш надійні.
Впровадження
При реалізації Едмондс-Карп, ретельне керування графіками є важливим. Представництво як вперед, так і задніх країв дозволяє легко аугментацію і зворотній відкладці. Використання списку ад'юнкції з точками для зворотних країв (або зберігання зворотних індексів краю) спрощує оновлення. BFS також повинні записувати попередників для відновлення шляху аугментації. Використання пам'яті O(V + E)]], схожих на інші алгоритми.
До оптимізованих результатів:
- Попереднє припинення, якщо БФС не може досягати t.
- Використання цілих потужностей і потоків, щоб уникнути плаваючих задач.
- У разі виникнення декількох недоліків, якщо графік має багато паралельних країв (хоча рідше).
Для дуже великих мереж слід розглянути за допомогою динамічного BFS, який оновлює відстані, що незрівняні, але це часто додає складності без значних наборів для Edmonds-Karp спеціально.
Відправлення до оригінального методу Ford-Fulkerson
Джек Едмондс і Річард Карп опублікували алгоритм у 1972 році, демонструючи, що використання BFS вводить поліномічний алгоритм потоку. До цього метод Ford-Fulkerson (1956) не вказав правила вибору шляху, і відомо, що бідні вибіри можуть призвести до експлуативного часу. Роботу Едмондс і Карп був фундаментальним кроком у розвитку сильно многочленів для мережевих потоків. Папір "Теоретичні поліпшення в алгоритмі алегоритичної ефективності для мережевих проблем" залишається класичним довідником.
Розширення та різновиди
Варіанти Едмондс-Карп включають:
- CCapacity scaling version]: Замість завжди з'єднання по найкоротший шлях алгоритм працює з параметром масштабування і тільки розглядає краю з залишковою потужністю ≥ Δ. Цей врожай O2 log U)] алгоритм.
- Оптимізація потенціалу: Коли всі потужності є 1, алгоритм переходу на основі BFS, який спеціалізується на алгоритмі Хопкрофт-Карп, хоча останній використовує ретельно чергування BFS/DFS для досягнення O(E √V)].
- Інтеграція: алгоритм природно підтримує інтегральні витрати при наявності потужностей, що робить його придатним для розчісних задач.
Висновок
Алгоритм Едмондс-Карп є надійним і добре-understood метод для вирішення максимальних проблем потоку. Його O(V E2) найгірший термін роботи робить його непрактичною для дуже великих або щільних мереж, але його простота і чіткий доказ поліномічного ходу часу зацептували своє місце в алгоритмі підручників. Для реальних систем, які вимагають високої продуктивності, алгоритм Dinic або метод штанг-релабелілятор зазвичай є перевагою. Однак для освітніх налаштувань, невеликих масштабних проблем або як базова лінія для перевірки вірності Едмондс-Карп залишається цінним інструментом.
Далі читання по передових алгоритмах потоку можна знайти в статті Вікіпедії і в класичному підручнику Вхід до алгоритмів Algorithms] (CLRS). Для більш глибокого аналізу продуктивності алгоритму потоку див. NetworkX потік виконання приміток.