四邊形不等式

四邊形不等式

優化一種動態規劃遞推式:

  1. fi=min0j<i{fj+w(j+1,i)}f_i=min_{0\le j\lt i}\{f_j+w(j+1,i)\} 典型題目:序列劃分
  2. fi,j=minik<j{fi,k+fk+1,j+w(i,j)}f_{i,j}=min_{i\le k \lt j}\{f_{i,k}+f_{k+1,j}+w(i,j)\} 典型題目:石子合併

必須滿足的條件:

a. w(i,j)w(i,j)滿足區間包含單調性
b. w(i,i)=0w(i,i)=0
c. w(i,j)w(i,j)滿足四邊形不等式,即對於xx<yyx \le x' \lt y \le 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)

決策單調性證明

1維遞推式決策單調性證明

對於式子11,假設kkfif_i的最優決策點,假設i>i,k<ki'>i,k'<k,那麼對於fif_{i'}來說,在kk點決策優於在kk'點決策。

  1. 首先有1式:fi=fk+w(k+1,i)<fk+w(k+1,i)f_i=f_k+w(k+1,i) < f_{k'}+w(k'+1,i)
  2. 取點k+1<k+1<i<ik'+1 \lt k+1 \lt i \lt i',根據四邊形不等式得2式:w(k+1,i)+w(k+1,i)<w(k+1,i)+w(k+1,i)w(k'+1,i)+w(k+1,i') \lt w(k'+1,i') + w(k+1,i)
  3. 1式 + 2式可得3式:fk+w(k+1,i)<fk+w(k+1,i)f_k+w(k+1,i') \lt f_{k'} + w(k'+1,i')
    根據3式,顯然決策單調性滿足。

2維遞推式決策單調性證明

對於式子22,假設p(i,j)p(i,j)fi,jf_{i,j}的最優決策點,那麼證明決策單調性即等價於證明p(i,j1)p(i,j)p(i+1,j)p(i,j-1) \le p(i,j) \le p(i+1,j)
先證明p(i,j1)p(i,j)p(i,j-1) \le p(i,j),右邊同理。
證明方法:設是p(i,j1)=k,k<kp(i,j-1)=k,k' \lt k

  1. kk的最優性,得到1式fi,j1=fi,k+fk+1,j1+w(i,j1)<fi,k+fk+1,j1+w(i,j1)f_{i,j-1}=f_{i,k} + f_{k+1,j-1}+w(i,j-1) \lt f_{i,k'} + f_{k'+1,j-1}+w(i,j-1)
  2. 由於ww滿足四邊形不等式,其實ff也滿足四邊形不等式,取k+1<k+1<j1<jk'+1 \lt k+1 \lt j-1 \lt j,由遞變形不等式可得:fk+1,j1+fk+1,j<fk+1,j+fk+1,j1f_{k'+1,j-1}+f_{k+1,j} \lt f_{k'+1,j}+f_{k+1,j-1}
  3. 1式+2式可得:fi,k+fk+1,j+w(i,j)<fi,k+fk+1,j+w(i,j)f_{i,k}+f_{k+1,j}+w(i,j) \lt f_{i,k'}+f_{k'+1,j}+w(i,j)
    顯然,對於fi,jf_{i,j}來說,決策點kk要比kk'好,證明完畢。

於是石子合併的代碼可以寫成:

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

題目大意

給出VV個村莊的橫座標,從中選出PP個安放郵局,使得所有村莊去郵局距離之和最小。

解:

當只安放一個郵局時候,顯然只需選在中間點即可。
w(i,j)w(i,j)表示把[i,j][i,j]區間內的村莊安置一個郵局,其最小距離和。
容易發現,w(i,j)w(i,j)可以用動態規劃來求解,時間複雜度O(n2)O(n^2)w(i,j)=w(i,j1)+(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)滿足四邊形不等式等3個條件。

fi,jf_{i,j}表示在前ii個村莊安放jj個郵局,距離之和的最小值。
類似於序列化分問題,我們可以找到轉移方程:
fi,j=min(fk,j1+w(k+1,i))f_{i,j}=min(f_{k,j-1}+w(k+1,i)),根據1維線性遞推式的決策單調性證明方法,可以知道這個式子也可以使用四邊形進行優化。

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