有什么有效的算法可以找到无向图中的所有循环?

我正在尝试在无向图中找到所有循环,并且在任何在线站点/ geeksforgeeks中都没有找到相同的算法。

有一个有向图(Johnson算法),但在无向图上不起作用(期望o / p)。

任何建议将不胜感激。

xiaoge1073 回答:有什么有效的算法可以找到无向图中的所有循环?

方法:使用图形着色方法,用唯一数字标记不同循环的所有顶点。一旦图形遍历完成,将所有相似的标记数字推入邻接表,并相应地打印邻接表。下面是算法:

  • 将边插入邻接表。
  • 调用DFS函数,该函数使用着色方法标记顶点。
  • 只要有部分访问的顶点,请回溯直到到达当前顶点,并用周期号标记所有顶点。标记所有顶点后,增加循环数。
  • 一旦Dfs完成,就迭代边缘,并将相同标记的数字边缘推到另一个邻接列表。
  • 在另一个邻接列表中进行迭代,并明智地打印顶点循环数。

时间复杂度:O(N + M),其中N是顶点数,M是边数。 辅助空间:O(N + M)

来源:https://www.geeksforgeeks.org/print-all-the-cycles-in-an-undirected-graph/

您也可以在此处找到代码。

本文链接:https://www.f2er.com/3136158.html

大家都在问