我需要一个算法来查找树的直径,并找到以下内容:选择一个任意顶点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),其中提出了矛盾证明。然后可以在这些情况之间进行区分:
知道从u到v的路径上有一些顶点h是最高的' (最接近根),应该可以证明这两种情况d(u,v)不能大于d(x,z)。
但我不明白' root'是(这是吗?)尽管有这些提示,但我不明白为什么它是真的。我不需要正式证明,但我想了解为什么算法是正确的。