我正在從數字輸入文件實現強連接組件程序。我知道如何做到這一點,但很難在python中實現它的算法。爲文件中的整數實現強連接組件
強連接組分(G) 1. G上運行DFS來計算結束時間 2.計算G「 3.運行DFS上G」,但選擇訪問次數哪個節點爲了這樣做時 減小結束時間 4.輸出的每個樹的深度優先森林的頂點(如在步驟1計算的)的步驟3中作爲一個單獨的強連通分量的
文件看起來像這樣:
5 5
1 2
2 4
2 3
3 4
4 5
第一行是no。其餘的線是由空間分隔的兩個整數u和v,這意味着從節點u到節點v的有向邊。輸出將是強連通分量和這些分量的數量。
DFS(G)
1 for each vertex u in G.V
2 u.color = WHITE
3 u.π = NIL
4 time = 0
5 for each vertex u in G.V
6 if u.color == WHITE
7 DFS-VISIT(G, u)
DFS-VISIT(G, u)
1 time = time + 1 // white vertex u has just been discovered
2 u.d = time
3 u.color = GRAY
4 for each v in G.adj[u]
5 if v.color == WHITE
6 v.π = u
7 DFS-VISIT(G, u)
8 u.color = BLACK // blacken u; it is finished
9 time = time + 1
10 u.f = time
在上述算法中,我應該如何遍歷反向圖來找到SCC。
能否請您解釋代碼如果可能的話?你如何利用從file.Did您使用此輸入 - 開放(文件名)爲行: – Rgeek 2014-10-09 16:13:20
我假設你正在閱讀stdin,就像在大多數比賽中所做的那樣。您不必打開文件,只需使用'python source.py
2014-10-09 16:17:13
好吧,我瞭解您定義的遞歸函數,但不能在此之後。 – Rgeek 2014-10-09 16:32:11