Мотивация: в стандартных алгоритмах увеличения потока по траектории внутренний цикл требует поиска путей от источника к стоку в ориентированном взвешенном графике. Теоретически, общеизвестно, что для того, чтобы алгоритм даже завершился, когда существуют иррациональные ребристые емкости, нам нужно наложить ограничения на пути, которые мы находим. Алгоритм Эдмондса-Карпа, например, говорит нам, чтобы найти кратчайшие пути.
Опытным путем было замечено, что мы могли бы также хотеть найти толстые (есть ли лучший термин для этого?) Пути. Например, при использовании масштабирования емкости мы находим кратчайшие пути, которые могут нести как минимум объема потока. Нет ограничений на длину пути. Когда мы больше не можем найти какие-либо пути, мы уменьшаем ϵ и повторяем.
Я заинтересован в оптимизации выбора путей расширения для очень специфического применения max-flow, и я хочу исследовать этот компромисс между короткими и толстыми путями. (Примечание: мне не обязательно всегда решать проблему. Меня больше всего интересует нахождение наибольшей нижней границы потока за кратчайшее время стенок.)
Вопрос: существует ли стандартный способ интерполяции между подходом кратчайшего пути и подходом масштабирования емкости? То есть, существует ли алгоритм для поиска путей, которые бывают как короткими, так и толстыми, где в идеале какой-то параметр будет контролировать, какую длину пути мы готовы обменять на жирность? В крайнем случае я хотел бы иметь возможность восстанавливать кратчайшие пути на одном конце и пути в стиле масштабирования емкости на другом.
Ответы:
В духе вашего комментария о «довольно хорошо, но не обязательно оптимально», я представляю следующую идею абсолютно без гарантии оптимальности!
Для полноты ниже приведен псевдокод, на который вы ссылались (примечание: связанный алгоритм предполагает, что значения границ являются целыми числами от 1 до C, а значения потока и остаточной емкости являются целыми):
источник