我想知道在什么情况下BFS和DFS从植根于任何节点的图产生相同的树。我知道一种情况是图形已经是一棵树。这是唯一的情况吗?
是否取决于您选择节点邻居的方式?挑选邻居的顺序将通过哪些方式使其相同?
[首先,在深入探讨该问题之前,我想花一点时间来解释DFS和BFS。这适用于可能不知道什么是“深度优先搜索”和“深度优先搜索”的任何阅读者。
DFS:深度优先搜索是一种遍历树的算法,该算法始于根节点,并在回溯之前尽可能深入地探索每个分支。
BFS:广度优先搜索是一种从树的根节点开始遍历的树遍历算法,然后在current深度级别浏览所有顶点,然后继续浏览next]上的顶点>深度级别。这是一种自上而下的创建树的方法。
现在,进入问题。
我知道其中一种情况是图形已经是树。这是唯一的情况吗?
您的说法是正确的,这是图形的BFS和DFS产生同一棵树的情况之一。更明确地说,当您声明图已经是树时,希望引用的图具有以下三个属性之一:
最大宽度为1的图
类似于单个链接列表的图
当您声明树必须相同时,如果同构树被视为按您的定义定义为“相同”,那么任何已经是树的图形(也可能是您在问题中所指的图形)将为BFS和DFS生成“相同”树。当然,树中必须没有循环,否则该图形将导致BFS和DFS的结果不同。
在所有这三个实例中,如果您为两个遍历都从相同的正确根节点开始,则树的DFS和BFS将相同。这些是我所知道的唯一情况。但是,在某些情况下,还有其他方法可以为给定图if
]有孩子,则可以遍历节点without孩子来获得相同的BFS和DFS首先在图的DFS遍历中。是否取决于您选择节点邻居的方式?挑选邻居的顺序将通过哪些方式使其相同?
是的,这是依赖的(如果这个问题意味着我真正的意思),因为如果您对此有自由,那么在某些情况下,选择邻居的顺序将使其相同。例如,如果一棵树中最多只有一个also
希望此信息会有所帮助。