次のように、行列を使用してnumpy有向グラフを表します。
0 0 0
1 0 1
1 0 0
このような行列が与えられた場合、反対方向に有向エッジが存在するすべての欠落している有向エッジを見つけたいと考えています。
たとえば、上記のマトリックスでは、ノード1(インデックス 0) について、エッジ1 -> 2と反対方向に1 -> 3エッジが存在するため、この意味ではエッジとエッジが欠落してい2 -> 1ます。3 -> 1同様に、 edge3 -> 2が存在するため、 edge も欠落しています2 -> 3。
私のアプリケーションの実際の行列は数千のノードなど、大きく、そのようなエッジを見つけるためのアルゴリズムは高速でなければなりません。力ずくの方法は、すべてのペア (行列の主対角線を考慮して対称) をチェックし、2 つの間にエッジがないかどうかを確認することです。
それを行うためのより効率的な方法(numpyおそらく提供されていますか?)があるのではないかと思います。いくつかの線形代数のトリック?