をグラフA
の隣接行列としますG = (V,E)
。A(i,j) = 1
ノードがエッジで接続されている場合、i
そうでない場合。j
A(i,j) = 0
G
私の目的は、非環状かどうかを理解することです。サイクルは次のように定義されます。
i
接続されてj
います:A(i,j) = 1
j
接続されてk
います:A(j,k) = 1
k
接続されてi
います:A(k,i) = 1
次のようにマトリックスをナビゲートするソリューションを実装しました。
- エッジから開始
(i,j)
O
から出ているエッジのセットj
、つまり のj
- 番目の行のすべての 1 を選択します。A
O
DFS 方式でナビゲートする- このナビゲーションから生成されたパスの 1 つがノード
i
につながる場合、サイクルが検出されます。
マトリックス内のすべてのパスを評価する必要があるため、明らかにこのソリューションは非常に遅いです。が非常に大きい場合A
、必要なオーバーヘッドは非常に大きくなります。DFSなどの高価なアルゴリズムを使用せずにサイクルを見つけるために、隣接行列をナビゲートする方法があるかどうか疑問に思っていました.
MATLAB でソリューションを実装したいと考えています。
前もって感謝します、
エレノア。