1. 程式人生 > >差分約束系統相關證明(存在負環則無解證明)

差分約束系統相關證明(存在負環則無解證明)

無法 沒有 要求 描述 -a 兩個 img 不同 nbsp

先引用網上的關於差分約束的解釋:

一、引例

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的最大值。於是開始人肉,費盡千辛萬苦,終於整理出以下三個不等式:

  1. (3) x3 – x0 <= 8

  2. (2) + (5) x3 – x0 <= 9

  3. (1) + (4) + (5) x3 – x0 <= 7

這裏的T等於{8, 9, 7},所以min{ T } = 7,答案就是7。的確是7嗎?我們再仔細看看,發現的確沒有其它情況了。那麽問題就是這種方法即使做出來了還是帶有問號的,不能確定正確與否,如何系統地解決這類問題呢?

讓我們來看另一個問題,這個問題描述相對簡單,給定四個小島以及小島之間的有向距離,問從第0個島到第3個島的最短距離。如圖一-1-2所示,箭頭指向的線段代表兩個小島之間的有向邊,藍色數字代表距離權值。

技術分享圖片

圖一-1-2

這個問題就是經典的最短路問題。由於這個圖比較簡單,我們可以枚舉所有的路線,發現總共三條路線,如下:

  1. 0 -> 3 長度為8

  2. 0 -> 2 -> 3 長度為7+2 = 9

  3. 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、無限多解;

差分約束系統相關證明(存在負環則無解證明)