Знаходження коротких та жирних доріжок


10

Мотивація: У стандартних алгоритмах збільшення потоку максимуму шляху внутрішній цикл вимагає пошуку шляхів від джерела, щоб потонути у спрямованому, зваженому графіку. Теоретично добре відомо, що для того, щоб алгоритм навіть припинився, коли є ірраціональні крайові ємності, нам потрібно обмежити шляхи, які ми знаходимо. Алгоритм Едмондса-Карпа, наприклад, говорить нам знайти найкоротші шляхи.

Емпірично було помічено, що ми можемо також захотіти знайти жирні (чи є кращий термін для цього?) Шляхи. Наприклад, при використанні масштабування ємності , ми знаходимо найкоротші шляхи , які можуть мати щонайменше кількість потоку. Немає обмежень щодо тривалості шляху. Коли ми вже не можемо знайти жодних шляхів, ми зменшуємо ϵ і повторюємо.ϵϵ

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

Питання: Чи існує стандартний спосіб інтерполяції між підходом до найкоротшого шляху та підходу до масштабування потенціалу? Тобто чи існує алгоритм пошуку коротких та жирних шляхів, де в ідеалі якийсь параметр може контролювати, скільки довжини шляху, яким ми готові торгувати на жирність? На крайньому рівні, я хотів би мати можливість відновити найкоротші шляхи на одному кінці та шляхи в стилі масштабування на іншому.


3
Зауважте, що якщо ви намагаєтесь оптимізувати одночасно і нежитність, і жирність, ви вводите сфери багатокритеріальної оптимізації, що означає в більшості випадків NP-твердість.
Рафаель

@dan x: Мені відомо алгоритми масштабування потужностей для максимального потоку, але не конкретний, який ви описуєте. Чи є у вас довідник (конференція, стаття журналу, лекція з перекладом тощо), яка детально описує вашу версію масштабування потенціалу? Мені цікаво, якщо існує відомий "найкращий спосіб" ініціалізації та скорочення (залежно від того, наскільки це чітко визначено, це може, природно, призвести до "параметризованого" алгоритму, як ви шукаєте). ϵ
Даніель Апон

@Daniel Apon - на сторінці 31 цих слайдів є псевдокод для масштабування потужностей: cs.princeton.edu/~wayne/kleinberg.../07maxflow.pdf
dan_x

@Raphael - Зауважте, що я шукаю єдину ціль, яка може бути, наприклад, лінійною комбінацією довжини і жирності. Це все ще вважається багатокритеріальною оптимізацією?
dan_x

Крім того, я готовий пройти "досить хороший" шлях, навіть якщо він не є оптимальним. Наприклад, під час масштабування потенціалу ми беремо будь-який шлях, який є принаймні таким же жиром, як . Я був би задоволений деяким аналогом, який враховує як нестачу, так і жирність. ϵ
dan_x

Відповіді:


2

В дусі Вашого коментаря про "досить добре, але не обов'язково оптимально", я представляю наступну ідею абсолютно не гарантуючи оптимальності!

Для повноти ось ось псевдокод, на який ви посилалися (Зауваження: алгоритм пов'язаний передбачає, що крайові ємності є цілими числами від 1 до C, а значення потоку та залишкової ємності є цілісними):

Масштабування-Макс-Потік (G, s, t, C) {
   foreach e ∈ E f (e) ← 0
   Δ ← найменша потужність на 2, більша або дорівнює C
   G_f ← залишковий графік

   а (Δ ≥ 1) {
      G_f (Δ) ← Δ - залишковий графік
      в той час, як (G_f (Δ) існує шлях розширення P {
         f ← ​​збільшення (f, C, P)
         оновлення G_f (Δ)
      }
      Δ ← Δ / 2
   }
   повернути f
}

ϵϵ=Δϵ

0ρ1ρ

ϵρ

ϵ(ρ)ϵ+(1-ρ)

ρ=0ρ=10<ρ<1ϵ1


Дякую за ідею - вона наближається до того, що я мав на увазі. Моє одне занепокоєння полягає в тому, що це просто інший "графік занепаду" для масштабування потужностей, правда?
dan_x

Коли ви грішитеся більш агресивно, ви отримуєте коротші шляхи, і, як менш агресивно розпадаєтеся, ви отримуєте товстіші шляхи. Що я мав на увазі, це те, що кожен шлях отримає оцінку залежно від того, наскільки він жирний і наскільки короткий, тоді алгоритм знайде всі шляхи з балом, більшим за деякий поріг.
dan_x

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