码迷,mamicode.com
首页 > 其他好文 > 详细

传递闭包

时间:2014-06-18 07:52:22      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:图论   算法   python   


传递闭包:

有向图的传递闭包表示的就是两个顶点之间的可达性

将有向图化为布尔矩阵,两点有边相连为 1,否则为 0

布尔矩阵 B 自乘 N 次,进行布尔运算得到B(N)

B(N)[i][j]意义是,能否经过 N 长度的路径从 i --> j

而将中间过程的产生的一系列 B 经行布尔运算叠加得到的最后矩阵 M

就是该图中的任意两点是否可达的信息,即M[i][j] == 1,则意味着 i --> j 可达

bubuko.com,布布扣bubuko.com,布布扣




import numpy

A0 = numpy.array(
    [
        [False, True, False, False],
        [False, False, False, True],
        [False, False, False, False],
        [True, False, True, False]
    ]
)



print 'A0:'
print A0

A1 = numpy.dot( A0, A0 ) | A0
print 'A1:'
print A1 

A2 = numpy.dot( A0, A1 ) | A1
print 'A2:'
print A2

A3 = numpy.dot( A0, A2 ) | A2
print 'A3:'
print A3

A4 = numpy.dot( A0, A3 ) | A3
print 'A4:'
print A4

A5 = numpy.dot( A0, A4 ) | A4
print 'A5:'
print A5

A0:
[[False  True False False]
 [False False False  True]
 [False False False False]
 [ True False  True False]]
A1:
[[False  True False  True]
 [ True False  True  True]
 [False False False False]
 [ True  True  True False]]
A2:
[[ True  True  True  True]
 [ True  True  True  True]
 [False False False False]
 [ True  True  True  True]]
A3:
[[ True  True  True  True]
 [ True  True  True  True]
 [False False False False]
 [ True  True  True  True]]
A4:
[[ True  True  True  True]
 [ True  True  True  True]
 [False False False False]
 [ True  True  True  True]]
A5:
[[ True  True  True  True]
 [ True  True  True  True]
 [False False False False]
 [ True  True  True  True]]



传递闭包,布布扣,bubuko.com

传递闭包

标签:图论   算法   python   

原文地址:http://blog.csdn.net/pandora_madara/article/details/31794353

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!