本题最长路径正确性证明
  • 板块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_i 是 dist中且vi∉Sdist 中且 v_i \notin S(SS 为已确定最长路径的点的集合)的最大路径,却不是 v0−>viv_0 -> v_i 的最长路径,那么一定存在 vk∉Sv_k \notin S 使得 v0−>vk−>viv_0 -> v_k -> v_i 是 v0−>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
加载中...