Вариант алгоритма Форда-Фулкерсона.

Предположим, что мы переопределяем остаточную сеть, чтобы запретить ребрам s. Утверждают, что процедура FORD-FULKERSON по-прежнему корректно вычисляет максимальный поток.

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

s to x_1 leadsto y leadsto x_2 to s to x_3 leadsto t

Но если мы снова запретим ребра в s, мы сможем найти тот же путь без цикла. Все вышеизложенное — интуитивные идеи, но мне нужно формальное доказательство.

Вопрос взят из Introduction to Algorithms Cormen et al.


person justice league    schedule 05.09.2012    source источник


Ответы (1)


Я думаю, ваших интуитивных идей уже вполне достаточно для доказательства. Рассмотрим два графа: в графе G1 мы допускаем ребра в s, а в графе G2 — нет.

Теперь предположим, что алгоритм Форда-Фалкерсона находит больший поток в G1, чем в G2. Так как все увеличивающие пути в G2 действительны и в G1, мы можем использовать одни и те же увеличивающие пути на обоих графах как можно дольше, а затем получить состояние остаточной сети, в котором есть увеличивающий путь в G1, но нет в G1. Г2.

Однако, как вы указали, любой увеличивающий путь, допустимый в G1, также действителен в G2, при условии, что мы удаляем все ребра, предшествующие последнему посещению s. Следовательно, наше предположение неверно, и такой ситуации быть не может — Форд-Фулкерсон будет производить одинаковую продукцию как на G1, так и на G2.

person ffao    schedule 04.10.2012