2014-06-14

Transitive Closure of a Directed Graph

此為類似Floyd-Warshall Algorithm的一種應用,
想要知道在Graph中,從vertex i能不能抵達vertex j。

給一個Graph G=(V,E),
定義G的transitive closure為G*=(V,E*),
其中E*={(i,j):在G中存在一條路徑使得i可以抵達j}






若在G中,
從vertex i經過一些中介點後可以找到一條路徑抵達vertex j,
而那些中介點都在set {1,2,...,k}之中,則定義tij(k)為1,反之定義為0,
其中i,j,k的值為1,2,...,n。
接下來要計算一連串的矩陣T(k) = (tij(k))。



Introduction to Algorithms Fig. 25.5








































T(k)(i,j) = T(k-1)(i,j) [T(k-1)(i,k) ∧ T(k-1)(k,j)]
            可以直接到          可以先經過k再到j

例:
T(2)(3,4)
= T(1)(3,4) ∨ [T(1)(3,2) ∧ T(1)(2,4)]
= 0 ∨ (1 ∧ 1) = 1

最後T(4)代表最後結果,
0代表無法抵達,1代表可以抵達。

沒有留言:

張貼留言