bellmax-ford算的证明

dist[x]表示源点到x的最短路的距离(图中无负环),若对图中任意一条边(x,y,z)满足dist[y]dist[x]+z,那么dist就是最短路数组

证:考虑任意一个点a,假设找出了一条源点到a的最短路径{x0,x1,...,xn,a},那么显然这条路径上x0到任意一个点一定是最短路径;我们来证明对任意一个xidist[xi]为最短路径

x1来说,有dist[x1]dist[x0]+zx0>x1=zx0>x1,由于zx0>x1是最短的,所以dist[x1]=zx0>x1,所以x1满足

xi来说,若前面的点都满足dist为最短路数组,那么有dist[xi]dist[xi1]+zxi1>xi;由于dist[xi1]+zxi1>xi表示的是最短路,所以dist[xi]=dist[xi1]+zxi1>xi,得证

再证明一下时间复杂度。就按spfa来证明,spfa相当于BFS,满足两段性,所以我们再给队列中的每个元素加一个分量,表示这个元素所代表路径的边数,那么显然边数是逐渐递增的,每一层最多包含所有点,所有点全部走完所有边,于是复杂度为O(nm)

posted @   最爱丁珰  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示