強連通元件
在有向圖的數學理論中,如果一個圖的每一個頂點都可從該圖其他任意一點到達,則稱該圖是強連通的。在任意有向圖中能夠實現強連通的部分我們稱其為強連通元件。判斷一個圖是否為強連通以及找到一個圖強連通元件只需要線性時間(Θ(V + E))。
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Scc-1.svg/220px-Scc-1.svg.png)
定義
編輯如果有向圖的每一對頂點之間在每個方向上都有一條路徑,則稱該有向圖為強連通圖。也就是說,頂點對中的第一個頂點到第二個頂點存在一條路徑,從第二個頂點到第一個頂點存在另一條路徑。在本身可能不是強連通的有向圖 中,如果一對頂點 和 之間在每個方向上都有一條路徑,則稱它們是強連通的。
強連通的二元關係是一個等價關係,其等價類的導出子圖稱為強連通元件。同樣地,有向圖 的強連通元件是一個強連通的子圖,並且在這個子圖上是最大的,這意味着在不破壞 的強連通特性的情況下,任何來自 的額外邊或頂點都不能包含在子圖中。強連通元件的集合構成了 的頂點集的一個子集。
如果將每個強連通元件收縮為單個頂點,則得到的圖是一個有向無環圖。若且唯若有向圖不包含具有多個頂點的強連通子圖時,它就是無環的,這是因為如果有向圖是強連通的,則每個非單調強連通元件至少包含一個有向環。
算法
編輯基於DFS的線性時間算法
編輯幾種基於深度優先搜索並能在線性時間內計算強連通元件的算法。
應用
編輯尋找強連通元件的算法可以用來解決2-SAT問題(由帶有對於變量對的值的限制的布爾變量構成的系統):如Aspvall, Plass & Tarjan (1979) 所示,一個2-SAT實例是無解的,若且唯若有一個變量v使得v和它的互補被包含在實例的隱含圖的同一個強連通元件中。[4]
強連通元件也被用來計算Dulmage–Mendelsohn 分解,一種二分圖的邊的分類,根據它們能否作為圖中的完美匹配。[5]
參考文獻
編輯- ^ Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Section 22.5, pp. 552–557.
- ^ Sharir, Micha, A strong-connectivity algorithm and its applications in data flow analysis, Computers & Mathematics with Applications, 1981, 7: 67–72, doi:10.1016/0898-1221(81)90008-0
- ^ Tarjan, R. E., Depth-first search and linear graph algorithms, SIAM Journal on Computing, 1972, 1 (2): 146–160, doi:10.1137/0201010
- ^ Aspvall, Bengt; Plass, Michael F.; Tarjan, Robert E., A linear-time algorithm for testing the truth of certain quantified boolean formulas, Information Processing Letters, 1979, 8 (3): 121–123, doi:10.1016/0020-0190(79)90002-4.
- ^ Dulmage, A. L. & Mendelsohn, N. S., Coverings of bipartite graphs, Can. J. Math., 1958, 10: 517–534, S2CID 123363425, doi:10.4153/cjm-1958-052-0.
外部連結
編輯- Aspvall, Bengt; Plass, Michael F.; Tarjan, Robert E., A linear-time algorithm for testing the truth of certain quantified boolean formulas, Information Processing Letters, 1979, 8 (3): 121–123, doi:10.1016/0020-0190(79)90002-4.
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Section 22.5, pp. 552–557.