我使用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也许提供?)来做到这一点。一些线性代数技巧?