显示如果G的深度优先搜索树等于G的广度优先搜索树,则G为树

时间:2018-01-31 23:04:25

标签: graph-theory depth-first-search breadth-first-search proof

请告诉我我的证明是否正确

  

我们有一个连通图,V(G)中的特定顶点u   假设我们计算了以u为根的G的dfs树并获得了树T.   现在假设我们计算了以你为根的G的bfs树,我们得到了相同的树T.   证明唯一可行的方法是G = T

矛盾证明。

假设dfs树和bfs树等于T,但G不等于T.
这意味着G包含至少一个不在T中的边。
我们也知道任何这样的边缘都是周期的一部分,否则它们就会出现在T. 因此,至少有一个带有C= p1, p2, p3, p_{k}的周期p_{k} = p1,由G中的不同节点k>= 3组成。
假设dfs和bfs算法将在节点p1处遇到循环 Dfs会将以下边缘添加到其树(p1, p2),....,(p_{k-2}(p_{k-1}),而bfs首先将边(p1,p2)(p1,p_{k})添加到其中树。
我们已经看到dfs树不等于bfs树,因为bfs包含(p1,p_{k})而dfs不包含此边缘。
这与我们假设dfs和bfs具有相同的树相矛盾,并且表明它必须是G = T的情况。

1 个答案:

答案 0 :(得分:0)

该定理仅适用于无向图(将任何强连通圆图作为反例)。

回到无向图,有一个直观的方法,注意dfs最大化树高,而bfs最小化它。这意味着在第一个圈C点击时,覆盖C的子树将有所不同。

您的证明正式确定了这个想法,所以一般来说我说它没问题。

您没有指定dfs选择策略,因此存在两个小错误:

  • 而不是(p1,p2),则dfs可能包含(p1,p_{k})或根本不包含任何边()。当然,dfs永远不会包含两个边,而bfs总是会。

  • Dfs不一定会向k-1添加T个圆边。但是,它会在缩回p1之前访问所有圆顶点,因此此时所有圆顶点都已添加到T。因此,(p1,p_{k})(dfs选择(p1,p2)第一次点击p1(p1,p2)(否则),不会被添加。

你可以通过证明一个小问题来形式化后者:

(v, w)成为dfs在步骤n中添加的边缘(wlog假设dfs从v移至w),T(n)为步骤(n)中的部分dfs树。然后[w]引起的子图G'中连接组件V(G) \ V(T(n))的所有节点将被添加到dfs树中,而(w, x)中的另一个边E(G)将被添加到User-Agent加入。