簡介
對於強連通分量,是只懂得原理,但不知道如何用算法實現求解。今天就對強連通分量的算法進行一個整理,也對強連通分量的實例進行分析。
強連通分量
強連通分量出現在有向有環圖中,每一個連通的分量都可以被當作是強連通分量。如左下圖每一個虛線框內都是一個強連通分量,右下圖則將強連通分量當作一個結點後構成的一個DAG
在《算法概論》中採用的pre,post時間序列的線性算法中,強連通分量有以下的特點:
1. 在DFS中得到的post值最大的頂點一定位於一個源點強連通部件中
2. 如果C和C’是強連通部件,同時從C中的一個頂點到C’中的一個頂點存在一條邊,則C中post的最大值要大於C’中post的最大值。
3. 每個有向圖至少存在一個匯點和一個源點
根據上面的性質,強連通部件能夠通過按照其各自內部頂點的post最大值的降序排列,實現線性化。
一旦我們找到了第一個匯點強連通部件,就將它從圖中刪除(刪除該強連通部件的所有結點),得到的新圖中的post值最大的頂點一定在新圖中的一個匯點強連通部件中。從而我們可以重複使用這種基於針對