差分约束系统

差分约束系统(spfa)

1、概述

x j − x i ≤ w k x_j-x_i\le w_k xjxiwk转换为: x j ≤ w k + x i x_j\le w_k+x_i xjwk+xi

在松弛操作中:
∙ \bullet 如果 d ( v j ) > d ( v i ) + w ( e i , j ) d(v_j)>d(v_i)+w(e_{i,j}) d(vj)>d(vi)+w(ei,j),则更新 d ( v j ) = d ( v i ) + w ( e i , j ) d(v_j)=d(v_i)+w(e_{i,j}) d(vj)=d(vi)+w(ei,j)

∙ \bullet 如果 d ( v j ) ≤ d ( v i ) + w ( e i , j ) d(v_j)\le d(v_i)+w(e_{i,j}) d(vj)d(vi)+w(ei,j),则无需更新,这是最终目的。

差分约束系统转化成图的形式,再通过求解最短路径的方法(即通过松弛操作)就能够实现差分系统的求解。

2、过程模拟

由上述所知, x j − x i ≤ w k x_j-x_i\le w_k xjxiwk就相当于节点 v i v_i vi到节点 v j v_j vj的边权距离为 w k w_k wk

x 2 − x 1 ≤ − 2 x_2-x_1\le -2 x2x12
x 1 − x 3 ≤ − 1 x_1-x_3\le -1 x1x31
x 2 − x 3 ≤ 4 x_2-x_3\le 4 x2x34
x 4 − x 2 ≤ 5 x_4-x_2\le 5 x4x25
x 3 − x 4 ≤ 2 x_3-x_4\le 2 x3x42
x 4 − x 3 ≤ − 2 x_4-x_3\le -2 x4x32
x 5 − x 4 ≤ 3 x_5-x_4\le 3 x5x43
x 5 − x 3 ≤ − 3 x_5-x_3\le -3 x5x33
⇓ \Darr
在这里插入图片描述
⇓ \Darr
v 1 v_1 v1作为源节点
在这里插入图片描述
顶点的 d d d值为: ( 0 , − 2 , 5 , 3 , 2 ) (0,-2,5,3,2) (0,2,5,3,2)
由于 d ( v 2 ) − d ( v 1 ) ≤ w 1 , 2 d(v_2)-d(v_1)\le w_{1,2} d(v2)d(v1)w1,2,所以 − 2 − 0 ≤ − 2 -2-0\le -2 202成立,也可得 x 2 = − 2 x_2=-2 x2=2 x 1 = 0 x_1=0 x1=0
⇓ \Darr
v 3 v_3 v3作为源节点
在这里插入图片描述
顶点的 d d d值为: ( − 1 , − 3 , 0 , − 2 , − 3 ) (-1,-3,0,-2,-3) (1,3,0,2,3)
⇓ \Darr
v 0 v_0 v0作为源节点
在这里插入图片描述
顶点的 d d d值为: ( − 1 , − 3 , 0 , − 2 , − 3 ) (-1,-3,0,-2,-3) (1,3,0,2,3)

v 2 v_2 v2作为源节点,顶点的 d d d值为: ( 4 , 0 , 7 , 5 , 8 ) (4,0,7,5,8) (4,0,7,5,8)

v 4 v_4 v4作为源节点,顶点的 d d d值为: ( 1 , − 1 , 2 , 0 , − 1 ) (1,-1,2,0,-1) (1,1,2,0,1)

总计如下:
v 1 v_1 v1作为源节点, x v 1 = ( 0 , − 2 , 5 , 3 , 2 ) x_{v_1}=(0,-2,5,3,2) xv1=(0,2,5,3,2)
v 2 v_2 v2作为源节点, x v 2 = ( 4 , 0 , 7 , 5 , 8 ) x_{v_2}=(4,0,7,5,8) xv2=(4,0,7,5,8)
v 3 v_3 v3作为源节点, x v 3 = ( − 1 , − 3 , 0 , − 2 , − 3 ) x_{v_3}=(-1,-3,0,-2,-3) xv3=(1,3,0,2,3)
v 4 v_4 v4作为源节点, x v 4 = ( 1 , − 1 , 2 , 0 , − 1 ) x_{v_4}=(1,-1,2,0,-1) xv4=(1,1,2,0,1)

其中, x v 2 x_{v_2} xv2 x v 1 x_{v_1} xv1 x v 3 x_{v_3} xv3都没有关联性,但 x v 4 = x v 3 + 2 x_{v_4}=x_{v_3}+2 xv4=xv3+2

3、推理

推理1:
对于差分约束系统的任意一个解 x = ( x 1 , x 2 , x 3 , x 4 , x 5 ) x=(x_1,x_2,x_3,x_4,x_5) x=(x1,x2,x3,x4,x5),以及任意一个常数 k k k,则 x ′ = x + k = ( x 1 + k , x 2 + k , x 3 + k , x 4 + k , x 5 + k ) x'=x+k=(x_1+k,x_2+k,x_3+k,x_4+k,x_5+k) x=x+k=(x1+k,x2+k,x3+k,x4+k,x5+k)依然是差分约束系统的解。

推理2:
以差分约束系统对应图的所以节点为源节点,得出所有的独立解(这些解之间没有关联性),差分约束系统的所有解包含:1、所有的独立解,2、这些独立解和任意一个常数的和。

推理3:
如果差分约束系统对应图存在负环(也就是不存在最短路径),则差分约束系统不存在可行解。

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会敲代码的狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值