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