【发布时间】:2015-06-24 08:23:44
【问题描述】:
我有一个有向图,即 n x n 阶矩阵。
我需要找到其中存在的所有循环以及循环中涉及的顶点。
这是一个例子:
A B C D
0 1 1 1
1 0 1 0
1 0 0 0
1 0 0 0
输出应该类似于:
No.of cycles found : 4
A->B->A
A->B->C->A
A->C->A
A->D->A
【问题讨论】:
-
那么你的问题到底是什么?
-
我想要算法或逻辑或代码找到循环中涉及的顶点列表
-
这在多时间中是不可能的,因为如果是这样,那么您可以在多时间内解决哈密顿路径问题,并且该问题是 NP 完全的。更简单地说,可能的循环数是巨大的,所以这在多项式时间内是不可能的。你不妨蛮力它(递归地尝试所有路径)并记录哪些返回到源并打印它们。有点像 DFS,除了你可以多次访问一个节点。不过,对于尺寸稍微合理的图表,这将花费大量时间,而且我不确定是否有更快的方法。
标签: graph cycle-detection