差分約束系統

差分約束系統

概念: 差分約束系統是特殊的n元一次不等式組,它包含NN個變量,x1xnx_1 - x_n以及mm個約束條件,每一個約束條件由兩個變量作差構成的,類似於xixjakx_i-x_j \leq a_k,需要解決的問題是找到一組解,使得給出的約束條件得到滿足。

如何解決差分約束系統 -> 最短路算法

現在已知
BAcB - A \leq c
CBaC - B \leq a
CAbC - A \leq b
如果現在要求CAC-A的最大值,那麼可以知道 max(CA)=min(b,a+c)max(C-A) = min(b,a+c)
現在我們將圖建出來,how to build?

差分約束建圖技巧

1.對於一個全部都是\leq的不等式組,我們可以把式子轉化爲XiXj+W(i,j)X_i \leq X_j+W(i,j),即i,ji,j建邊,Xj>Xi=W(i,j)X_j->X_i=W(i,j),用最短路算法解決問題,求得最小值
2.對於一個全部都是\geq號的不等式組,我們可以將每個式子轉化爲XiXj+W(i,j)X_i \geq X_j+W(i,j) ,即i,ji,j建邊,Xj>Xi=W(i,j)X_j->X_i=W(i,j),用最長路算法解決,求得最大值
如果dis[Xi]爲inf或-inf,那麼Xi爲任意解
如果求最短路的過程中出現負環,那麼說明該不等式組無解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章