Интуиция, связанная с остаточным графом в задаче о максимальном потоке, очень хорошо представлена в этой лекции. Объяснение состоит в следующем.
Предположим, что мы пытаемся решить проблему максимального потока для следующей сети (где каждая метка обозначает как поток проталкиваемый через ребро и емкость этого ребра):е е / с е е е е с йGfe/cefeece
Один из возможных жадных подходов заключается в следующем:
- Выберите произвольный путь расширения который идет от исходной вершины s к стоковой вершине t так , что ∀ ePst ); то есть все ребра в P имеют доступную емкость.∀e(e∈P→fe<ceP
- ΔΔPΔ = минe ∈ P( се- фе)
- Переходите к шагу 1 до тех пор, пока не будет расширенных путей.
То есть найдите путь с доступной емкостью, отправьте поток по этому пути и повторите.
В , одно возможное исполнение выше эвристических находок три пути увеличения , и , в этом порядке. Эти пути перемещают 2, 2 и 1 единицы потока, соответственно, для общего потока 5:P 1 P 2 P 3граммп1п2п3
Выбор путей в этом порядке приводит к оптимальному решению; однако что произойдет, если мы сначала выберем (т. е. перед и )?P 1 P 2п3п1п2
Мы получаем то, что называется потоком блокирования : больше не существует путей расширения. В этом случае общий поток равен 3, что не является оптимальным. Эту проблему можно решить, разрешив операции отмены (т. Е. Разрешив отправку потока в обратном порядке, отменив работу предыдущих итераций): просто переместите 2 единицы потока назад от вершины к вершине следующим образом:vвесv
Кодирование этих разрешенных операций отмены является основной целью остаточного графа .
Остаточный граф сети имеет тот же набор вершин, что и и включает для каждого ребра :G G e = ( u , v ) ∈ GRGGe=(u,v)∈G
Передний фронт с емкостью , если .c e - f e c e - f e > 0e′=(u,v)ce−fece−fe>0
Обратный край с емкостью , если .f e f e > 0e′′=(v,u)fefe>0
Например, рассмотрим остаточный граф который получается после первой итерации жадной эвристики, когда эвристика сначала выбирает (то есть, когда он получает поток блокировки):P 3RP3
Обратите внимание, что операция отмены, которая перемещает 2 единицы потока от к , закодирована как прямой (увеличивающий) путь от к в :v s t RwvstR
В общем:
Когда расширяющий путь выбран в остаточном графе : RP′R
- Каждое ребро в которое соответствует переднему ребру в увеличивает поток, используя ребро с доступной емкостью. GP′G
- Каждое ребро в которое соответствует ребру, идущему назад в отменяет поток, который был перемещен в прямом направлении в прошлом. GP′G
Это основная идея метода Форда-Фулкерсона .
Метод Форда – Фулкерсона действует точно так же, как и описанный выше жадный подход, но останавливается только тогда, когда в остаточном графе больше нет увеличивающих путей (не в исходной сети). Метод корректен (т. Е. Он всегда вычисляет максимальный поток), поскольку остаточный граф устанавливает следующие условия оптимальности :
Для данной сети поток максимален в если в остаточном графе нет пути.f G s - тGfGs−t
Интуиция за остаточной сетью заключается в том, что она позволяет нам «отменить» уже назначенный поток, т. Е. Если мы уже присвоили 2 единицы потока от до , то передача 1 единицы потока из в интерпретируется как отмена одной единицы исходного потока от к .B B A A BA B B A A B
источник