基於圖的重新表述
對於一個元素為0或1的 \(N \times N\) 矩陣 \(A\),考慮從一個完整的二部圖構建的有向圖。該圖的頂點由兩部分組成:\((R_1, \dots, R_N)\) 和 \((C_1, \dots, C_N)\),其邊的方向如下:
- 如果 \(A_{i,j}=1\),則邊從 \(R_i\) 指向 \(C_j\)
- 如果 \(A_{i,j}=0\),則邊從 \(C_i\) 指向 \(R_j\)
此外,我們稱兩個圖是相似的,如果對於每個頂點,它們的入度和出度相等。我們說圖中的一條邊是固定的,如果該邊在所有相似圖中都存在(且方向相同)。
這樣的有向 \(K_{N,N}\) 圖和 \(N \times N\) 的矩陣之間存在一一對應關係,矩陣中在第 \(i\) 行第 \(j\) 列的元素固定相當於 \(R_i\) 和 \(C_j\) 之間的邊是固定的(不論方向如何)。透過這種有向圖的重新表述,我們可以對該圖進行分析。
解決方案
考慮兩個相似的圖,檢查在移除所有相同方向的邊後剩下的部分。根據相似圖的定義,剩下圖中每個頂點的入度和出度相等。這意味著剩下的圖由若干個迴圈組成。反過來,對於任何圖,如果我們將迴圈中的所有邊方向反轉,我們就得到了一個與原圖相似的圖。
因此,如果一條邊是迴圈的一部分,那麼它不是固定的。我們可以使用動態規劃來確定以下值的可能組合,總時間複雜度為 \(O(N^6)\)(如果常數因子過大,可以預先計算所有情況並硬編碼答案):
- 從 \((R_1, \dots, R_N)\) 中已分配到強連通分量的頂點數量
- 從 \((C_1, \dots, C_N)\) 中已分配到強連通分量的頂點數量
- 包含在強連通分量中的邊的數量(即,不是固定的)
請注意,由於圖是二部的,在建立強連通分量時,必須至少從 \((R_1, \dots, R_N)\) 和 \((C_1, \dots, C_N)\) 中各選擇兩個頂點。反之,如果兩個部分各有兩個或更多的頂點,則總是可以實現強連通性。**