巡逻
蓝书上的解法可能存在一个问题:如果第一次选的路径不那么优秀,但是会让第二次选的路径变得更优秀,从而让最后的答案更优秀怎么办?下面证明这种情况不会发生:
设树上路径的长度均按边数计算。
1. 两条新路的目标实际上是什么
设两条新路的端点在原树上的对应路径分别为 \(P, Q\)。
原来每条树边都走两次,共 \(2(n-1)\)。加入两条新路后:
- 新路本身各走一次,增加 \(2\);(题目要求)
- 位于 \(P \triangle Q\) (对称差) 中的树边只需走一次;
- 同时位于 \(P, Q\) 中的树边仍需走两次。
因此总路程为
所以问题等价于最大化
固定 \(P\) 后,
因此把 \(P\) 上的边权设为 \(-1\),其他边设为 \(1\),则第二条路径 \(Q\) 的权值恰好是
于是
到这里确实只是“固定第一条后的最优第二条”。
2. 关键引理
取原树的一条直径 \(D\),长度为 \(d\)。令
设修改权值后的最大权路径权值为
关键结论是:
这直接说明:任何“更差的第一条路径”即使让第二条路径更优秀,两者合计也不会超过 \(d+q\)。
下面证明。
3. 任意方案都不会超过 \(d+q\)
任取两条路径 \(P, Q\),令
由于 \(H\) 是一棵森林(可以想一想为什么),并且奇度数顶点不超过四个,所以 \(H\) 的边可以分解成至多两条边不重复的路径 \(A, B\)。因此
现在只需证明,对任意两条边不相交的路径 \(A, B\),都有
情况一:至少一条路径不使用直径上的边
例如 \(A\) 不使用 \(D\) 上的边,那么它的每条边权都是 \(1\),所以
其中,第一个大于等于是 \(q\) 的定义,而第二个等号是因为 \(A\) 没有使用 \(D\) 的边。
又由于 \(B\) 是树上的一条路径,其长度不超过直径:
故
情况二:两条路径都使用直径上的边
从直径左端 \(s\) 到右端 \(t\) 建立坐标,直径长度为 \(d\)。
由于 \(A, B\) 边不相交,它们在直径上的区间也边不相交。不妨设排列如下:
s ---- x₁ ===== x₂ ---- y₁ ===== y₂ ---- t
A B
设:
- \(A\) 在 \(x_1, x_2\) 两端伸出直径的部分长度分别为 \(\alpha, \beta\);
- \(B\) 在 \(y_1, y_2\) 两端伸出直径的部分长度分别为 \(\gamma, \delta\)。
于是
所以
因为 \(D\) 是直径,左侧外伸部分不能太长。否则从该外伸端点走到 \(t\) 会得到一条比直径更长的路径。因此
同理,
代入可得
现在考虑连接两个“内侧外伸端点”的路径 \(R\):
- 先沿长度为 \(\beta\) 的部分到达 \(x_2\);
- 再沿直径从 \(x_2\) 走到 \(y_1\);
- 最后沿长度为 \(\gamma\) 的部分离开直径。
这条路径的修改后权值恰好为
由于 \(q\) 是最大权路径,
所以仍有
这就证明了任意方案都不可能超过 \(d+q\)。
4. 直径方案确实能达到 \(d+q\)
令 \(R\) 是修改权值后的最大权路径,则
因此直接把 \(D\) 和 \(R\) 作为两条新路对应的树上路径,就能达到上界 \(d+q\)。
所以
最终最短巡逻距离为
也就是书中的

浙公网安备 33010602011771号