1D/1D动态规划的三种优化方法
1D/1D1D/1D1D/1D動態(tài)規(guī)劃
形如dp[i]=min{dp[j]+w(j,i)}(Li≤j≤Ri)dp[i]=min\{dp[j]+w(j,i)\} (L_i\leq j\leq R_i)dp[i]=min{dp[j]+w(j,i)}(Li?≤j≤Ri?) 的dpdpdp方程被稱作1D/1D1D/1D1D/1D動態(tài)規(guī)劃,其中LiL_iLi?和RiR_iRi?單調(diào)遞增,w(j,i)w(j,i)w(j,i)決定著優(yōu)化策略選擇。
(dp[i]=max{dp[j]+w(j,i)}dp[i]=max\{dp[j]+w(j,i)\}dp[i]=max{dp[j]+w(j,i)}與dp[i]=min{dp[j]+w(j,i)}dp[i]=min\{dp[j]+w(j,i)\}dp[i]=min{dp[j]+w(j,i)}類似,本文不贅述)
決策單調(diào)性優(yōu)化DP
決策單調(diào)性
設(shè)j0[i]j_0[i]j0?[i]表示dp[i]dp[i]dp[i]轉(zhuǎn)移的最優(yōu)決策點,那么決策單調(diào)性可描述為 ?i≤j,j0[i]≤j0[j]\forall i\leq j,j_0[i]\leq j_0[j]?i≤j,j0?[i]≤j0?[j]。也就是說隨著iii的增大,所找到的最優(yōu)決策點是遞增態(tài)(非嚴(yán)格遞增)。
四邊形不等式
表述1:
w(x,y)w(x,y)w(x,y)為定義在整數(shù)集合上的一個二元函數(shù),若 ?a≤b≤c≤d,w(a,c)+w(b,d)≤w(a,d)+w(b,c)\forall a\leq b\leq c\leq d,w(a,c)+w(b,d)\leq w(a,d)+w(b,c)?a≤b≤c≤d,w(a,c)+w(b,d)≤w(a,d)+w(b,c),那么函數(shù)www滿足四邊形不等式。
表述2:
w(x,y)w(x,y)w(x,y)為定義在整數(shù)集合上的一個二元函數(shù),若 ?a<b,w(a,b)+w(a+1,b+1)≤w(a+1,b)+w(a,b+1)\forall a<b,w(a,b)+w(a+1,b+1)\leq w(a+1,b)+w(a,b+1)?a<b,w(a,b)+w(a+1,b+1)≤w(a+1,b)+w(a,b+1),那么函數(shù)www滿足四邊形不等式。
定理:
1D/1D1D/1D1D/1D動態(tài)規(guī)劃具有決策單調(diào)性當(dāng)且僅當(dāng)函數(shù)www滿足四邊形不等式 時成立。
實現(xiàn)
單調(diào)隊列優(yōu)化DP
形如dp[i]=min{dp[j]+A(i)+B(j)}dp[i]=min\{dp[j]+A(i)+B(j)\}dp[i]=min{dp[j]+A(i)+B(j)}的dpdpdp方程均可嘗試使用單調(diào)隊列優(yōu)化。
實現(xiàn)
斜率優(yōu)化DP
形如dp[i]=min{A(i)×B(j)+C(i)+D(j)}dp[i]=min\{A(i)\times B(j)+C(i)+D(j)\}dp[i]=min{A(i)×B(j)+C(i)+D(j)}的dpdpdp方程可嘗試使用斜率優(yōu)化。
1.0 B(j)B(j)B(j)嚴(yán)格單調(diào)遞增
法一:線性規(guī)劃
考慮把 dp[i]=A(i)×B(j)+C(i)+D(j)dp[i]=A(i)\times B(j)+C(i)+D(j)dp[i]=A(i)×B(j)+C(i)+D(j) 化成y=kx+by=kx+by=kx+b的形式,其中y,xy,xy,x只與jjj有關(guān),k,bk,bk,b只與iii有關(guān),且 xxx嚴(yán)格單調(diào)遞增。
則有:
D(j)=?A(i)×B(j)+dp[i]?C(i)D(j)=-A(i)\times B(j)+dp[i]-C(i)D(j)=?A(i)×B(j)+dp[i]?C(i)
其中y=D(j),k=?A(i),x=B(j),b=dp[i]?C(i)y=D(j),k=-A(i),x=B(j),b=dp[i]-C(i)y=D(j),k=?A(i),x=B(j),b=dp[i]?C(i)
在平面直角坐標(biāo)系上把所有的(xj,yj)(x_j,y_j)(xj?,yj?)(即(B(j),D(j))(B(j),D(j))(B(j),D(j)))標(biāo)出來。
要令dp[i]dp[i]dp[i]最小,則要令bbb最小,即是要找到某一點(xj,yj)(x_j,y_j)(xj?,yj?),使斜率為kkk的直線經(jīng)過該點時算出來的bbb最小。
發(fā)現(xiàn)只有 在給出點的下凸殼上的點可能成為最優(yōu)決策點。
法二:代數(shù)法+數(shù)形結(jié)合
設(shè)j1,j2j_1,j_2j1?,j2? (0≤j1<j2<i)(0\leq j_1<j_2<i)(0≤j1?<j2?<i) 為dp[i]dp[i]dp[i]的兩個決策點,且決策點j2j_2j2?優(yōu)于j1j_1j1?,則有:
A(i)×B(j2)+C(i)+D(j2)≤A(i)×B(j1)+C(i)+D(j1)A(i)\times B(j_2)+C(i)+D(j_2)\leq A(i)\times B(j_1)+C(i)+D(j_1)A(i)×B(j2?)+C(i)+D(j2?)≤A(i)×B(j1?)+C(i)+D(j1?)
化簡式子,使不等號左邊只與iii有關(guān),不等號右邊只與j1,j2j_1,j_2j1?,j2?有關(guān):
A(i)≤?D(j2)?D(j1)B(j2)?B(j1)A(i)\leq -\frac{D(j_2)-D(j_1)}{B(j_2)-B(j_1)}A(i)≤?B(j2?)?B(j1?)D(j2?)?D(j1?)?
?A(i)≥D(j2)?D(j1)B(j2)?B(j1)-A(i)\geq \frac{D(j_2)-D(j_1)}{B(j_2)-B(j_1)}?A(i)≥B(j2?)?B(j1?)D(j2?)?D(j1?)?
設(shè)xj=B(j),yj=D(j)x_j=B(j),y_j=D(j)xj?=B(j),yj?=D(j),則D(j2)?D(j1)B(j2)?B(j1)\frac{D(j_2)-D(j_1)}{B(j_2)-B(j_1)}B(j2?)?B(j1?)D(j2?)?D(j1?)?可以看作Pj1(xj1,yj1)P_{j_1}(x_{j_1},y_{j_1})Pj1??(xj1??,yj1??),Pj2(xj2,yj2)P_{j_2}(x_{j_2},y_{j_2})Pj2??(xj2??,yj2??)兩點連線的斜率。
也就是說,如果存在兩個決策點j1,j2j_1,j_2j1?,j2?滿足0≤j1<j2<i0\leq j_1<j_2<i0≤j1?<j2?<i,使得Pj1P_{j_1}Pj1??,Pj2P_{j_2}Pj2??兩點連線的斜率≤?A(i)\leq -A(i)≤?A(i),那么決策點j2j_2j2?優(yōu)于j1j_1j1?。
于是,對于這樣子的三個點,可證BBB一定不是最優(yōu)決策點。
我們可以將BBB從候選決策點中踢出去(刪除),只留下AAA和CCC,刪后的情況如下圖所示:
最終,我們維護(hù)的候選決策點應(yīng)該構(gòu)成了一個下凸殼:
實現(xiàn)
進(jìn)一步優(yōu)化
若k0(i)=?A(i),B(j)k_0(i)=-A(i),B(j)k0?(i)=?A(i),B(j)均單調(diào)不減,則該dpdpdp方程必定有決策單調(diào)性。那么就不需要在凸殼上二分找最優(yōu)決策點了。
總結(jié)
以上是生活随笔為你收集整理的1D/1D动态规划的三种优化方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。