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

不知道为啥题解都默认认为 dijkstradijkstra 可以直接求最长路径,可能是我比较菜吧。

正确性证明:

假设有 v0>viv_0 -> v_idist中且viSdist 中且 v_i \notin SSS 为已确定最长路径的点的集合)的最大路径,却不是 v0>viv_0 -> v_i 的最长路径,那么一定存在 vkSv_k \notin S 使得 v0>vk>viv_0 -> v_k -> v_iv0>viv_0 -> v_i 的最长路径。

反证法易证乘法计算的最长路径满足 largest(v0>vk>vi)=largest(v0>vk)largest(vk>vi)largest(v_0 -> v_k -> v_i) = largest(v_0 -> v_k) * largest(v_k -> v_i)

因为 v0>vkv_0 -> v_k 必定要从 SS 延申边。不妨认为 vkv_k 是已记录到 distdist 中的点。

因为汇率 0<w<=10 < w <= 1 ,有 largest(v0>vk),largest(vk>vi)>=1largest(v_0 -> v_k), largest(v_k -> v_i) >= 1 ,如果为 1 ,不影响最长路径;如果不为 1 一定有 largest(v0>vk)=dist(v0>vk)>dist(v0>vk>v>vi)largest(v_0 -> v_k) = dist(v_0 -> v_k) > dist(v_0 -> v_k -> v->v_i),与条件矛盾。

2024/12/10 12:01
加载中...