ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【笔记】【网络流】原始对偶算法中调整的必要性与正确性的证明

2021-06-13 11:34:06  阅读:259  来源: 互联网

标签:路上 短路 源点 必要性 正确性 ge 对偶 dis


如果不熟悉算法过程的话可以参考以下链接(中的代码)

  1. https://oi-wiki.org/graph/flow/min-cost/#primal-dual
  2. https://www.luogu.com.cn/blog/Mogician/Network-Flow-Guide

''引理'':若图\(G\)中有边\((u,v,w)\)(且均存在源点到\(u,v\)的最短路),则有

\[dis[v]\le dis[u]+w \]

证明:由最短路定义易得。\(\blacksquare\)

''正确性'':要证正确性,即证每次跑Dijkstra之前,(没有负环——不过这是显然的——且)对所有边\((u,v,w)\)有新的边权

\[w' = h[u]-h[v]+w \ge 0 \tag{1}\label{ref1} \]

证明:\(G\)增广后,每个点的势能\(Ep\)都加上了\(dis'\),变成了\(G\)中源点到每个点的最短路\(dis\)(见上面的第2个连接)。只需证明,在\(s\)到\(t\)的最短路上增加了一些负权反向边/删除了一些边后得到的\(G'\)中,对所有边\((u,v,w)\)都有\(\ref{ref1}\)成立

分两类讨论:

  1. 对所有不在最短路上的边\((u,v,w)\),因为\(w\)未变,故由引理,在图\(G\)上有\(dis[u]-dis[v]-w \ge 0\),成立。

  2. 对所有在最短路上的边\((u,v,w)\)有

    \[dis[u] - dis[v] + w\ge 0 \\ dis[v] - dis[u] - (-w)\ge 0 \]

    \[dis[u] +w = dis[v] \]

    由于\((u,v,w)\)在最短路上,显然成立。\(\blacksquare\)

修改是必要的:因为\(G\)的最短路可能不为\(0\)(与\(prev(G)\)相比增加了,如图\(G=(V=\{1,2,3\},E=\{(1,2,1),(1,3,1),(2,3,1)\})\)在一次增广之后的情况),导致出现正权边,必须变为零边。(否则新图\(G'\)中会有负权,不能跑Dijkstra)

标签:路上,短路,源点,必要性,正确性,ge,对偶,dis
来源: https://www.cnblogs.com/frank3215/p/primal-dual.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有