树上结论速记

· · 个人记录

如何证明无边权的树上离一个点的最远点一定取在直径两个端点之一

好的,以下是 LaTeX 正常渲染的版本,避免使用 $ 包围行内公式,而是使用 \(...\),区块公式用 \[...\]

🔧 关键定义

🧠 直观理解

在树上,从任意点 u 出发往最远点 v 走,最终会走到“某个角落”——也就是树的某个“最深”位置。 而直径的两个端点正是“两个最远的角落”,所以这个最远点 v 必然是某条直径的端点。

🧾 形式化证明

设:

🧩 目标

我们要证明:对任意 u \in V,有

\exists\, v \in \{s, t\} \text{ 使得 } \text{dist}(u, v) = \max_{w \in V} \text{dist}(u, w)

即:u 的最远点在直径的两个端点中。

🧠 证明思路(基于 BFS 与三角不等式)

从直径的定义出发:

  1. 对任意点 u,从 u 开始做一次 BFS,找到最远点 v
  2. v 再做一次 BFS,找到它的最远点 w。则路径 v \to w 是树的一条直径路径。

所以:

任意点的最远点一定是某条直径的端点

又因为树的直径是唯一最长路径,所以其端点至多只有两个(设为 s, t),所以任意点的最远点一定是 st

✅ 举例说明

考虑如下树:

1 - 2 - 3 - 4 - 5 - 6
            |
            7

🔚 总结

我们已经证明:

在无边权的树上,任意点的最远点一定是某条直径的端点。

这个结论常用于树的算法设计,比如:

如果你希望我补充图论术语更完整的严谨证明(如从“无环图的路径唯一性”出发),我也可以进一步补充。

为了使节点 ueccentricity(即 \max_{v\in V}\mathrm{dist}(u,v))最小,u 必须位于某条直径路径的“中点”上。下面给出理由,并说明中点的个数。

树上,要使所有点到 u 的最长路最短,u 为什么一定是直径中点?直径中点有几个?

1. 记号与定义

2. 为什么最优 u^* 在直径路径上

  1. 任何节点的最远点必在 \{s,t\} 上一问已证明,对任意 u

    e(u) =\max_{v\in V}\mathrm{dist}(u,v) =\max\bigl(\mathrm{dist}(u,s),\,\mathrm{dist}(u,t)\bigr).
  2. 因此,

    e(u) =\max\bigl(\mathrm{dist}(u,s),\,\mathrm{dist}(u,t)\bigr) \;=\;\text{在路径 }s\!\to\!t\text{ 上测量到端点的最大值}.
  3. 要让这个最大值尽可能小,自然将 u 放在路径 s\!\to\!t 上,且尽量 “居中”——也就是距离 st 的距离都不要太大。

3. 中点的具体位置

设直径路径上的节点序列为

s = v_0,\,v_1,\,v_2,\,\dots,\,v_D = t.

4. 结论

  1. *最优节点 $u^ 必在直径路径 \overline{st}$ 的中点上。**
  2. 中点的个数:

    • 若直径长度 D 为偶数,恰有 1 个中点
    • D 为奇数,恰有 2 个中点(它们互为邻居)。

这也正是“树的中心”(tree center)的定义:要使所有点到中心的最大距离最小,中心正好是直径的中点,且至多两个。