我使用numpy
矩阵来表示有向图,如下所示:
0 0 0
1 0 1
1 0 0
给定这样一个矩阵,我想找到所有缺失的有向边,其中存在相反方向的有向边。
例如,在上面的矩阵中,对于节点1
(索引为 0),边1 -> 2
和1 -> 3
在这个意义上是缺失的,因为存在边2 -> 1
和3 -> 1
在另一个方向上。同样,3 -> 2
由于存在 edge ,所以 edge 也丢失了2 -> 3
。
我的应用程序中的实际矩阵很大,例如数千个节点,并且找到这些边的算法必须很快。一种蛮力的方法是检查每一对(考虑到矩阵的主对角线,它们是对称的),看看两者之间是否缺少一条边。
我想知道是否有更有效的方法(numpy
也许提供?)来做到这一点。一些线性代数技巧?