動態規划與分治、備忘錄的區別


http://qiangmzsx.blog.51cto.com/2052549/802715

算法設計與分析復習——第三章:動態規划

 

 第三章:動態規划

1、  分治算法和動態規划算法都是通過對問題進行分解,通過對子問題的求解然后進行解重構,從而實現對原問題的求解。請指出這兩種算法在對問題進行分解時各自所遵循的原則。

答:分治算法對問題進行分解時所遵循的原則是將待求解問題分解為若干個規模較小、相互獨立且與原問題相同的子問題(不包含公共的子問題)。

動態規划對問題進行分解時所遵循的原則是將待求解問題分解為若干個規模較小、相互關聯的與原問題類似的子問題(包含公共的子問題),采用記錄表的方法來保存所有已解決問題的答案,而在需要的時候再找出已求得的答案,避免大量的重復計算。

 

2、  動態規划算法的本質是什么,請簡要闡述。

答:動態規划的實質是分治思想解決冗余,動態規划算法是將問題分解為更小的、相似的子問題,並存儲子問題的解而避免計算重復的子問題,以解決最優化問題的算法策略。

 

3、  如果一個問題可以利用動態規划算法求解,那么該問題應滿足什么條件?

答:該問題具有最優子結構性質(一個問題的最優解包含其子問題的最優解)和無后效性(將各階段按照一定的次序排列好之后,對於某個給定的階段狀態,它以前各階段的狀態無法直接影響它未來的決策,而只能通過當前的這個狀態).

 

4、動態規划算法的基本思想是什么?請簡述動態規划算法主要設計步驟。

答:動態規划算法的基本思想是將待求解問題分解成若干個相互關聯的與原問題類似的子問題,求解這些子問題,並保存子問題的答案,避免重復計算,然后從這些子問題的解得到原問題的解。

動態規划算法主要設計步驟:

1)找出最優解的性質,並刻畫其結構特征;

2)遞歸地定義最優值;

3)以自底向上的方式計算出最優值;

4)根據計算最優值時得到的信息,構造最優解;

5,什么是備忘錄方法?它同動態規划法相比主要不同點是什么?請指出動態規划法和備忘錄方法各自的適用范圍。(注:平常說的“動態規划”是自底向上的動態規划“備忘錄方法”是自頂向下的動態規划。)

答:備忘錄方法是動態規划算法的變形,它通過分治思想對原問題進行分解,以存儲子問題的解的方式解決冗余計算,並采用自頂向下的遞歸方式獲取問題的最終解。

與動態規划算法的不同之處是動態規划算法的遞歸方式是自底向上遞歸求解,而備忘錄方法的遞歸方式是自頂向下遞歸求解。

當一個問題的所有子問題都至少要解一次時,使用動態規划算法。

當子問題空間中的部分子問題不需要求解時,使用備忘錄方法。

6,矩陣相乘算法目前最好的時間復雜度是多少?

答:目前矩陣乘法最好的時間復雜度是能做到O(n2.376)

7,分治法與動態規划法之間的相同點是什么?不同之處在哪些方面?

答:與分治法類似,動態規划法 也是把問題一層一層地分解為規模逐漸減小的同類型的子問題。

動態規划法與分治法的一個重要的不同點在於,用分治法分解后得到的子問題通常都是相互獨立的, 而用動態規划法分解后得到的子問題很多都是重復的。因此,對重復出現的子問題,只是在第一次遇到時才進行計算,然后把計算所得的結果保存起來;當再次遇到該子問題時,就直接引用已保存的結果,而不再重新求解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM