【发布时间】:2010-02-24 00:23:47
【问题描述】:
我很好奇是否有一种特定的图算法通过选择起始节点然后通过 DFS 继续遍历未加权的无环有向图。如果遇到具有未搜索前任的节点,则它应该回溯传入路径,直到探索完所有要开始的路径。
我找到了wikipedia category for graph algorithms,但这里有一小部分算法,我对其中的大部分都不熟悉。
编辑:示例: 给定图 {AB, EB, BC, BD},遍历为:{A,B,E,B,C,D} 或唯一顺序为 {A,B,E,C,D}。 请注意,如果第一个起始节点的所有路径都用尽,则此算法与 BFS 或 DFS 不同,不需要从新的起始节点重新开始。
【问题讨论】:
-
@Samuel:DAG 不一定是树。考虑带有边 {AB, AC, BD, CD, DE} 的图。 DFS 会按照 {A, B, D, E, C} 的顺序访问它们,但他想要 {A, B, C, D, E}
-
@Poita_:你提到的例子似乎是一个简单的 BFS。
-
@Poita_ DFS 不仅适用于树。它也可以用于图表。在您的情况下,广度优先搜索可以解决问题(我在他的问题中看不到您的解释)
-
@Anon。是的,BFS 在那里工作,但这纯属巧合。 @塞缪尔。我并不是说 DFS 不能用于非树形图,我是从您的第一条评论中回答您的问题,即为什么 DFS 没有实现 OP 的目标。
-
@Poita_:差不多。我想要 {A,B,D,C,A,C,D,E}。回溯重新访问节点,但是为了讨论,只打印新节点 {A,B,D,C,E} 是可以的。我将使用类似的图表和解决方案更新问题。
标签: algorithm graph-theory directed-graph graph-traversal