编程语言
首页 > 编程语言> > 【离散数学】求解传递闭包的Warshall算法

【离散数学】求解传递闭包的Warshall算法

作者:互联网

定义

∣ X ∣ = n |X|=n ∣X∣=n, R ⊆ X × X R⊆X\times{X} R⊆X×X,令 M R = A M_{R}=A MR​=A, R 2 R^{2} R2的矩阵为 A ( 2 ) A^{(2)} A(2),……, R k R^{k} Rk的矩阵为 A ( k ) A^{(k)} A(k), t ( R ) t(R) t(R)的矩阵记作为 M R + = A + A ( 2 ) + . . . + A ( k ) + . . . M_{R+}=A+A^{(2)}+...+A^{(k)}+... MR+​=A+A(2)+...+A(k)+...(此处 + + +表示逻辑加)。

算法步骤

  1. 置新矩阵 A : = M R A:=M_{R} A:=MR​
  2. 置 i = 1 i=1 i=1
  3. 对所有的 j j j,如果 A [ j , i ] = 1 A[j,i]=1 A[j,i]=1,则对 k = 1 , 2 , . . . , n k=1,2,...,n k=1,2,...,n, A [ j , k ] : = A [ j , k ] + A [ i , k ] A[j,k]:=A[j,k]+A[i,k] A[j,k]:=A[j,k]+A[i,k]
  4. i : = i + 1 i:=i+1 i:=i+1
  5. 如果 i ≤ n i≤n i≤n,回到第3步,否则停止。

注意此处矩阵元素的加法是逻辑加。

实例

令 X = 1 , 2 , 3 , 4 X={1,2,3,4} X=1,2,3,4, X X X中关系 R R R图如下所示,用Warshall算法求 t ( R ) t(R) t(R)的矩阵。
在这里插入图片描述

得到下面的有向关系图:

在这里插入图片描述

标签:闭包,begin,end,0001,Warshall,离散数学,bmatrix,1101,1001
来源: https://blog.csdn.net/weixin_43896318/article/details/113791915