【问题标题】:Design an algorithm to detect cycle in graph G设计一种算法来检测图 G 中的循环
【发布时间】:2010-10-05 17:01:03
【问题描述】:

下面的算法是什么样子的:

一种线性时间算法,给定无向图 G 和其中的特定边 e,确定 G 是否具有包含 e 的环

我有以下想法:

对于每个属于 V 的 v, 如果 v 是 e 的后代并且 (e,v) 尚未被遍历,则检查以下内容:

如果我们在 v 之前访问了 e 并且在我们离开 e 之前离开了 v 那么 该图包含循环

【问题讨论】:

  • 由于这似乎是家庭作业,您可能希望展示您对如何解决此问题的想法。
  • 我会给你一个提示:你的想法已经比必要的复杂了。由于它是一个无向图,因此找到一个循环比您想象的要简单...
  • 有很多方法可以做到这一点。以下是我会选择的方式的提示:(e,v) 是循环的一部分当且仅当 e 和 v 之间至少有 2 条不相交的简单路径。

标签: algorithm


【解决方案1】:

我不确定这是否是你的作业,所以我只是给出一点提示 - 使用广度优先搜索树的属性(根在边 e 的两个顶点中的任何一个),它的子树是由根的邻居和这些子树之间的边确定。

【讨论】:

    【解决方案2】:

    根据comingstorm 的提示,无向边本身就是一个循环。 AB 来回任意多次。

    【讨论】:

    • 这是一个小例子。通常认为,无向图上下文中的循环必须包含三个或更多顶点(CLRS 和其他书籍都提到了这个约定)。
    • 并且不能多次遍历同一条边。
    猜你喜欢
    • 2010-10-26
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    相关资源
    最近更新 更多