动态规划最短路算法总结——以【Layout】差分约束为例

本文总结了动态规划最短路算法,以【Layout】差分约束为例,详细介绍了差分约束的概念,并讲解了全点对最短路的Floyd-Warshall算法、单源最短路的Dijkstra、Bellman-Ford和SPFA算法。重点讨论了Dijkstra算法的优化,以及如何处理负权路。同时,提供了Layout问题的题意分析和代码实现,适用于解决带有正负权边的最短路问题。
摘要由CSDN通过智能技术生成

动态规划最短路算法总结

——以【Layout】差分约束为例

一.差分约束的概念

如果一个系统由 n n 个变量和 m 个不等式组成,并且这 m m 个不等式对应的系数矩阵每一行有且仅有一个1和-1,其它的都为0,这样的系统成为差分约束系统。

将不等式 x [ i ] x [ j ] a [ k ] 变形为 x[i]x[j]+a[k] x [ i ] ≤ x [ j ] + a [ k ] ,再令 a[k]=w(j,i) a [ k ] = w ( j , i ) ,令 i=v i = v j=u j = u ,再将数组名改为 d d ,不等式即可变形为: d [ u ] + w ( u , v ) d [ v ] 。这就使人联想到SPFA中的一个松弛操作:

if(d[u] + w(u,v) <= d[v])
  d[v] = d[u] + w(u,v);

虽然两个式子符号不同,但想想看,差分约束受到多个值的约束,这些值里面的最小值就是差分约束能取到的最大数值,而这也正是最短路的结果。所以:

对于每个不等式 x[i]x[j]a[k] x [ i ] − x [ j ] ≤ a [ k ] ,对结点 i i j 建立一条 j>i j − > i 的有向边,边权为 a[k] a [ k ] ,求 x[n1]x[0] x [ n − 1 ] − x [ 0 ] 的最大值,就是求0到n-1的最短路。

二.最短路算法详解

最短路可分为全点对最短路,代表算法Floyd-Warshall单源最短路,代表算法Dijkstra和Bell-Ford

1.全点对最短路及Floyd-Warshall算法

全点对最短路的决策量为 D[i,j] D [ i , j ] ,表示 i i j 之间的最短距离

​ 子结构为 [1:k] [ 1 : k ] ,表示经过的节点数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值