问题如标题所示,图表以邻接列表形式给出。我的方法是在任何一个顶点调用DFS,每当我在DFS递归步骤中遇到一个访问顶点时,我从0开始递增一个全局变量的计数器,并且不为该访问顶点调用DFS(正如我们通常所做的那样)。这是否有效,我是否正确?我还没有在互联网上找到任何相关的文章来了解无向图中的#Number周期。
详细说明:我的意思是使用简单的DFS方法。虽然我们在遇到访问顶点的递归步骤中什么都不做,但我为该情况增加了counter
全局变量值。我这样做,因为每当我遇到一个访问过的顶点时,暗示我正在完成一个循环。我声称:在任何DFS运行中,图中的每个循环只遇到一次(至少和最多一次)。我在这个索赔中是否正确?
编辑:没有后边
答案 0 :(得分:1)
我很遗憾地回答我的回答本身,只是对于那些在将来有类似疑问的人:我发现我会冗余地计算很多周期,例如: -
A
/ \
B ----- C
\ /
D
从A-> B-> C-> D开始DFS我将循环C-B-D计数两次。我还了解到找到无向图中所有周期的问题是np-hard。坏运气:'(