设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
第 - 行中的所有 1A
O
以 DFS 方式导航- 如果从此导航生成的路径之一通向节点
i
,则检测到循环
显然这个解决方案非常慢,因为我必须评估矩阵中的所有路径。如果A
非常大,则所需的开销非常巨大。我想知道是否有一种方法可以导航邻接矩阵以便在不使用诸如 DFS 之类的昂贵算法的情况下找到循环。
我想在 MATLAB 中实现我的解决方案。
提前致谢,
埃莉诺。