本题求最长路径正确性证明
  • 板块P1576 最小花费
  • 楼主AK47are
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/10 14:54
  • 上次更新2024/12/10 20:23:03
查看原帖
本题求最长路径正确性证明
1544265
AK47are楼主2024/12/10 14:54

根据 dalao 的建议和洛谷的格式规范优化了下排版

dijkstra 算法正确性证明:

假设有 v0viv_0 \to v_idist中且viS\operatorname{dist} 中且 v_i \notin SSS 为已确定最长路径的点的集合)的最大路径,却不是 v0viv_0 \to v_i 的最长路径,那么一定存在 vkSv_k \notin S 使得 v0vkviv_0 \to v_k \to v_iv0viv_0 \to v_i 的最长路径。

反证法易证乘法计算的最长路径满足 largest(v0vkvi)=largest(v0vk)×largest(vkvi)\operatorname{largest(v_0 \to v_k \to v_i)} = \operatorname{largest(v_0 \to v_k)} \times \operatorname{largest(v_k \to v_i)}

因为 v0vkv_0 \to v_k 必定要从 SS 延申边。不妨认为 vkv_k 是已记录到 dist\operatorname{dist} 中的点。

因为汇率 0<w<=10 < w <= 1 ,有 largest(v0vk),largest(vkvi)>=1\operatorname{largest(v_0 \to v_k)}, \operatorname{largest(v_k \to v_i) >= 1} ,如果为 1 ,不影响最长路径;如果不为 1 一定有 largest(v0vk)=dist(v0vk)>dist(v0vkvi)\operatorname{largest(v_0 \to v_k)} = \operatorname{dist(v_0 \to v_k)} > \operatorname{dist(v_0 \to v_k \to v_i)},与条件矛盾。

因此最长路径一定来自于其他最长路径且 dist\operatorname{dist} 中最长路径就是全局最长路径。

2024/12/10 14:54
加载中...