找到树直径的算法的正确性

时间:2015-03-23 18:56:38

标签: algorithm tree graph-theory proof-of-correctness

我需要一个算法来查找树的直径,并找到以下内容:选择一个任意顶点y并运行广度优先搜索以从y找到最远的顶点,将其称为x,然后在x上运行BFS以查找从x开始的最远的顶点,称之为z,这个距离d(x,z)是直径。

但是,我不明白为什么x必须位于具有最大直径的顶点对中。我发现Proof of correctness: Algorithm for diameter of a tree in graph theory假设一些d(u,v)大于d(x,z),其中提出了矛盾证明。然后可以在这些情况之间进行区分:

  1. 从u到v的路径与从根到x
  2. 的路径相交
  3. 从u到v的路径与从根到x
  4. 的路径不相交

    知道从u到v的路径上有一些顶点h是最高的' (最接近根),应该可以证明这两种情况d(u,v)不能大于d(x,z)。

    但我不明白' root'是(这是吗?)尽管有这些提示,但我不明白为什么它是真的。我不需要正式证明,但我想了解为什么算法是正确的。

0 个答案:

没有答案