四邊形不等式優化石子合併

2021-06-08 07:50:55 字數 965 閱讀 2059

關於四邊形不等式或石子合併的資料。網上有很多。但有不少都是語焉不詳,直接拋給你幾個結論,讓人很難理解。這篇文章將以石子合併為例。證明關於四邊形不等式的一些結論。算是乙個溫習。

【題面】

在乙個操場上擺放著一排n(n≤20)堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。

試程式設計求出將n堆石子合併成一堆的最小得分和最大得分以及相應的合併方案。

【演算法分析】

下面只討論最小得分的情況,最大得分的情況類似。

設f[i,j]=min,再分兩種情形k≤j或k>j。下面只討論k≤j,k>j的情況是類似的。

情形1.1:k≤j,此時:

情形1.2:k>j,略去

情形2:i      設 y=max

z=max

仍需再分兩種情形討論,即z≤y或z>y。下面只討論z≤y,z>y的情況是類似的。

情形2.1,i        顯然的,我們有:

f[i,j]+f[i',j']<=w[i,j]+f[i,z-1]+f[z,j]+w[i',j']+f[i',y-1]+f[y,j']

因為w滿足四邊形不等式,所以:

f[i,j]+f[i',j']<=w[i,j']+w[i',j]+f[i',y-1]+f[i,z-1]+f[z,j]+f[y,j']

因為f[i,j']+f[i',j]=w[i,j']+w[i',j]+f[i',y-1]+f[i,z-1]+f[y,j]+f[z,j']

所以,要證f[i,j']+f[i'j]>=f[i,j]+f[i',j'],就要證f[z,j]+f[y,j']<=f[y,j]+f[z,j']。

因為i情形2.1,i綜上所述,f[i,j]滿足四邊形不等式。

事實上,對於任意f[i,j]=max + w[i , j], i < j的動規,若w滿足四邊形不等式,則f滿足四邊形不等式,則f有決策單調性。

by qw

石子合併 四邊形不等式優化

藍橋杯 演算法提高 石子合併 很明顯的區間dp,d i,j 表示取第i堆到第j堆石子最少花費,轉移方程d i,j min d i,k d k 1,j sum j sum i 四邊形a b c d,有w b,c w a,d 滿足決策單調性 且w a,c w b,d w b,c w a,d 滿足四邊形不...

合併石子 四邊形不等式優化

有一排石子,共n 堆。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2 堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。試設計乙個演算法,計算出將n堆石子合併成一堆的最小得分。首先由直接動態規劃的方法來做,即 for int i 1 i n i for int j i j n j f...

四邊形不等式優化

先占個坑,準備學習一把運籌學,好像裡面很多最優化的內容都是和演算法設計相關聯的問題 下面內容 發現了一篇更好的部落格,粘上去,粘上去。簡介 給出乙個長度為l的木棍,以及n個切割點 要求切割成n 1段,每切一次花費都是原始的木棍長度 求最小花費 分析 實際上我們可以看做是n 1個物品 這和能量項鍊是一...