poj 1160 Post Office //四邊形不等式優化
http://blog.csdn.net/find_my_dream/archive/2009/12/03/4931222.aspx
這個部落格概括的比較好
四邊形不等式優化------郵局問題
m[p,n]為問題的解
m[i,j]表示在前j個村莊建立i個郵局的最小距離和
狀態轉移方程和邊界條件是
m[1,j]=w[1,j]
m[i,j]=min(m[i-1,k]+w[k+1,j]) i<=j
其中w[i,j]表示在d[i..j]之間建立一個郵局的最小距離和,
可以證明,當僅建立一個郵局時,最優解出現在中位數,
即設建立郵局的村莊為k,則k=(i+j)/2
計算w[i,j]是比較簡單的,不作闡述
同時令s[i,j]=k,記錄使用前i-1個郵局的村莊數
便於在算出最小距離和之後構造最優建立方案。
上述演算法中w[i,j]可通過O(n)時間的預處理,在O(1)的時間內算出,
所以,該演算法的狀態總數為O(n*p),每個狀態轉移的狀態數為O(n),
每次狀態轉移的時間為O(1),該演算法總的時間複雜度為O(p*n^2)。
以下就是演算法的優化
首先這個題目的狀態轉移方程讓我猜測它是否也滿足單調性
即 s[i-1,j]<=s[i,j]<=s[i,j+1]
首先我們證明函式w滿足四邊形不等式,即
w[i,j]+w[i',j']<=w[i',j]+w[i,j'] , i<=i'<=j<=j'
設y=(i'+j)/2 z=(i+j')/2
下面可分兩種情形討論,z<=y和z>y,不過這兩種情形相似
證明可參考毛子青大牛的論文,不作闡述
再用數學歸納法證明m函式也滿足四邊形不等式,
最後,我們證明決策s[i,j]滿足單調性。
為討論方便,令mk[i,j]=m[i-1,k]+w[k+1,j];
我們先來證明s[i-1,j]≤s[i,j],
只要證明對於所有i≤k<k'<j且mk'[i-1,j]≤mk[i-1,j],
有:mk'[i,j]≤mk[i,j]。
類似地,我們可以證明一個更強的不等式
mk[i-1,j]-mk'[i-1,j]≤mk[i,j]-mk'[i,j]
也就是:mk[i-1,j]+mk'[i,j]≤mk[i,j]+mk'[i-1,j]
利用遞推定義式展開整理的:m[i-2,k]+m[i-1,k']≤m[i-1,k]+m[i-2,k'],
這就是i-2<i-1<k<k'時m的四邊形不等式。
我們再來證明s[i,j]≤s[i,j+1],
與上文類似,設k<k'<j,則我們只需證明一個更強的不等式:
mk[i,j]-mk'[i,j]≤mk[i,j+1]-mk'[i,j+1]
也就是:mk[i,j]+mk'[i,j+1]≤mk[i,j+1]+mk'[i,j]
利用遞推定義式展開整理的:
w[k+1,j]+w[k'+1,j+1]≤w[k+1,j+1]+w[k'+1,j],
這就是k+1<k'+1<j<j+1時w的四邊形不等式。
綜上所述,該問題的決策s[i,j]具有單調性,
m[1,j]=w[1,j]
m[i,j]=min(m[i-1,k]+w[k+1,j]) i<=j
s[i,j]=k
同上文所述,優化後的演算法時間複雜度為O(n*p)。