1. 程式人生 > 其它 >最小割求最大權閉合子圖

最小割求最大權閉合子圖

現在是几几年,怎麼還在學網路流。

最小割求最大權閉合子圖

定義

有一個有向圖,每一個點都有一個權值(可以為正或負或 \(0\)),選擇一個權值和最大的子圖,使得每個點的後繼都在子圖裡面,這個子圖就叫最大權閉合子圖。

轉化成最小割問題

建立超級源點 \(s\) 和匯點 \(t\).

\(s\) 向每個正權點連邊,流量為權值的絕對值。這條邊存在代表該點所選子圖中。

每個負權點向 \(t\) 連邊,流量為權值的絕對值。這條邊存在代表該點不在所選子圖中。

原圖邊的流量均為 \(+\infty\) (不能被割掉)。

求該網路的最小割,即可求出最大權閉合子圖包含哪些點。

最大權閉合子圖的權值 \(=\)

正權和 \(-\) 最小割。

合法性

\(s\)\(t\) 不連通時,選出的子圖不滿足條件。假設有一條增廣路,\(s\to i\)\(j\to t\),則 \(i\) 被選中,\(j\) 沒有被選中,不符合限制。

\(s\)\(t\) 連通時,選出的子圖滿足條件。對於任意一個 \(s\to i\)

  • \(i\) 的後繼負節點到 \(t\) 的邊被割掉了,它們被選中了;

  • 由於已經割掉了 \(i\) 的所有後繼負節點,\(i\) 的後繼正節點一定無法走到 \(t\),割掉它們與 \(s\) 的邊是不優的,最小割不會把它們割掉,所以 \(i\) 的所有後繼正節點都被選中了。

最優性

根據前面的討論,任意一個合法的割都對應著唯一一個選點方案;任意一個合法的選點方案都對應著唯一一個割。

這樣任意一個割和選點方案都組成了一個雙射。由於一個選點方案的權值 \(=\) 正權和 \(-\) 割的大小。

所以最大權閉合子圖的權值 \(=\) 正權和 \(-\) 最小割。