動態規劃的演算法作業2023年12月18日

2021-10-12 08:55:53 字數 1229 閱讀 1726

問題二:請舉乙個最優子結構的反例:

問題三:談談你對動態規劃的理解與心得:

例如,迷宮問題:給定乙個4*4的迷宮,

1 2 4 5

4 5 7 6

4 6 2 3

3 4 2 1

要求找到從(0,0)到(3,3)的一條權值最短的路徑,每次操作只能向右,或者向下移動,這個問題具有最優子結構性質。

分析:該迷宮可以劃分為7層:

到達每一層的乙個節點的權值由上一層的兩個節點決定

例如:圖中(1,1)節點,節點值為5,想要到達該結點,路徑權值由通過點(1,0)或者(0,1)的兩條路徑的權值大小決定。

這樣就可以得到從(0,0)到(3,3)的遞迴式為:

v(3,3) = min ( v(3,2),v(2,3) );

由此可以看出,想要獲得到達(3,3)的最小權值路徑,問題可以變為到達(3,2)或者到達(2,3)的最小權值路徑,由此可以看出,該問題的最優解可以由它的子問題的最優解推導的出,因此說明它具有最優子結構性質。

反例:圖中有4個點,如下圖所示:

要求從a走到d的所有路徑中,總權值除以4得到最小的路徑為最優路徑:

分析:從a走到b再走到c,如果根據子結構來看的化,選取4號與2號路徑得到8,除以4餘數為0,應該是最優解的一部分,然而根據全域性來看,最優解為4號與5號與6號,或者1號與5號與3號,並不包含4號與2號這條路徑,因此子問題最優無法得到全域性最優,因此不滿足最優子結構。

動態規劃法,是解決許多實際問題的重要方法,是一種從上往下分析,再從下往上求解的重要方法,它要求待求的問題有:

1、最優子結構性質;

2、無後效性;

3、重複子問題性。

大問題分解為若干個性質相同的子問題求解可以加快整個問題的求解速度,優點是能解決回溯法無法解決的大規模問題。在所有的子問題解決後,這些區域性最優解可以拼湊出問題的最優解。

動態規劃演算法是乙個重要的演算法,需要我認真理解與掌握,這對我以後的學習十分重要。

人生第一篇部落格誕生啦

演算法 動態規劃(1)

把問題拆分成若干個子問題,類似遞迴 分治 但是動規多用於處理最優解,有重疊子問題的問題,因為動態規劃對於重疊子問題不會反覆計算,會建立一張表將之前計算過的子問題答案直接儲存,避免了重複計算,加快計算速度 練習1 有8個任務,每個任務完成需要一定的時間,完成之後就會有相應的報酬 圖上的紅色字段 但是任...

演算法1 動態規劃

動態規劃的步驟是 1.找出最優解的特徵,並刻畫其結構特徵 2.遞迴地定義最優值 3.以自底向上的方式計算出最優值 4.根據計算最優值的時得到的資訊,構造最優解。動態規劃演算法的有效性依賴於兩個最重要的性質 最優子結構性質和重疊子問題性質。栗子1,矩陣連乘問題。1 動態規劃 矩陣連乘問題 2 incl...

演算法筆記 動態規劃1

動態規劃適合求解最優問題,比如最大值最小值等。它可以顯著的降低時間複雜度,提高 的執行效率。0 1 揹包問題 在上篇總結中,用回溯演算法解決了 0 1揹包問題。但是,在求解的過程中,我們應該能想象的出,有些步驟是一直在重複執行。如果揹包的總載重為 9 物品個數為 5 質量分別為 2,2,4,6,3 ...