传递闭包

转自:点击打开链接
今天有人提到了传递闭包,我简单说说吧。 

所谓传递性,可以这样理解:对于一个节点i,如果j能到i,i能到k,那么j就能到k。求传递闭包,就是把图中所有满足这样传递性的节点都弄出来,计算完成后,我们也就知道任意两个节点之间是否相连。 
传递闭包的计算过程一般可以用Warshell算法描述: 
For 每个节点i Do 
    For 每个节点j Do 
    If j能到i Then 
        For 每个节点k Do 
        a[j, k] := a[j, k] Or ( a[j, i] And a[ i, k] ) 
其中a数组为布尔数组,用来描述两个节点是否相连,可以看做一个无权图的邻接矩阵。可以看到,算法过程跟Floyd很相似,三重循环,枚举每个中间节点。只不过传递闭包只需要求出两个节点是否相连,而不用求其间的最短路径长。


猜你喜欢

转载自blog.csdn.net/qq_40510246/article/details/80174088