差分約束系統中的每個約束條件是形如如下所示的簡單不等式:
xj - xi <= bk。
例如,求解不等式組
x1-x5≤-1
x2-x5≤1
x3-x1≤5
x4-x1≤4
x4-x3≤-1
x5-x3≤-3
x5-x4≤-3
該問題的乙個解為x=(-5,-3,0,-1,-4),另乙個解y=(0,2,5,4,1),這2個解是有聯絡的:y中的每個元素比x中相應的元素大5。
引理:設x=(x1,x2,…,xn)是差分約束系統ax≤b的乙個解,d為任意常數。則x+d=(x1+d,x2+d,…,xn+d)也是該系統ax≤b的乙個解。
約束圖:對於給定差分約束系統ax<=b,其對應的約束圖是乙個帶權重的的有向圖g=(v,e) 這裡
v=e=u
其中結點v0是我們自己新增的,用來保證圖中至少存在乙個結點,從其出發可以到達所有其他的結點。
邊集中(v0,vi)的權值為0,(vi,vj)的權值為bk,那麼我們就可以得到乙個描述差分約束系統的約束圖。
現在我們來證明可以通過在對應的約束圖中尋找最短路來找到差分約束系統的乙個解。
定理:1.對於給定的差分約束系統,如果其對應的約束圖不包含權重為負值的環路,則
x = 是該系統的乙個可行解,其中d[i]表示v0到vi的最短路徑。
2.如果g包含權重為負值的環路,則該系統沒有可行解。
證明:首先證明第一條結論,
即當約束圖中不包含權重為負值的環路時,對於任意一條邊(vi,vj),因為
d[j] <= d[i] + w(i, j),即d[j] - d[i] <= w(i, j),故結論成立。
現在證明第二條結論。
如果g中包含負環,則沒有可行解。設權重為負值的環路為(v1,v2 ... vk),這裡v1 = vk。
環路c對應如下的差分不等式組:
x2 - x1 <= w(v1, v2)
x3 - x2 <= w(v2, v3)
....
xk - xk-1 <= w(vk-1, vk)
將等式兩邊相加,左邊為0,右邊為這個環的權值之和,所以當環為負環時,不等式不成立,所以此時無解
求解差分約束系統。
可以使用bellman-ford演算法求解差分約束系統。
因為約束圖包含從源節點v0到所有其他節點的邊,任何權重為負值的環路都可以從節點v0到達。如果bellman_ford演算法返回true值,則最短路徑權重給出的是該系統的乙個可行解如果返回false值則差分約束系統沒有解
差分約束系統學習筆記
差分約束系統 1.演算法用途 解決形如這樣一組不等式 left x x leq 0 x x leq 1 x x leq 1 x x leq 5 x x leq 4 x x leq 1 x x leq 3 x x leq 3 end right.這種不等式的特點是 1.都是兩個數的差小於等於某個常數 ...
學習筆記 差分約束系統
目錄將邊權取相反數,設此時圖為 g 若 g 無負權環 即 g 無正權環 則有 d v le len v 其中 d v 為在圖 g 上求得的最短路,len v 為源點到 v 的任意路徑權值和。同時可得 d v ge len v 所以可以得到 d v d v 其中 d v 為原圖源點到 v 的最長路。實...
筆記 差分約束系統
是個啥?如果乙個系統由 n 個變數和 m 個約束條件組成,形成 m 個形如 x i y i leq k 的不等式 i,j in 1 n k 為常數 則稱其為差分約束系統 system of difference constraints 亦即,差分約束系統是求解關於一組變數的特殊不等式組的方法。說句人...