Graph BFS和DFS在图形上生成同一棵树的所有情况是什么?

Graph BFS和DFS在图形上生成同一棵树的所有情况是什么?,graph,depth-first-search,breadth-first-search,Graph,Depth First Search,Breadth First Search,我想知道在什么情况下BFS和DFS从根在任何节点的图生成同一棵树。我知道其中一种情况是当图形已经是一棵树时。这是唯一的情况吗 它是否取决于您选择节点邻居的方式?选择邻居的顺序有哪些方法可以使其保持一致?首先,在深入研究这个问题的直接答案之前,我想花一点时间来解释DFS和BFS。这是为那些不知道什么是“广度优先搜索”和“深度优先搜索”的读者准备的 DFS:深度优先搜索是一种树遍历算法,它从根节点开始,在回溯之前尽可能地探索每个分支 BFS:宽度优先搜索是一种树遍历算法,它从根节点开始,在当前深度级

我想知道在什么情况下BFS和DFS从根在任何节点的图生成同一棵树。我知道其中一种情况是当图形已经是一棵树时。这是唯一的情况吗


它是否取决于您选择节点邻居的方式?选择邻居的顺序有哪些方法可以使其保持一致?

首先,在深入研究这个问题的直接答案之前,我想花一点时间来解释DFS和BFS。这是为那些不知道什么是“广度优先搜索”和“深度优先搜索”的读者准备的

DFS:深度优先搜索是一种树遍历算法,它从根节点开始,在回溯之前尽可能地探索每个分支

BFS:宽度优先搜索是一种树遍历算法,它从根节点开始,在当前深度级别上搜索所有顶点,然后继续在下一个深度级别上搜索顶点。这是一种自顶向下的方法来创建树

现在,谈谈这个问题

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

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

  • 最大宽度为1的图

  • 类似于单链表的图形

  • 如果同构树被视为 根据您的定义,“相同”,那么任何已经是树的图形(也可能是您在问题中提到的)都将为BFS和DFS生成“相同”的树。当然,树中不能有循环,否则该图将导致BFS和DFS的不同结果

  • 在这三种情况下,如果两次遍历都从同一个适当的根节点开始,那么树的DFS和BFS将是相同的。这些是我所知道的唯一的案例。但是,在某些情况下,如果您可以自由确定可以选择给定节点的“邻居”的顺序,则可以通过其他方式获得给定图的DFS和BFS遍历的相同树。这就引出了你问题的后半部分

    它是否取决于您选择节点邻居的方式?挑选邻居的顺序有哪些方法可以使结果相同

    是的,它是独立的(如果这个问题的意思是我真正认为它的意思),因为如果你有这样的自由,那么在某些情况下,选择邻居的顺序将使它相同。例如,如果一棵树中最多只有一个子树也有子树,则可以通过在图的DFS遍历中先遍历节点,而不遍历子节点,从而获得相同的BFS和DFS

    希望这些信息能有所帮助