快速可达矩阵计算(先获得所有有序的回路,再进行一次Warshall法就可以)


论文写作或者计算需要帮助可发邮件到 hwstu # sohu.com 把 #替换成@,请说清来意,不必拐弯抹角,浪费相互之间的时间。

返回首页


此处输入要素的个数:



显示的是一个随机 12 * 12 的方阵



  
         1    1    1            
      1                         1
            1          1         
                     1            
                        1         
      1                   1      
            1       1            
                           1      
            1    1       1      
                                   
                                   
                                   

利用深搜算法获得所有环路,该环路的着色矩阵显示为



  
                                   
1                                 
   1                              
               1                  
   1    1                        
1       1 1                     
         1    1                  
1                1               
   1 1             1            
                                   
                  1       1      
                                   

得到了一个有序的环,所有环路,是一个有序图



子要素
丑要素
寅要素
卯要素
辰要素
巳要素
午要素
未要素
申要素
酉要素
戌要素
亥要素
第0层
第1层
第2层
第3层
第4层
第5层
第6层
第7层
第8层
第9层

根据层级由上往下进行计算,最上的层级为0



当前为:0 层,包含有 1 个要素
        当前层的可达集合为 9
       0层的可达集合为9 。
       因此要素9可达集合为9 。

当前为:1 层,包含有 1 个要素
        当前层的可达集合为 9,7
        除了本层的要素还有9 开始处理9 指向层级的可达集合
           处理完了9 得到的可达集合为 。
       1层的可达集合为9,7 。
       因此要素7可达集合为9,7 。

当前为:2 层,包含有 1 个要素
        当前层的可达集合为 7,3
        除了本层的要素还有7 开始处理7 指向层级的可达集合
           处理完了7 得到的可达集合为9,7 。
       2层的可达集合为7,3,9 。
       因此要素3可达集合为7,3,9 。

当前为:3 层,包含有 3 个要素
        当前层的可达集合为 4,6,9,7,8
        除了本层的要素还有9,7 开始处理9,7 指向层级的可达集合
           处理完了9,7 得到的可达集合为9,7 。
       3层的可达集合为4,6,9,7,8 。
       因此要素4可达集合为4,6,9,7,8 。
       因此要素6可达集合为4,6,9,7,8 。
       因此要素8可达集合为4,6,9,7,8 。

当前为:4 层,包含有 1 个要素
        当前层的可达集合为 4,8,2
        除了本层的要素还有4,8 开始处理4,8 指向层级的可达集合
           处理完了4,8 得到的可达集合为4,6,9,7,8 。
       4层的可达集合为4,8,2,6,9,7 。
       因此要素2可达集合为4,8,2,6,9,7 。

当前为:5 层,包含有 1 个要素
        当前层的可达集合为 2,9,5
        除了本层的要素还有2,9 开始处理2,9 指向层级的可达集合
           处理完了2,9 得到的可达集合为4,8,2,6,9,7 。
       5层的可达集合为2,9,5,4,8,6,7 。
       因此要素5可达集合为2,9,5,4,8,6,7 。

当前为:6 层,包含有 1 个要素
        当前层的可达集合为 3,5,7,0
        除了本层的要素还有3,5,7 开始处理3,5,7 指向层级的可达集合
           处理完了3,5,7 得到的可达集合为9,7,2,5,4,8,6,3 。
       6层的可达集合为3,5,7,0,9,2,4,8,6 。
       因此要素0可达集合为3,5,7,0,9,2,4,8,6 。

当前为:7 层,包含有 1 个要素
        当前层的可达集合为 11
       7层的可达集合为11 。
       因此要素11可达集合为11 。

当前为:8 层,包含有 1 个要素
        当前层的可达集合为 2,11,1
        除了本层的要素还有2,11 开始处理2,11 指向层级的可达集合
           处理完了2,11 得到的可达集合为4,8,2,6,9,7 。
       8层的可达集合为2,11,1,4,8,6,9,7 。
       因此要素1可达集合为2,11,1,4,8,6,9,7 。

当前为:9 层,包含有 1 个要素
        当前层的可达集合为 10
       9层的可达集合为10 。
       因此要素10可达集合为10 。

运行 19 次的集合运算,
运行 21 次的集合直接赋值,

得到的新矩阵为



  
1    1 1 1 1 1 1 1 1      
   1 1    1    1 1 1 1    1
      1    1    1 1 1 1      
         1          1    1      
            1    1 1 1 1      
      1    1 1 1 1 1 1      
            1    1 1 1 1      
                     1    1      
            1    1 1 1 1