差分约束系统
差分约束系统
- 差分约束系统(spfa)
- 1、概述
- 2、过程模拟
- 3、推理
差分约束系统(spfa)
1、概述
x j − x i ≤ w k x_j-x_i\le w_k xj−xi≤wk转换为: x j ≤ w k + x i x_j\le w_k+x_i xj≤wk+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 xj−xi≤wk就相当于节点 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 x2−x1≤−2
x 1 − x 3 ≤ − 1 x_1-x_3\le -1 x1−x3≤−1
x 2 − x 3 ≤ 4 x_2-x_3\le 4 x2−x3≤4
x 4 − x 2 ≤ 5 x_4-x_2\le 5 x4−x2≤5
x 3 − x 4 ≤ 2 x_3-x_4\le 2 x3−x4≤2
x 4 − x 3 ≤ − 2 x_4-x_3\le -2 x4−x3≤−2
x 5 − x 4 ≤ 3 x_5-x_4\le 3 x5−x4≤3
x 5 − x 3 ≤ − 3 x_5-x_3\le -3 x5−x3≤−3
⇓ \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 −2−0≤−2成立,也可得 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:
如果差分约束系统对应图存在负环(也就是不存在最短路径),则差分约束系统不存在可行解。