在有向图中查找循环中的所有顶点

时间:2015-04-17 13:01:10

标签: graph cycle-detection

我有一个有向图,即n×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

1 个答案:

答案 0 :(得分:0)

您应该寻找基本周期,其中没有顶点(开始/结束除外)出现多次。在那种情况下,存在线性时间算法(节点中的线性+边缘)。例如,请参阅http://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF。这来自Finding all cycles in a directed graph的第二个答案,这比第一个恕我直言更好。