【问题标题】:DFS trees and DFS forestsDFS 树和 DFS 森林
【发布时间】:2016-07-31 05:11:12
【问题描述】:

我从以下方面学习 DfS 树:

http://rosalind.info/glossary/algo-depth-first-search/

在“有向图中的深度优先搜索”部分中,如果我们添加一个节点 Z 没有指向它的边但只有一条从 Z 到 C 的边,那么 Z 将出现在生成的 DFS 树?

它从 Z 到 C 的边会被认为是树边还是交叉边?

谢谢!

【问题讨论】:

  • 您的实际问题是什么?理解/应用术语或构建新的 DFS 树?
  • @makadev 了解将此类节点(如所述)添加到图中时会发生什么。

标签: graph graph-algorithm depth-first-search


【解决方案1】:

当您为给定问题构建新的 DFS 树时,这一点显而易见:

  1. 当前用于探索 A 到 H 的 DFS 树是相同的。 Z 不是它的一部分,因为它没有通过任何 Edge 连接到 Z。由于选择顶点时的字典顺序,它不会在 A 之前被选择。

  2. 访问 A 到 H 后,不会访问 Z,并且将按字典顺序选择这些进行探索。它将是 DFS 森林中的一棵新。 请注意,在单向情况下,当您忽略非树边缘时,这只是一个 DFS 森林,如示例中所示。

  3. 术语指出交叉边缘...导致一个已经完全探索的节点。 Z 与之前探索的 C 有一条边,它的边是交叉边。

你应该自己检查这个答案。

【讨论】:

    【解决方案2】:

    树(或森林)的外观以及 ZC 的边缘类型取决于 DFS 从何处运行以及首先选择哪些节点。如果 DFS 在访问 C 之前访问 Z,那么 ZC 将是树的边缘,因为它是唯一的,Z 将是具有多个节点的树的一部分。如果 DFS 从 Z 开始,那么将有一棵以 Z 为根节点的树。但是,如果 Z 仅在 C 已经被访问过时才被发现,那么 C 也必须已经完成(完全探索),因为任何其他节点都无法到达 Z。因此在这种情况下,ZC 是一个交叉边,而 Z 本身就在一棵树中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多