【问题标题】:Does order of exploration in DFS affect edge classificationDFS 中的探索顺序会影响边缘分类吗
【发布时间】:2016-07-06 13:29:36
【问题描述】:

我正在为大学实施 DFS 和边缘分类(基于本文提供的代码:https://courses.csail.mit.edu/6.006/fall11/rec/rec14.pdf)。

我用这张图作为测试:

斜体字母只是顶点的名称,而顶点内的数字分别是发现时间和完成时间。边缘分为向后、向前或交叉;其他都是树的边缘。

如您所见,此图按以下顺序访问:首先是 s,然后是其邻居(在 DFS 之后);当没有更多可访问的邻居时,访问开始于 t

为了测试我们的算法,老师会提供一个以每条边为一行的文本文件。在执行 DFS 时,我只是按照每个顶点在文件中出现的顺序;在这种情况下,首先是 s,然后是 v不是 t。这反过来又给出了不同的边缘分类:tv 被认为是交叉边缘,t u 后面一个,ut 一棵树。

这种行为正常吗?探索的顺序会影响最终的边缘分类吗?如果是这样,我的分类和示例的分类都正确吗?如果没有,有什么方法可以知道首先探索哪个顶点?

【问题讨论】:

    标签: algorithm graph depth-first-search


    【解决方案1】:

    这种行为正常吗?探索的顺序会影响最终的边缘分类吗?

    当然。算法选择边进行探索的顺序决定了边分类在有任何后边或交叉边的情况下(即当图不是一棵树时)。

    如果是这样,我的分类和示例的分类都正确吗?

    是的,两种分类都是正确的,只要问题制定者没有要求特定的探索顺序。

    如果没有,有什么方法可以知道首先探索哪个顶点?

    问题可能指定了特定的探索顺序 - 例如,您图片上的图形似乎以顶点命名的逆字母顺序遍历:z before w from s, y before @ 987654325@ 来自zvu 之前来自t

    【讨论】:

    • 你不觉得图中的图表实际上是按字母顺序遍历的吗? s 是第一个;没有邻居后,从t开始。
    • @andre_ss6 初始顶点按字母顺序选取;然而,一旦你开始探索一个顶点,它的相邻顶点就会以相反的字母顺序被选择。否则,边 s -> ww -> x 将被归类为树边。
    猜你喜欢
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2012-09-18
    相关资源
    最近更新 更多