簡單介紹一下差分約束系統:
對於形如
x1-x2<=c1
x1-x3<=c2
x2-x3<=c3
...構成的不等式組,我們要求出其中的一組解向量(x1,x2,x3,...,xn)使得所有的不等式都成立,我們就可以用最短路演算法來解出其中的乙個解向量,然後給每個xi同時加上乙個常數k,所有不等式仍然成立(兩個數同時加上常數k,這兩個數的差值不變),然後就求出了解集。
注意到在最短路中d[i]表示i到源點的最短路徑長度。那麼對於任意一條從u到v的邊w(u,v),我們都有d[v]<=d[u]+w(u,v),變形得:
d[v]-d[u]<=w(u,v),這個不等式跟我們上面提到的不等式類似,那麼我們就可以把不等式組中的所有未知數都看成乙個點,然後建立約束圖,這裡建圖的時候注意x1-x2x1,然後邊權為c1。
最後我們要求最短路了,那麼最短路的源點是哪個呢。
這裡我們要假設乙個超級源點x0,然後從超級源點出發到其他所有點都有一條有向邊,且邊權為0,就是說
x1-x0<=0
x2-x0<=0
...那麼我們就使得解向量的任意乙個成員都成了非正數(要知道所有解加上乙個常數還是符合條件的)。
然後我們求其他所有點到超級源點的最短路就成了。
特別注意dijkstra是不能處理負邊權的圖的。
差分約束系統
差分約束 若 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就可以化成小於等於 這樣的不等式組就稱作差分約束系統。這個不等式組要麼無解...