動態規劃詳解 第三章

2021-05-26 05:22:43 字數 2160 閱讀 7769

這一章,我們來學習樹形動態規劃。

動態規劃一般來說分為四大類:線性動態規劃,區間動態規劃,樹形動態規劃和特殊種類動態規劃。

因為線性模型和區間類模型緊密相關,所以一般我們將這兩種型別放在一起學習。

樹形動態規劃和以上兩種不同,它是在乙個樹結構中進行的,因此具有一般性,

而特殊種類動態規劃則包含比較廣,譬如狀態壓縮,

博弈以及其他各種問題都可以歸納到這個部分,因為問題比較分散,

所以這個部分就請大家自己學習,可以參考歷年國家集訓隊**,

對這個部分的討論十分透徹和深入。

下面就讓我們來學習樹形動態規劃。

首先看一道例題:

例:給定一棵樹t,樹中每個頂點u都有乙個權w(u),權可以是負數。

現在要找到樹t的乙個個連通子圖使該子圖的權之和最大。

分析一下這道題,我們發現,對於節點a,如果考慮以他為根的一棵子樹,

那麼它的最優值和他的父節點無關,所以轉移方程為:

f[i]=sigma+w(u)

最終的答案為f[x]中的最大值。

因為是在一棵樹當中進行動態規劃,所以不妨用遞迴的形式來編寫。

通過上面的例子,相信大家對樹形動態規劃有了乙個初步的認識,

其實樹形動態規劃屬於動態規劃中乙個較難的問題,因為約束條件往往比較多,

所以狀態的轉移並不容易,下面看乙個較難的例子:

在一棵樹中,每條邊都有乙個長度值,現要求在樹中選擇3個點x、y、z,

滿足x到y的距離不大於x到z的距離,且x到y的距離與y到z的距離之和最大,求這個最大值。

其中頂點個數n<=2000000

因為資料規模很大,所以考慮o(n)或者o(nlogn)的演算法。

分析問題,我們發現因為在一棵樹中,所以x,y,z的路徑中必定有乙個交點k,

距離s=xk+2*ky+kz,我們發現,若要s達到最大值,

那麼只需要ky,xk,kz為以k為根的樹中三個不在同一子樹中的最大的三個距離就可以了,

但是這樣的時間複雜度依然為o(n^2),繼續分析發現,

實際上第一次求出以某個節點為根的距離後,

只需要以這個點為根再dfs遍歷一遍就可以求出其他的節點距離,所以總的時間複雜度為o(n)。

再次回味一下這道題的解題思路:我們首先從資料規模確定了演算法的複雜度,

並通過對模型的初步分析得到了一些性質,然後通過這些性質得到了新的解題思路,

這其實是解樹形動態規劃乃至其他問題的乙個一般性的思路

通過對樹模型的特殊性分析,可以大大的降低時間複雜度。

最後讓我們來看乙個很具有發散性的題目:

奶牛成群、土地眾多的fj有乙個地形狹長的農場,農場被分成了n塊土地,n不超過1000。

這些土地位於一條直線上,並從左到右編號為1至n。每塊土地的面積都相同,

但是高度不一定相同。每塊土地都擁有乙個海拔高度值,這個值不超過1000000。

如果一段相同高度土地的兩邊都比它低或者是農場的邊界,那麼這段土地將被稱之為「山頂」。

fj希望通過搬走泥土來降低某些土地的海拔高度,使「山頂」的數目不超過k,其中1≤k≤25。

在這一前提下,fj希望搬運的泥土體積最小,也就是所有的土地減少的高度和最小。

初看上去這道題似乎和樹形動態規劃沒有什麼關係,根本沒有樹結構的樣子,

分析一下我們發現,所謂的山峰,就是每個層中不連線的部分,所以從層的角度思考,

顯然,每個層之與他的上層和他的下層的有關,與層的長度無關,所以不訪化層為點,

以地面為基礎節點,每一層不連線「塊」為乙個節點,用邊連線不同層的相鄰的點,

我們驚訝的發現,這些點構成了一棵樹!

進一步分析,發現每次「削平」乙個山頂,在樹中就是刪除乙個最葉子節點,

而消除的高度則可以看作是節點的權值,這樣,問題就轉化到了在樹中刪除一些節點,

使最終的節點數目不超過k+1,並且剩餘權值最大的問題,複雜度為o(nk^2)。

多麼巧妙的轉化!一道看似複雜的問題就這樣解決了,以無限為有限,以無法為有法,這或許就是演算法的魅力。

<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>

推薦題目:

1.樹的最大連通分支問題

2.愛心蝸牛

3.皇后萬歲

4.有線電視網

5.貪吃九頭鳥

6.尋寶

7.網路收費(noi2006)

第三章 規劃

問答 1.安裝規劃 1.ubuntu適合台式電腦使用,x window整合得比較好 2.redhat 和suse適合企業使用,系統服務整合得比較好 3.linux需要先確定好硬體應該使用那個i o埠或是irq分配 2.硬碟分割槽規劃 最簡單的是分兩個區 和 swap 相當於windows的虛擬記憶體...

第三章 Models詳解

摘自 萬丈高樓平地起,先理解概念才能更好的使用。資料是由model提供的,但不是指區域性變數 全域性變數或常數這樣的資料,而是指程式外部所提供的資料。外部資料,包含資料庫 檔案 web service等,都是可以算是model。按asp.net mvc的分類方法 domainmodel viewmo...

tcp ip詳解 筆記 第三章

ip協議是tcp ip協議簇中最為核心的協議。所有的tcp udp icmp igmp資料都以ip資料報格式傳輸。而ip協議是不可靠的,因為ip僅提供最好的傳輸服務,也就是以最快速度 資料報,而資料報能不能到達終點,能不能按照傳送的順序到達終點都是不能保證的。圖為ip資料報格式及首部中的各欄位 本章...