Расчет максимального потока в обобщенной сети

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

Существует ли такой алгоритм или эта задача не решается за полиномиальное время?


person Wander Nauta    schedule 15.05.2012    source источник
comment
Что вы подразумеваете под нечистым? В чем отсутствие нормальных алгоритмов?   -  person Saeed Amiri    schedule 15.05.2012
comment
Дуги могут иметь усиление, т. е. количество потока, входящего в дугу, может быть меньше, чем количество потока, выходящего из нее. В чистой сети будут только дуги с множителем 1.   -  person Wander Nauta    schedule 15.05.2012
comment
Значит, у каждой дуги может быть свой множитель? или все они будут иметь одинаковый множитель?   -  person Saeed Amiri    schedule 15.05.2012
comment
У каждой дуги может быть свой множитель.   -  person Wander Nauta    schedule 15.05.2012
comment
Я думаю, что нет проблем с использованием обычных алгоритмов потока, просто когда вы хотите рассчитать увеличивающий путь, выберите путь так, чтобы минимальный множитель на пути был максимальным по всем возможным путям, и добавьте поток как c*m (а не только c), Я думаю, что доказательство правильности этого не сложно, я подумаю об этом позже.   -  person Saeed Amiri    schedule 15.05.2012
comment
Привет @WanderNauta, ты когда-нибудь находил алгоритм или реализацию для этого?   -  person Cole Gleason    schedule 17.08.2017


Ответы (2)


Вот несколько ссылок на некоторые алгоритмы и некоторые пояснения:

  1. http://en.wikipedia.org/wiki/Edmonds-Karp_algorithm
  2. http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=maxFlow
  3. http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=maxFlow2

Это мое решение для максимального потока: извините за имя переменной, я тогда был молод :) http://infoarena.ro/job_detail/431616?action=view-source
Надеюсь, это помогло

person Mark    schedule 13.06.2012
comment
Кажется, все это для необобщенных сетей (то есть «нормальных» сетей, где каждый множитель равен 1). - person Wander Nauta; 16.06.2012

Первый (строго) полиномиальный алгоритм был опубликован Вегом в 2013 году, и с тех пор он улучшено Олвером и Вегом до наихудшего времени выполнения в O((m + n log n) m n log(n^2 / м)). Но я не знаю какой-либо общедоступной реализации этого алгоритма.

Связанные документы также содержат ссылки на более ранние (слабо) полиномиальные алгоритмы, а также на приближенные алгоритмы, некоторые из которых могут иметь общедоступные реализации. (В этой старой статье Тардоса и Уэйна упоминается C++ реализация.)

person user4235730    schedule 01.05.2018