Algorithm 进化图上的DFS

Algorithm 进化图上的DFS,algorithm,graph,depth-first-search,Algorithm,Graph,Depth First Search,我想我相当肯定,这个问题的DFS算法不应该与普通的DFS有任何不同,只是想从其他人那里得到一些反馈。我的问题是: 我想对我不知道所有节点的图执行DFS。当我开始搜索时,我只知道开始节点。根据开始节点的属性,我可以确定它的子节点集。如上所述,可以进一步发现刚刚发现的节点的子节点 我计划使用一种类似于普通DFS的算法(图是已知的),只是每次我到达一个节点时,我现在需要发现它的子节点 这是否合理的做法?我错过了什么吗?这似乎是一个非常合理的方法 然而,如果不知道你正在尝试做什么的确切细节,几乎不可能确

我想我相当肯定,这个问题的DFS算法不应该与普通的DFS有任何不同,只是想从其他人那里得到一些反馈。我的问题是:

我想对我不知道所有节点的图执行DFS。当我开始搜索时,我只知道开始节点。根据开始节点的属性,我可以确定它的子节点集。如上所述,可以进一步发现刚刚发现的节点的子节点

我计划使用一种类似于普通DFS的算法(图是已知的),只是每次我到达一个节点时,我现在需要发现它的子节点


这是否合理的做法?我错过了什么吗?

这似乎是一个非常合理的方法

然而,如果不知道你正在尝试做什么的确切细节,几乎不可能确定它是否会起作用或是最好的方法


如果这是一个大的(可能是无限的)图(或者它包含循环,并且有太多的节点在进行DFS时无法跟踪所有这些节点,以防止陷入循环),并且您正在寻找一些在图中不太深的节点,或者可能是一个更好的主意。

DFS代表深度优先搜索。而“搜索”意味着它不知道未来会发生什么。因此,已知图上的DFS与图上的DFS没有什么不同,在图中,您只需在到达父节点时了解子节点。

这会起作用,但请记住,在继续下一个子节点之前,它将探索从其中一个子节点可到达的所有节点。对于无限图,这可能不是您想要的。在这种情况下,您可以使用或替代将工作良好。有关DFS算法的任何内容都不假定除当前节点及其近邻以外的任何关于图的知识。您想通过使用DFS遍历图来做什么?如果您想要图形中的顶点列表,则应用普通dfs将按照答案中的说明进行操作。而如果你想发现所有的边缘,那么下面解释的dfs算法就行不通了。这是因为一旦您完成了两个顶点的dfs,并且在这两个顶点之间添加了一条新边,您将无法发现此新边。我试图解决的问题的简化版本类似于创建软件调用图。例如,我想知道一个特定API的调用图有10层深。我可以从这个API开始,当我发现这个API的调用者时,我会将它们添加到这个节点的子节点列表中,并按照上面的描述继续。