Определение уникальности минимального среза

отказ от ответственности: этот был домашнее задание. крайний срок уже прошел, поэтому обсуждения могут продолжаться без необходимости беспокоиться об этом.

проблема, с которой я борюсь, заключается в том, чтобы определить, является ли определенный минимум s-t вырезать в графе G = (V, E) - Это уникальная. Это достаточно просто найти некоторые min-cut с использованием алгоритма max-flow согласно , но как бы вы показали, что это на мин-отрезать?

3 ответов


хорошо, так как вы не хотите весь ответ сразу, я дам вам несколько советов. Читайте столько, сколько считаете нужным, а если сдадитесь - читайте все.

1:
Отрезок уникально iff никакой другой min-отрезок.

2:
Если вам удастся найти другой min-cut, то первый min-cut не уникален.

3:
Ваша связь дала нам один мин-кат, который все достижимые вершины из s в остаточном графе. Можете ли вы придумать способ получить другой разрез, не обязательно один и тот же?

4:
Почему мы взяли эти вершины, достижимые из s, в частности?

5:
Может быть, мы можем сделать что-то аналогичное от Т?

6:
Посмотрите на тот же остаточный график, начиная с t. Посмотрите на группу вершин, достижимых из t в реверс направление стрелок (имеется в виду все вершины, которые могут достигать t).

7:
Эта группа также является min-cut (или фактически s \ that group, если быть точным).

8 (окончательный ответ):
Если этот разрез идентичен вашему первоначальному разрезу, то есть только один. В противном случае вы только что нашли 2 разреза, поэтому оригинальный не может быть уникальным.


схема:

учитывая минимальный S-T разрез, (U, V) с режущими кромками E', мы делаем одно простое наблюдение: если этот минимальный разрез не уникален, то существует какой-то другой минимальный разрез с набором режущих кромок E", такой, что E" != E'.

Если это так, мы можем перебирать каждый край в E', добавлять к его емкости, пересчитывать максимальный поток и проверять, увеличился ли он.

в результате вышеизложенного наблюдения существует ребро в E', которое при увеличении максимального потока не увеличивает iff первоначальный отрезок не уникально.

Я оставлю вас, чтобы заполнить детали и доказать, что это многовременная задача.


учитывая, что задача max flow/min cut действительно является проблемой линейного программирования(primal/dual соответственно), я считаю, что в этом контексте можно использовать любой метод проверки уникальности решения LP и поиска альтернативного оптимального решения, если оно не уникально. Я погуглил, чтобы найти эту бумагу :об уникальности решений линейных программ EDIT 1: основываясь на предложении Чжуана, для тех, кто не знает, что теорема maxflow-mincut является частным случаем сильной двойственности теорема в линейном программировании, вот ссылка, объясняющая этот нюанс: https://en.wikipedia.org/wiki/Max-flow_min-cut_theorem#Linear_program_formulation