Чи практичні будь-які найсучасніші алгоритми максимального потоку?


30

Для проблеми з максимальним потоком , мабуть, існує ряд дуже складних алгоритмів, принаймні один розроблений недавно, як минулого року. Макс Орліна протікає за час O (mn) або краще дає алгоритм, який працює в O (VE).

З іншого боку, найчастіше я бачу реалізовані алгоритми (я не претендую на вичерпний пошук; це лише з випадкового спостереження):

  • Едмондс-Карп: ,О(VЕ2)
  • Push-Relabel: або O ( V 3 ) з використанням вибору вершин FIFO,О(V2Е)О(V3)
  • Алгоритм Дінака: .О(V2Е)

Чи алгоритми з кращим асимптотичним часом роботи просто не практичні для розмірів проблем у реальному світі? Також я бачу, що "Динамічні дерева" задіяні у досить багатьох алгоритмах; вони коли-небудь використовуються на практиці?

Примітка: це питання було спочатку запитав на переповнення стека, тут , але мені сказали , що це буде краще підходить тут.

EDIT : Я задав відповідне запитання на cs.stackexchange , зокрема про алгоритми, що використовують динамічні дерева (ака-дерева зрізаних дерев), що може зацікавити людей, які слідують за цим питанням.


1
Якщо говорити в загальному сенсі, чи алгоритм "практичний" проти того, чи він "реалізований", трохи відрізняються. в ідеалі автори випускають реалізацію власних алгоритмів, і в такому випадку, як правило, було б "практично" використовувати їх. Якщо це часто більше виняток у літературі про TCS. але часто не "практично" для "реалізації" інших авторів алгоритми лише дають описи в роботах, написаних псевдокодом, які іноді є істотними або дуже складними ... успішна реалізація включає в себе хороший тест на правильність, іноді непростий процес ...
vzn

3
Ендрю Голдберг мав дуже приємну базу коду для різних варіантів максимуму потоку, що ґрунтується на його роботах із натисканням. Я раніше використовував код, і він був дуже чистим. На жаль, сайт, здається, не працює.
Суреш Венкат

3
@vzn Мене цікавить, чи алгоритми взагалі піддаються практичній реалізації. Є алгоритми, які цього не роблять, і деякі люди прийняли називати ці "галактичні алгоритми", оскільки вони мають чудову асимптотичну поведінку, але настільки накладні, що в даний час практичної користі від їх реалізації немає. (Зрештою, терміни нижчого порядку мають значення. Матричне множення є найкращим прикладом, який я можу придумати, де асимптотично найкращі рішення ніколи не бачать практичного використання. Мені цікаво, чи схожа ситуація з Max Flow.
Роб Лаклан

5
чи алгоритм "практичний" проти того, чи він "реалізований", трохи відрізняються. - Це правильно. Алгоритм можна реалізувати, не будучи практичним, але не навпаки.
Jeffε

Відповіді:


22

Я один з авторів статті, зв'язаної вище.

Хочеться лише зазначити, що ми використовували "найсучасніші" для того, щоб означати алгоритми (з загальнодоступними реалізаціями), які добре спрацьовують на максимальних потоках, що виникають у комп'ютерному зорі.

Я також хотів би додати, що у вузькому (але практичному) контексті часто алгоритми, які добре працюють, є тими, що мають погані теоретичні гарантії. Наприклад, ref [5] з нашої роботи (алгоритм Бойкова-Колмогорова) широко застосовується у спільноті комп'ютерного зору, але не має сильно обмеженого часу виконання.

Нарешті, якщо когось цікавить, дані наших експериментів доступні тут: http://ttic.uchicago.edu/~dbatra/research/mfcomp/index.html

Код також незабаром також з’явиться.


дуже акуратно, що ти приєднався до групи! Ласкаво просимо! одне запитання про статтю [з 1-го її пошуку]. було б дуже цікаво дізнатись більше про процес вибору алгоритмів, що використовуються в роботі - це, здається, не повністю розроблене. можливо, ви могли б поділитися десь фоновими нотатками "поза кадром" (наприклад, веб-сторінка?) про те, які алгоритми були обрані, які були опущені, чому, які проблеми виникли в отриманні / запуску реалізацій, які ви вважаєте про більш екзотичні такі алгоритми, як останній Orlins та їхні перспективи для можливої ​​реалізації, тощо!
vzn

7

Є кілька способів відповісти на це питання, але не обов'язково відповідь консенсусу. загалом алгоритми, які були реалізовані та випущені для публічного розповсюдження, є "практичними". однак деякі алгоритми, які були розроблені, але ще не впроваджені, можуть бути практичними, але "присяжних немає", так би мовити. **

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

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

[1] MaxFlow Revisited: Емпіричне порівняння алгоритмів максимального потоку для задач із щільним зором Верми та Батри , 2012

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

практичність у цьому сенсі, можливо, є новим новим виміром для теоретичного вивчення. в ідеалі було б опитування алгоритмів максимального потоку конкретно на цій "практичній" осі / критеріях, але, ймовірно, таких не існує на момент написання. його нещодавно визнана / визнана концепція в TCS, яка ще не була всебічно формалізована (на відміну, наприклад, від широкого прийняття алгоритмів P як "ефективних").


3
+1. Я не впевнений, чому це було знято; Я читаю статтю, з якою ви посилалися, і мені було дуже корисно вивчити, які практичні підходи є, принаймні, у цій проблемній області.
Роб Лаклан

3
Роберт Седжевік заявив у досить недавній розмові, що розробник алгоритму, який не проводить експерименти, ризикує загубитися в абстракції. Розмова йде про пошук шляхів у графіках, а також дещо пов'язана з maxflow. Це не відповідає на питання, але може бути цікавим комусь.
Juho

5
@Rob, єдина відповідна частина цієї відповіді - це посилання на папір, і у відповіді не так багато, що пояснює, чому цей документ взагалі пов'язаний. Я б здогадався, що ОП знайшов посилання від Google і не прочитав його. Решта відповіді - це загальні зауваження та коментарі, в яких зазначається особистий погляд ОП на питання, які він не є експертом і не дуже актуальний тут. Відповіді - це не повідомлення в блозі. Посилання на відповідний документ може бути корисним як коментар, але воно не дає відповіді. Це погана відповідь, якщо вона одна. Тому я за це проголосував.
Каве

2
@Kaveh досить справедливо. Я знайшов цей документ корисним показником того, що люди вважають практично корисними алгоритмами. Я згоден, що багато чого не залишилося без відповіді.
Роб Лаклан

3
Я також не розумію низових подій. Немає підстав вважати, що плакат НЕ читав пов’язану статтю, і це, здається, є актуальним. Я бачу бажання не підкреслити, але не похититися.
Суреш Венкат

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