DFS树和DFS森林

时间:2016-04-10 02:14:33

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

我正在学习DfS树:

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

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

从Z到C的边缘会被视为树边缘还是交叉边缘?

谢谢!

2 个答案:

答案 0 :(得分:0)

为给定问题构建新的DFS树时,显而易见:

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

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

  3. 术语指出Cross Edges ...导致已经完全探索的节点。 Z对于之前探索过的C有一个Edge,它的边缘是一个Cross Edge。

  4. 你应该亲自检查这个答案。

答案 1 :(得分:0)

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