在所有情况下BFS和DFS在图上生成同一棵树吗?

问题描述 投票:0回答:1

我想知道在什么情况下BFS和DFS从植根于任何节点的图产生相同的树。我知道一种情况是图形已经是一棵树。这是唯一的情况吗?

是否取决于您选择节点邻居的方式?挑选邻居的顺序将通过哪些方式使其相同?

graph depth-first-search breadth-first-search
1个回答
0
投票

[首先,在深入探讨该问题之前,我想花一点时间来解释DFS和BFS。这适用于可能不知道什么是“深度优先搜索”和“深度优先搜索”的任何阅读者。

DFS:深度优先搜索是一种遍历树的算法,该算法始于根节点,并在回溯之前尽可能深入地探索每个分支。

BFS:广度优先搜索是一种从树的根节点开始遍历的树遍历算法,然后在current深度级别浏览所有顶点,然后继续浏览next]上的顶点>深度级别。这是一种自上而下的创建树的方法。

现在,进入问题。

我知道其中一种情况是图形已经是树。这是唯一的情况吗?

您的说法是正确的,这是图形的BFS和DFS产生同一棵树的情况之一。更明确地说,当您声明图已经是树时,希望引用的图具有以下三个属性之一:

  1. 最大宽度为1的图

  2. 类似于单个链接列表的图

  3. 当您声明树必须相同时,如果同构树被视为按您的定义定义为“相同”,那么任何已经是树的图形(也可能是您在问题中所指的图形)将为BFS和DFS生成“相同”树。当然,树中必须没有循环,否则该图形将导致BFS和DFS的结果不同。

  4. 在所有这三个实例中,如果您为两个遍历都从相同的正确根节点开始,则树的DFS和BFS将相同。这些是我所知道的唯一情况。但是,在某些情况下,还有其他方法可以为给定图if

的DFS和BFS遍历获取同一棵树,您可以自由确定可以选择给定节点的“邻居”的顺序。这导致您的问题的下半部分...

是否取决于您选择节点邻居的方式?挑选邻居的顺序将通过哪些方式使其相同?

是的,这是依赖的(如果这个问题意味着我真正的意思),因为如果您对此有自由,那么在某些情况下,选择邻居的顺序将使其相同。例如,如果一棵树中最多只有一个also

]有孩子,则可以遍历节点without孩子来获得相同的BFS和DFS首先在图的DFS遍历中。

希望此信息会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.