四边形不等式
四邊形不等式
優化一種動態規劃遞推式:
必須滿足的條件:
a. w(i,j)w(i,j)w(i,j)滿足區間包含單調性
b. w(i,i)=0w(i,i)=0w(i,i)=0
c. w(i,j)w(i,j)w(i,j)滿足四邊形不等式,即對于x≤x′<y≤y′x \le x' \lt y \le y'x≤x′<y≤y′,有w(x,y)+w(x′,y′)≤w(x,y′),+w(x′,y)w(x,y) + w(x',y') \le w(x,y'),+w(x',y)w(x,y)+w(x′,y′)≤w(x,y′),+w(x′,y)
決策單調性證明
1維遞推式決策單調性證明
對于式子111,假設kkk是fif_ifi?的最優決策點,假設i′>i,k′<ki'>i,k'<ki′>i,k′<k,那么對于fi′f_{i'}fi′?來說,在kkk點決策優于在k′k'k′點決策。
根據3式,顯然決策單調性滿足。
2維遞推式決策單調性證明
對于式子222,假設p(i,j)p(i,j)p(i,j)是fi,jf_{i,j}fi,j?的最優決策點,那么證明決策單調性即等價于證明p(i,j?1)≤p(i,j)≤p(i+1,j)p(i,j-1) \le p(i,j) \le p(i+1,j)p(i,j?1)≤p(i,j)≤p(i+1,j)。
先證明p(i,j?1)≤p(i,j)p(i,j-1) \le p(i,j)p(i,j?1)≤p(i,j),右邊同理。
證明方法:設是p(i,j?1)=k,k′<kp(i,j-1)=k,k' \lt kp(i,j?1)=k,k′<k
顯然,對于fi,jf_{i,j}fi,j?來說,決策點kkk要比k′k'k′好,證明完畢。
于是石子合并的代碼可以寫成:
for(int i = 1;i <= n;++i) {dp[i][i] = 0;dp[i][i+1] = a[i] + a[i+1];p[i][i+1] = i; } for(int len = 3;len <= n;++len) for(int i = 1;i <= n;++i) {int j = i + len - 1;if(j > n) break;for(int k = p[i][j-1],k <= p[i+1][j];++k) {int X = dp[i][k] + dp[k+1][j];if(X < dp[i][j]){dp[i][j] = X;p[i][j] = k;}}} }例題
http://poj.org/problem?id=1160
題目大意
給出VVV個村莊的橫坐標,從中選出PPP個安放郵局,使得所有村莊去郵局距離之和最小。
解:
當只安放一個郵局時候,顯然只需選在中間點即可。
設w(i,j)w(i,j)w(i,j)表示把[i,j][i,j][i,j]區間內的村莊安置一個郵局,其最小距離和。
容易發現,w(i,j)w(i,j)w(i,j)可以用動態規劃來求解,時間復雜度O(n2)O(n^2)O(n2),w(i,j)=w(i,j?1)+(x[j+1]?x[y+1+x2])w(i,j)=w(i,j-1)+(x[j+1]-x[\frac{y+1+x}{2}])w(i,j)=w(i,j?1)+(x[j+1]?x[2y+1+x?]),發現w(i,j)w(i,j)w(i,j)滿足四邊形不等式等3個條件。
記fi,jf_{i,j}fi,j?表示在前iii個村莊安放jjj個郵局,距離之和的最小值。
類似于序列化分問題,我們可以找到轉移方程:
fi,j=min(fk,j?1+w(k+1,i))f_{i,j}=min(f_{k,j-1}+w(k+1,i))fi,j?=min(fk,j?1?+w(k+1,i)),根據1維線性遞推式的決策單調性證明方法,可以知道這個式子也可以使用四邊形進行優化。
總結
- 上一篇: NOIP2019 Emiya家今天的饭
- 下一篇: 网络流及建模专题(上)