差分約束系統

2021-07-04 04:01:48 字數 1602 閱讀 1652

在乙個差分約束系統(system of difference constraints)中,線性規劃矩陣a的每一行包含乙個1和乙個-1,a的其他所有元素都為0。因此,由ax≤b給出的約束條件是m個差分約束集合,其中包含n個未知量,對應的線性規劃矩陣a為m行n列。每個約束條件為如下形式的簡單線性不等式:xj-xi≤bk。其中1≤i,j≤n,1≤k≤m。

比如給出三個不等式,b-a<=k1,c-b<=k2,c-a<=k3,求出c-a的最大值,我們可以把a,b,c轉換成三個點,k1,k2,k3是邊上的權,如圖

由題我們可以得知,這個有向圖中,由題b-a<=k1,c-b<=k2,得出c-a<=k1+k2,因此比較k1+k2和k3的大小,求出最小的就是c-a的最大值了

從a到c沿著某條路徑後把所有權值和k求出就是c -a<=k的乙個,也就是從a到c最短距離

引理:設x=(x1,x2,…,xn)是差分約束系統ax≤b的乙個解,d為任意常數。則x+d=(x1+d,x2+d,…,xn+d)也是該系統ax≤b的乙個解。

約束圖

在乙個差分約束系統ax≤b中,m x n的線性規劃矩陣a可被看做是n頂點,m條邊的圖的關聯矩陣。對於i=1,2,…,n,圖中的每乙個頂點vi對應著n個未知量的乙個xi。圖中的每個有向邊對應著關於兩個未知量的m個不等式中的乙個。

給定乙個差分約束系統ax≤b,相應的約束圖是乙個帶權有向圖g=(v,e),其中v=,而且e=∪。引入附加頂點v0是為了保證其他每個頂點均從v0可達。因此,頂點集合v由對應於每個未知量xi的頂點vi和附加的頂點v0組成。邊的集合e由對應於每個差分約束條件的邊與對應於每個未知量xi的邊(v0,vi)構成。如果xj-xi≤bk是乙個差分約束,則邊(vi,vj)的權w(vi,vj)=bk(注意i和j不能顛倒),從v0出發的每條邊的權值均為0。

定理:給定一差分約束系統ax≤b,設g=(v,e)為其相應的約束圖。如果g不包含負權迴路,那麼x=( d(v0,v1) , d(v0,v2) , … , d(v0,vn) )是此系統的一可行解,其中d(v0,vi)是約束圖中v0到vi的最短路徑(i=1,2,…,n)。如果g包含負權迴路,那麼此系統不存在可行解。

注意點:

1. 如果要求最大值想辦法把每個不等式變為標準x-y<=k的形式,然後建立一條從y到x權值為k的邊,變得時候注意x-yx-y<=k-1

如果要求最小值的話,變為x-y>=k的標準形式,然後建立一條從y到x的k邊,求出最長路徑即可

2.如果權值為正,用dijkstra,spfa,bellman都可以,如果為負不能用dj,並且需要判斷是否有負環,有的話就不存在

差分約束的用途

1、求最大差

建立形如 a-b<=c 的不等式,在原圖中新增邊  邊權為c

對建好的圖跑最短路

,如果存在負環,無解(判斷條件為某點被更新了 n 次),n 為圖中點的數量

2、求最小差

建立形如 a-b>=c 的不等式,在原圖中新增邊  邊權為 c

對建好的圖跑最長路

,如果存在正環,無解(判斷條件為某點被更新了 n 次),n 為圖中點的數量

差分約束系統

差分約束 若 s a s b k 建一條b到a 的長度為k的邊 若s a s b k 建一條b到a 的長度為 k的邊 是求最小值的最長路 是求最大值的最短路 注意到最短路演算法的鬆弛操作 if d j d i w i j d j d i w i j 這其中的三角形不等式 d j d i w i j ...

差分約束系統

差分約束系統 對於差分不等式,a b c 建一條 b 到 a 的權值為 c 的邊,求的是最短路,得到的是最大值 對於不等式 a b c 建一條 b 到 a 的權值為 c 的邊,求的是最長路,得到的是最小值 存在負環的話是無解 求不出最短路 dist 沒有得到更新 的話是任意解 第三 一種建圖方法 設...

差分約束系統

差分約束系統 x1 x2 0 x1 x5 1 x2 x5 1 x3 x1 5 x4 x1 4 x4 x3 1 x5 x3 3 x5 x4 3 不等式組 1 全都是兩個未知數的差小於等於某個常數 大於等於也可以,因為左右乘以 1就可以化成小於等於 這樣的不等式組就稱作差分約束系統。這個不等式組要麼無解...