嗯......四邊形不等式的確長得像個四邊形【霧】
我們在dp中,經常見到這樣一類狀態以及轉移方程:
設$dp\left[i\right]\left[j\right]$表示閉區間$\left[i,j\right]$中的最小值/最大值/和值
然後有這樣的轉移:
$dp\left[i\right]\left[j\right]=min\left(dp\left[i\right]\left[k-1\right]+dp\left[k\right]\left[j\right]+w\left(i,j\right)\right)$,其中$i
$w\left(i,j\right)$表示閉區間$\left[i,j\right]$通過一定方法計算出來的費用
這個dp的複雜度顯然是$o\left(n^3\right)$的,因為是平方的狀態、線性的轉移
但是有的時候這樣的複雜度並不夠切掉題目,這時我們需要一些優化
那麼在這種情況下,四邊形不等式就可以發揮它的價值了
首先,定義區間單調性如下:
當$p_1\leqslant p_2\leqslant p_3\leqslant p_4$時,若$w\left(p_2,p_3\right)\leqslant w\left(p_1,p_4\right)$,則稱$w$滿足區間單調性
同時定義四邊形不等式如下:
當$p_1\leqslant p_2\leqslant p_3\leqslant p_4$時,若$w$滿足如下式子,則稱$w$滿足四邊形不等式:
$w\left(p_1,p_3\right)+w\left(p_2,p_4\right)\leqslant w\left(p_2,p_3\right)+w\left(p_1,p_4\right)$
接下來是一條非常重要的定理:
如果$w$函式滿足四邊形不等式,那麼$dp$函式也滿足四邊形不等式!
也就是說:
當$p_1\leqslant p_2\leqslant p_3\leqslant p_4$時
$dp\left(p_1,p_3\right)+dp\left(p_2,p_4\right)\leqslant dp\left(p_2,p_3\right)+dp\left(p_1,p_4\right)$
而且還有另乙個定理:
如果$dp$函式滿足四邊形不等式,那麼表示$dp$函式取得最優值的點(也就是k)的那個函式$s$在每一行和每一列上單調
這個有點繞,換種說法
設$s\left[i\right]\left[j\right]$表示當$dp\left[i\right]\left[j\right]=min\left(dp\left[i\right]\left[k-1\right]+dp\left[k\right]\left[j\right]+w\left(i,j\right)\right)$的時候
$dp\left[i\right]\left[j\right]$取到最優(比如最大最小)值的時候,$k$的值,
$s\left[i\right]\left[j\right] \leqslant s\left[i\right]\left[j+1\right]$
那麼$s$函式滿足:
$s\left[i\right]\left[j\right] \leqslant s\left[i\right]\left[j+1\right]$
$s\left[i\right]\left[j\right] \leqslant s\left[i\right]\left[j+1\right]$,同時$s\left[i\right]\left[j\right] \leqslant s\left[i-1\right]\left[j\right]$
也就是說在列舉$k$值的時候,我們的閉區間變成了$\left[s\left[i\right]\left[j-1\right],s\left[i+1\right]\left[j\right]\right]$
因此只要先列舉區間長度,再列舉$i$求出$j$,就可以利用這個優化了
這個優化用完了以後,總複雜度可以從$o\left(n^3\right)$變成$o\left(n^2\right)$的
美滋滋為了加深理解,我們來看一道例題:石子歸併
這就是區間dp中四邊形不等式的最基礎的優化了
還有一道類似題目:tree construction
經典的四邊形不等式優化,到這裡就結束了(因為本來就是個比較窄的優化)
但是真的止於此地麼?
我們看一道例題:hdu3480
可以說是比較顯然的dp了,這裡放上題解供參考:題解
看完題解會發現,這道題竟然也可以用四邊形不等式優化!
為什麼呢?
我們發現,這道題裡面的$w$依舊滿足區間單調性以及四邊形不等式
證明一下(這裡證明過程其實不需要掌握了)可以發現$dp$也滿足四邊形不等式
也就是說,我們只要找到$s$函式的依賴方式就能用四邊形不等式優化了!
這道題中,實際上$s$依舊滿足上述的行列單調遞增,但是這裡不能再使用閉區間$\left[s\left[i\right]\left[j-1\right],s\left[i+1\right]\left[j\right]\right]$了
因為方程式中只有一項$dp$,所以這兩個$s$中的後面那乙個和全方程無關,甚至可能還沒有完全推出來
因此我們更改一下列舉方式,變成閉區間$\left[s\left[i-1\right]\left[j\right],s\left[i\right]\left[j+1\right]\right]$
這樣就解決了問題
需要注意的是,列舉$len$再列舉$i$的方式現在不行了,我們需要列舉$i$再倒序列舉$j$,因為$\left[i,j\right]$依賴$\left[i,j+1\right]$
這道例題其實也可以用區間列舉法過掉(利用了另外的乙個想法),但是不是所有這類」前j個元素放i個擋板「的dp都可以這麼優化的,所以還是取上面講的新方法比較好
另外的兩道例題:poj1160
hdu2829
四邊形不等式優化DP
記錄一下,以免忘了 對於乙個形如 dp i j min dp i k dp k j w i j 的轉移方程 注意取最大值時不一定滿足四邊形不等式 若對於 a leq b leq c leq d 且 w leq w 那麼我們稱 w 關於區間包含關係單調 若對於 a leq b leq c leq d ...
四邊形不等式優化dp
對四邊形不等式優化dp的理解 四邊形不等式適用於優化最小代價子母樹問題,即f i j max min f i k 1 f k j w i j 類似列舉中間點的 dp問題,典型例題石子歸併 如果w函式滿足區間包含的單調性和四邊形不等式,那麼函式 f也滿足四邊形不等式,如果 f滿足四邊形不等式,s i ...
四邊形不等式優化dp
原文 在動態規劃中,經常遇到形如下式的轉台轉移方程 m i,j min w i,j i k j min也可以改為max 上述的m i,j 表示區間 i,j 上的某個最優值。w i,j 表示在轉移時需要額外付出的代價。該方程的時間複雜度為o n 3 下面我們通過四邊形不等式來優化上述方程,首先介紹什麼...