差分約束系統相關證明(存在負環則無解證明)
先引用網上的關於差分約束的解釋:
一、引例
1、一類不等式組的解
給定n個變量和m個不等式,每個不等式形如 x[i] – x[j] <= a[k] (0 <= i, j < n, 0 <= k < m, a[k]已知),求 x[n-1] – x[0] 的最大值。例如當n = 4,m = 5,不等式組如圖一-1-1所示的情況,求x3 – x0的最大值。
圖一-1-1
觀察x3 – x0的性質,我們如果可以通過不等式的兩兩加和得到c個形如 x3 – x0 <= Ti 的不等式,那麽 min{ Ti | 0 <= i < c } 就是我們要求的x3 – x0的最大值。於是開始人肉,費盡千辛萬苦,終於整理出以下三個不等式:
-
(3) x3 – x0 <= 8
-
(2) + (5) x3 – x0 <= 9
-
(1) + (4) + (5) x3 – x0 <= 7
這裏的T等於{8, 9, 7},所以min{ T } = 7,答案就是7。的確是7嗎?我們再仔細看看,發現的確沒有其它情況了。那麽問題就是這種方法即使做出來了還是帶有問號的,不能確定正確與否,如何系統地解決這類問題呢?
讓我們來看另一個問題,這個問題描述相對簡單,給定四個小島以及小島之間的有向距離,問從第0個島到第3個島的最短距離。如圖一-1-2所示,箭頭指向的線段代表兩個小島之間的有向邊,藍色數字代表距離權值。
圖一-1-2
這個問題就是經典的最短路問題。由於這個圖比較簡單,我們可以枚舉所有的路線,發現總共三條路線,如下:
-
0 -> 3 長度為8
-
0 -> 2 -> 3 長度為7+2 = 9
-
0 -> 1 -> 2 -> 3 長度為2 + 3 + 2 = 7
最短路為三條線路中的長度的最小值即7,所以最短路的長度就是7。這和上面的不等式有什麽關系呢?還是先來看看最短路求解的原理,看懂原理自然就能想到兩者的聯系了。
若有負環,則不等式組解不存在:
若存在負環,則已知a+b+c<0。
又已知:
B-A<=c……1
C-B<=a……2
A-C<=b……3
假設存在解A,B,C
2+3得:A-B<=a+b
和1聯立得:-c<=A-B<=a+b
又因為:a+b<-c
所以:a+b<a+b,明顯不符合,所以解不存在
解的存在性
上文提到最短路的時候,會出現負權圈或者根本就不可達的情況,所以在不等式組轉化的圖上也有可能出現上述情況,先來看負權圈的情況,如圖三-3-1,下圖為5個變量5個不等式轉化後的圖,需要求得是X[t] – X[s]的最大值,可以轉化成求s到t的最短路,但是路徑中出現負權圈,則表示最短路無限小,即不存在最短路,那麽在不等式上的表現即X[t] – X[s] <= T中的T無限小,得出的結論就是 X[t] – X[s]的最大值 不存在。
圖三-3-1
再來看另一種情況,即從起點s無法到達t的情況,如圖三-3-2,表明X[t]和X[s]之間並沒有約束關系,這種情況下X[t] – X[s]的最大值是無限大,這就表明了X[t]和X[s]的取值有無限多種。
圖三-3-2
在實際問題中這兩種情況會讓你給出不同的輸出。綜上所述,差分約束系統的解有三種情況:1、有解;2、無解;3、無限多解;
差分約束系統相關證明(存在負環則無解證明)