解释结构模型ISM-1-1

利用Warshall转移闭包思想,快速迭代获得可达矩阵。步骤

传递闭包Warshall方法简要介绍

  ① 在集合X上的二元关系R的传递闭包是包含R的X上的最小的传递关系。R的传递闭包在数字图像处理的图像和视觉基础、图的连通性描述等方面都是基本概念。一般用B表示定义在具有n个元素的集合X上关系R的n×n二值矩阵,则传递闭包的矩阵B+可如下计算: B+ = B + B2 + B3 + ……+ (B)n

   ② 式中矩阵运算时所有乘法都用逻辑与代替,所有加法都用逻辑或代替。上式中的操作次序为B,B(B),B(BB),B(BBB),……,所以在运算的每一步我们只需简单地把现有结果乘以B。

Warshall在1962年提出了一个求关系的传递闭包的有效算法

  其具体过程如下,设在n个元素的有限集上关系R的关系矩阵为M:
  (1)置新矩阵A=M;
  (2)置k=1;
  (3)对所有i如果A[i,k]=1,则对j=1..n执行:
     A[i,j]←A[i,j]∨A[k,j];
  (4)k增1;
  (5)如果k≤n,则转到步骤(3),否则停止。
  所得的矩阵A即为关系R的传递闭包t(R)的关系矩阵。
  在《离散数学》中都提及了该算法

Warshall算法映射到有向图中

  设关系R的关系图为G,设图G的所有顶点为u1,u2,…,un,则t(R)的关系图可用该方法得到:若G中任意两顶点ui和uj之间有一条路径且没有ui到uj的弧,则在图G中增加一条从ui到uj的弧,将这样改造后的图记为G’,则G’即为t(R)的关系图。G’的邻接矩阵A应满足:若图G中存在从ui到uj路径,即ui与uj连通,则A[i,j]=1,否则A[i,j]=0。

   这样,求t(R)的问题就变为求图G中每一对顶点间是否连通的问题。

  相乘矩阵,就为所有节点的关系图,也就是当前条件下的关系矩阵。 

  对于相乘矩阵,进行迭代,迭代的过程为,行取值,然后计算值中对应的每一行的值取并集,得到当前行的关系集合。

  取完所有行,得到了一个新的转移矩阵再对转移矩阵进行进行求解。

  本处获得可达矩阵的流程为:

  (1) 设置求解矩阵

  (2)判断求解出的转移矩阵是否跟求解矩阵一致,如果一致,则得到的矩阵为原始矩阵的可达矩阵,如果不一致进行 Warshall迭代求解。

  假定矩阵为5*5的布尔矩阵,假定第一行A[0,0]=1,A[0,1]=1,A[0,2]=1,A[0,3]=1,A[0,4]=1,

  Warshall迭代求解过程第一行的值如下:A0=A[0]∨A[1]∨A[2]∨A[3]∨A[4]。

  其它行同理。

  快速迭代函数的代码量非常少,同时如果数据结构合理,一次集合运算的运算量非常的小。

Warshall的迭代次数比逐次平方法的运行效率要少。如果图中的顶点是有序的排列,只要进行一次Warshall快速迭代运算就可以获得可达矩阵。因此要更快的获得可达矩阵,可以先对图进行排序。

目前的通过多次快速迭代求可达矩阵,其效率也是非常的差的,它还不是一个线性算法,在已经研究的方法中通过Gabow算法先获得回路列表,根据回路列表进行传递闭包的快速迭代是最快的。具体步骤如下:

 

 0号1号2号3号4号5号6号7号8号9号10号11号12号13号14号15号16号17号18号19号20号21号22号
0号    1                  
1号                1      
2号                  1    
3号                1      
4号       1               
5号   1                   
6号     1                 
7号   11                  
8号                      1
9号                   1   
10号                   1   
11号  1       1            
12号1                      
13号              1        
14号       1               
15号 1                     
16号       1               
17号     1                 
18号      1                
19号 1                     
20号    1                  
21号                   1   
22号                       

第 1 次迭代
        当前0号要素 0号 的可达集合(0号,4号 )
           0号要素 0号 的可达集合0号,4号
           4号要素 4号 的可达集合4号,7号
        当前0号要素 0号 的可达集合(0号,4号,7号 )
        当前1号要素 1号 的可达集合(1号,16号 )
           1号要素 1号 的可达集合1号,16号
           16号要素 16号 的可达集合7号,16号
        当前1号要素 1号 的可达集合(1号,16号,7号 )
        当前2号要素 2号 的可达集合(2号,18号 )
           2号要素 2号 的可达集合2号,18号
           18号要素 18号 的可达集合6号,18号
        当前2号要素 2号 的可达集合(2号,18号,6号 )
        当前3号要素 3号 的可达集合(3号,16号 )
           3号要素 3号 的可达集合3号,16号
           16号要素 16号 的可达集合7号,16号
        当前3号要素 3号 的可达集合(3号,16号,7号 )
        当前4号要素 4号 的可达集合(4号,7号 )
           4号要素 4号 的可达集合4号,7号
           7号要素 7号 的可达集合3号,4号,7号
        当前4号要素 4号 的可达集合(4号,7号,3号 )
        当前5号要素 5号 的可达集合(3号,5号 )
           3号要素 3号 的可达集合3号,16号,7号
           5号要素 5号 的可达集合3号,5号
        当前5号要素 5号 的可达集合(3号,5号,16号,7号 )
        当前6号要素 6号 的可达集合(5号,6号 )
           5号要素 5号 的可达集合3号,5号,16号,7号
           6号要素 6号 的可达集合5号,6号
        当前6号要素 6号 的可达集合(5号,6号,3号,16号,7号 )
        当前7号要素 7号 的可达集合(3号,4号,7号 )
           3号要素 3号 的可达集合3号,16号,7号
           4号要素 4号 的可达集合4号,7号,3号
           7号要素 7号 的可达集合3号,4号,7号
        当前7号要素 7号 的可达集合(3号,4号,7号,16号 )
        当前8号要素 8号 的可达集合(8号,22号 )
           8号要素 8号 的可达集合8号,22号
           22号要素 22号 的可达集合22号
        当前8号要素 8号 的可达集合(8号,22号 )
        当前9号要素 9号 的可达集合(9号,19号 )
           9号要素 9号 的可达集合9号,19号
           19号要素 19号 的可达集合1号,19号
        当前9号要素 9号 的可达集合(9号,19号,1号 )
        当前10号要素 10号 的可达集合(10号,19号 )
           10号要素 10号 的可达集合10号,19号
           19号要素 19号 的可达集合1号,19号
        当前10号要素 10号 的可达集合(10号,19号,1号 )
        当前11号要素 11号 的可达集合(2号,10号,11号 )
           2号要素 2号 的可达集合2号,18号,6号
           10号要素 10号 的可达集合10号,19号,1号
           11号要素 11号 的可达集合2号,10号,11号
        当前11号要素 11号 的可达集合(2号,10号,11号,19号,1号,18号,6号 )
        当前12号要素 12号 的可达集合(0号,12号 )
           0号要素 0号 的可达集合0号,4号,7号
           12号要素 12号 的可达集合0号,12号
        当前12号要素 12号 的可达集合(0号,12号,4号,7号 )
        当前13号要素 13号 的可达集合(13号,14号 )
           13号要素 13号 的可达集合13号,14号
           14号要素 14号 的可达集合7号,14号
        当前13号要素 13号 的可达集合(13号,14号,7号 )
        当前14号要素 14号 的可达集合(7号,14号 )
           7号要素 7号 的可达集合3号,4号,7号,16号
           14号要素 14号 的可达集合7号,14号
        当前14号要素 14号 的可达集合(7号,14号,3号,4号,16号 )
        当前15号要素 15号 的可达集合(1号,15号 )
           1号要素 1号 的可达集合1号,16号,7号
           15号要素 15号 的可达集合1号,15号
        当前15号要素 15号 的可达集合(1号,15号,16号,7号 )
        当前16号要素 16号 的可达集合(7号,16号 )
           7号要素 7号 的可达集合3号,4号,7号,16号
           16号要素 16号 的可达集合7号,16号
        当前16号要素 16号 的可达集合(7号,16号,3号,4号 )
        当前17号要素 17号 的可达集合(5号,17号 )
           5号要素 5号 的可达集合3号,5号,16号,7号
           17号要素 17号 的可达集合5号,17号
        当前17号要素 17号 的可达集合(5号,17号,3号,16号,7号 )
        当前18号要素 18号 的可达集合(6号,18号 )
           6号要素 6号 的可达集合5号,6号,3号,16号,7号
           18号要素 18号 的可达集合6号,18号
        当前18号要素 18号 的可达集合(6号,18号,5号,3号,16号,7号 )
        当前19号要素 19号 的可达集合(1号,19号 )
           1号要素 1号 的可达集合1号,16号,7号
           19号要素 19号 的可达集合1号,19号
        当前19号要素 19号 的可达集合(1号,19号,16号,7号 )
        当前20号要素 20号 的可达集合(4号,20号 )
           4号要素 4号 的可达集合4号,7号,3号
           20号要素 20号 的可达集合4号,20号
        当前20号要素 20号 的可达集合(4号,20号,7号,3号 )
        当前21号要素 21号 的可达集合(19号,21号 )
           19号要素 19号 的可达集合1号,19号,16号,7号
           21号要素 21号 的可达集合19号,21号
        当前21号要素 21号 的可达集合(19号,21号,1号,16号,7号 )
        当前22号要素 22号 的可达集合(22号 )
           22号要素 22号 的可达集合22号
        当前22号要素 22号 的可达集合(22号 )

 第 1 次迭代 得到的转移矩阵如下

 0号1号2号3号4号5号6号7号8号9号10号11号12号13号14号15号16号17号18号19号20号21号22号
0号1   1  1               
1号 1     1        1      
2号  1   1           1    
3号   1   1        1      
4号   11  1               
5号   1 1 1        1      
6号   1 111        1      
7号   11  1        1      
8号        1             1
9号 1       1         1   
10号 1        1        1   
11号 11   1   11      11   
12号1   1  1    1          
13号       1     11        
14号   11  1      1 1      
15号 1     1       11      
16号   11  1        1      
17号   1 1 1        11     
18号   1 111        1 1    
19号 1     1        1  1   
20号   11  1            1  
21号 1     1        1  1 1 
22号                      1
第 2 次迭代 
        当前0号要素 0号 的可达集合(0号,4号,7号 )
           0号要素 0号 的可达集合0号,4号,7号
           4号要素 4号 的可达集合3号,4号,7号
           7号要素 7号 的可达集合3号,4号,7号,16号
        当前0号要素 0号 的可达集合(0号,4号,7号,3号,16号 )
        当前1号要素 1号 的可达集合(1号,7号,16号 )
           1号要素 1号 的可达集合1号,7号,16号
           7号要素 7号 的可达集合3号,4号,7号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
        当前1号要素 1号 的可达集合(1号,7号,16号,3号,4号 )
        当前2号要素 2号 的可达集合(2号,6号,18号 )
           2号要素 2号 的可达集合2号,6号,18号
           6号要素 6号 的可达集合3号,5号,6号,7号,16号
           18号要素 18号 的可达集合3号,5号,6号,7号,16号,18号
        当前2号要素 2号 的可达集合(2号,6号,18号,3号,5号,7号,16号 )
        当前3号要素 3号 的可达集合(3号,7号,16号 )
           3号要素 3号 的可达集合3号,7号,16号
           7号要素 7号 的可达集合3号,4号,7号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
        当前3号要素 3号 的可达集合(3号,7号,16号,4号 )
        当前4号要素 4号 的可达集合(3号,4号,7号 )
           3号要素 3号 的可达集合3号,7号,16号,4号
           4号要素 4号 的可达集合3号,4号,7号
           7号要素 7号 的可达集合3号,4号,7号,16号
        当前4号要素 4号 的可达集合(3号,4号,7号,16号 )
        当前5号要素 5号 的可达集合(3号,5号,7号,16号 )
           3号要素 3号 的可达集合3号,7号,16号,4号
           5号要素 5号 的可达集合3号,5号,7号,16号
           7号要素 7号 的可达集合3号,4号,7号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
        当前5号要素 5号 的可达集合(3号,5号,7号,16号,4号 )
        当前6号要素 6号 的可达集合(3号,5号,6号,7号,16号 )
           3号要素 3号 的可达集合3号,7号,16号,4号
           5号要素 5号 的可达集合3号,5号,7号,16号,4号
           6号要素 6号 的可达集合3号,5号,6号,7号,16号
           7号要素 7号 的可达集合3号,4号,7号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
        当前6号要素 6号 的可达集合(3号,5号,6号,7号,16号,4号 )
        当前7号要素 7号 的可达集合(3号,4号,7号,16号 )
           3号要素 3号 的可达集合3号,7号,16号,4号
           4号要素 4号 的可达集合3号,4号,7号,16号
           7号要素 7号 的可达集合3号,4号,7号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
        当前7号要素 7号 的可达集合(3号,4号,7号,16号 )
        当前8号要素 8号 的可达集合(8号,22号 )
           8号要素 8号 的可达集合8号,22号
           22号要素 22号 的可达集合22号
        当前8号要素 8号 的可达集合(8号,22号 )
        当前9号要素 9号 的可达集合(1号,9号,19号 )
           1号要素 1号 的可达集合1号,7号,16号,3号,4号
           9号要素 9号 的可达集合1号,9号,19号
           19号要素 19号 的可达集合1号,7号,16号,19号
        当前9号要素 9号 的可达集合(1号,9号,19号,7号,16号,3号,4号 )
        当前10号要素 10号 的可达集合(1号,10号,19号 )
           1号要素 1号 的可达集合1号,7号,16号,3号,4号
           10号要素 10号 的可达集合1号,10号,19号
           19号要素 19号 的可达集合1号,7号,16号,19号
        当前10号要素 10号 的可达集合(1号,10号,19号,7号,16号,3号,4号 )
        当前11号要素 11号 的可达集合(1号,2号,6号,10号,11号,18号,19号 )
           1号要素 1号 的可达集合1号,7号,16号,3号,4号
           2号要素 2号 的可达集合2号,6号,18号,3号,5号,7号,16号
           6号要素 6号 的可达集合3号,5号,6号,7号,16号,4号
           10号要素 10号 的可达集合1号,10号,19号,7号,16号,3号,4号
           11号要素 11号 的可达集合1号,2号,6号,10号,11号,18号,19号
           18号要素 18号 的可达集合3号,5号,6号,7号,16号,18号
           19号要素 19号 的可达集合1号,7号,16号,19号
        当前11号要素 11号 的可达集合(1号,2号,6号,10号,11号,18号,19号,7号,16号,3号,5号,4号 )
        当前12号要素 12号 的可达集合(0号,4号,7号,12号 )
           0号要素 0号 的可达集合0号,4号,7号,3号,16号
           4号要素 4号 的可达集合3号,4号,7号,16号
           7号要素 7号 的可达集合3号,4号,7号,16号
           12号要素 12号 的可达集合0号,4号,7号,12号
        当前12号要素 12号 的可达集合(0号,4号,7号,12号,3号,16号 )
        当前13号要素 13号 的可达集合(7号,13号,14号 )
           7号要素 7号 的可达集合3号,4号,7号,16号
           13号要素 13号 的可达集合7号,13号,14号
           14号要素 14号 的可达集合3号,4号,7号,14号,16号
        当前13号要素 13号 的可达集合(7号,13号,14号,3号,4号,16号 )
        当前14号要素 14号 的可达集合(3号,4号,7号,14号,16号 )
           3号要素 3号 的可达集合3号,7号,16号,4号
           4号要素 4号 的可达集合3号,4号,7号,16号
           7号要素 7号 的可达集合3号,4号,7号,16号
           14号要素 14号 的可达集合3号,4号,7号,14号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
        当前14号要素 14号 的可达集合(3号,4号,7号,14号,16号 )
        当前15号要素 15号 的可达集合(1号,7号,15号,16号 )
           1号要素 1号 的可达集合1号,7号,16号,3号,4号
           7号要素 7号 的可达集合3号,4号,7号,16号
           15号要素 15号 的可达集合1号,7号,15号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
        当前15号要素 15号 的可达集合(1号,7号,15号,16号,3号,4号 )
        当前16号要素 16号 的可达集合(3号,4号,7号,16号 )
           3号要素 3号 的可达集合3号,7号,16号,4号
           4号要素 4号 的可达集合3号,4号,7号,16号
           7号要素 7号 的可达集合3号,4号,7号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
        当前16号要素 16号 的可达集合(3号,4号,7号,16号 )
        当前17号要素 17号 的可达集合(3号,5号,7号,16号,17号 )
           3号要素 3号 的可达集合3号,7号,16号,4号
           5号要素 5号 的可达集合3号,5号,7号,16号,4号
           7号要素 7号 的可达集合3号,4号,7号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
           17号要素 17号 的可达集合3号,5号,7号,16号,17号
        当前17号要素 17号 的可达集合(3号,5号,7号,16号,17号,4号 )
        当前18号要素 18号 的可达集合(3号,5号,6号,7号,16号,18号 )
           3号要素 3号 的可达集合3号,7号,16号,4号
           5号要素 5号 的可达集合3号,5号,7号,16号,4号
           6号要素 6号 的可达集合3号,5号,6号,7号,16号,4号
           7号要素 7号 的可达集合3号,4号,7号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
           18号要素 18号 的可达集合3号,5号,6号,7号,16号,18号
        当前18号要素 18号 的可达集合(3号,5号,6号,7号,16号,18号,4号 )
        当前19号要素 19号 的可达集合(1号,7号,16号,19号 )
           1号要素 1号 的可达集合1号,7号,16号,3号,4号
           7号要素 7号 的可达集合3号,4号,7号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
           19号要素 19号 的可达集合1号,7号,16号,19号
        当前19号要素 19号 的可达集合(1号,7号,16号,19号,3号,4号 )
        当前20号要素 20号 的可达集合(3号,4号,7号,20号 )
           3号要素 3号 的可达集合3号,7号,16号,4号
           4号要素 4号 的可达集合3号,4号,7号,16号
           7号要素 7号 的可达集合3号,4号,7号,16号
           20号要素 20号 的可达集合3号,4号,7号,20号
        当前20号要素 20号 的可达集合(3号,4号,7号,20号,16号 )
        当前21号要素 21号 的可达集合(1号,7号,16号,19号,21号 )
           1号要素 1号 的可达集合1号,7号,16号,3号,4号
           7号要素 7号 的可达集合3号,4号,7号,16号
           16号要素 16号 的可达集合3号,4号,7号,16号
           19号要素 19号 的可达集合1号,7号,16号,19号,3号,4号
           21号要素 21号 的可达集合1号,7号,16号,19号,21号
        当前21号要素 21号 的可达集合(1号,7号,16号,19号,21号,3号,4号 )
        当前22号要素 22号 的可达集合(22号 )
           22号要素 22号 的可达集合22号
        当前22号要素 22号 的可达集合(22号 )

第 2 次迭代 得到的转移矩阵如下:

 0号1号2号3号4号5号6号7号8号9号10号11号12号13号14号15号16号17号18号19号20号21号22号
0号1  11  1        1      
1号 1 11  1        1      
2号  11 111        1 1    
3号   11  1        1      
4号   11  1        1      
5号   111 1        1      
6号   11111        1      
7号   11  1        1      
8号        1             1
9号 1 11  1 1      1  1   
10号 1 11  1  1     1  1   
11号 1111111  11    1 11   
12号1  11  1    1   1      
13号   11  1     11 1      
14号   11  1      1 1      
15号 1 11  1       11      
16号   11  1        1      
17号   111 1        11     
18号   11111        1 1    
19号 1 11  1        1  1   
20号   11  1        1   1  
21号 1 11  1        1  1 1 
22号                      1
第 3 次迭代

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值