Ответ 1
Я считаю, что вы можете решить эту проблему, найдя минимальное сокращение графика со слегка измененными ограничениями. Идея заключается в следующем: поскольку стоимость разреза равна общей пропускной способности, пересекающей разрез, мы можем попробовать изменить график, добавив дополнительный край из каждого node в графе к t, который имеет емкость один. Интуитивно это означало бы, что каждый node в той же части разреза, что и, внесет одну дополнительную стоимость в общую стоимость разреза, потому что край от этого node до t пересечет край. Конечно, это определенно испортило бы минимальный разрез из-за дополнительной емкости. Чтобы исправить это, применим следующее преобразование: во-первых, умножьте емкости ребер на n, где n - число узлов в графе. Затем добавьте один к каждому ребру. Интуиция здесь заключается в том, что, умножая пропускные способности к краю на n, мы сделали так, чтобы стоимость min-cut (игнорируя новые ребра от каждого node до t) будет в n раз больше первоначальной стоимости разреза, Когда мы добавляем дополнительные края одной емкости из каждого node в t, максимальный возможный вклад, который эти ребра могут внести в стоимость разреза, равен n - 1 (если каждый node на графике, кроме t, равен на той же стороне, что и s). Таким образом, стоимость старого минимального разреза была C, стоимость нового минимального разреза (S, V - S) равна nC + | S |, где | S | - количество узлов на одной стороне разреза как s.
Более формально конструкция такова. Учитывая направленный, емкостный граф G и пару (источник, приемник) (s, t), построим граф G ', выполнив следующее:
- Для каждого ребра (u, v) в графе умножьте его емкость на n.
- Для каждого node v на графике добавьте новое ребро (v, t) с емкостью 1.
- Вычислить min s-t, вырезанный на графике.
Я утверждаю, что min s-t, вырезанный на графе G ', соответствует min s-t, вырезанного на графе G с наименьшим количеством узлов на одной стороне разреза в виде s. Доказательство состоит в следующем. Пусть (S, V - S) - min s-t, вырезанная в G '. Во-первых, нам нужно показать, что (S, V - S) является min s-t разрезом в G. Это доказательство от противного; предположим для противоречия, что существует s-t cut (S ', V - S'), стоимость которого ниже стоимости (S, V - S). Пусть стоимость (S ', V - S') в G равна C ', а стоимость (S, V - S) в G равна C. Теперь рассмотрим стоимость этих двух разрезов в G'. По сужению стоимость C 'будет nC' + | S '| (так как каждая node на стороне S 'разреза вносит одну пропускную способность через разрез), а стоимость C будет nC + | S |. Поскольку мы знаем, что C ' C, мы должны иметь C '+ 1 & le; C. Таким образом,
nC + | S | & GE; n (C '+ 1) + | S | = nC '+ n + | S |
Теперь обратите внимание, что 0 & le; | S | < n и 0 & le; | S '| < n, поскольку на одной стороне разреза может быть не более n узлов. Таким образом,
nC + | S | & GE; nC '+ n + | S | > nC '+ | S' | + | S | > nC '+ | S' |
Но это означает, что стоимость (S, V - S) в G 'больше стоимости (S', V - S ') в G', что противоречит тому, что (S, V - S) является минимальным разрезом в G '. Это позволяет сделать вывод, что любой отрезок min s-t в G 'также является min s-t, вырезанным в G.
Теперь нам нужно показать, что не только минимальный разрез в G 'также минимальный разрез в G, но он соответствует min st cut в G с наименьшим числом узлов на одной стороне разрезать как s. Опять же, это доказательство противоречит; предположим, что (S, V - S) является min s-t, вырезанным в G ', но существует некоторое min s-t, разрезанное в G с меньшим числом узлов на s-стороне разреза. Назовите этот лучший срез (S ', V - S'). Так как (S, V - S) является минимальным разрезом в G ', это также min st cut в G, поэтому стоимость (S', V - S ') и (S, V - S) в G равна некоторое число C. Тогда стоимость (S, V - S) и (S ', V - S') в G 'будет nC + | S | и nC + | S '|, соответственно. Мы знаем, что nC + | S '| < nC + | S |, так как мы выбрали (S ', V - S') как st min cut в G с наименьшим числом узлов на той же стороне, что и S. Но это означает, что (S ', V - S ') имеет более низкую стоимость, чем (S, V - S), что противоречит тому, что (S, V - S) является минимальным разрезом в G'. Таким образом, наше предположение было неверным и (S, V - S) - это min s-t cut в G с наименьшим числом узлов на той же стороне, что и S. Это завершает доказательство корректности конструкции.
Надеюсь, это поможет!