先回顧下動態規劃問題的求解過程:
(1)證明該問題具有最優子結構性質(區域性最優解能決定全域性最優解);
(2)根據最優子結構,求遞推方程;
(3)根據遞推方程,說明該問題具有重疊子結構性質;
(4)自底向上寫出求解最優值的非遞迴演算法,同時構造最優解的解空間樹;
(5)遍歷解空間樹,求得最優解。
貪心演算法是求一個子問題的解,假設這個解是子問題的最優解,在此基礎上再進一步推導更大問題的最優解。
這意味著,“貪心演算法最後求出解是最優的”是基於“子問題的解的確是最優的”並且“全域性最優 該區域性最優解”。如果這一點不成立,那貪心最後的結果也並不可靠。
再回過頭來看動態規劃,由於在求解時,第一步就要求要證明最優子結構,所以保證了“全域性最優 該區域性最優解”。
綜上,回答題主問題,是透過證明最優子結構來證明的。感覺題主有這個問題是因為很多時候大家都是說感覺這個可以dp解,然後就dp了,如果不是有必要,大家不會很嚴肅的推導,或者在推導遞推方程的時候,很自然就承認了的確存在最優子結構這件事。
最後,隨便找了個揹包問題的最優子結構證明。
先回顧下動態規劃問題的求解過程:
(1)證明該問題具有最優子結構性質(區域性最優解能決定全域性最優解);
(2)根據最優子結構,求遞推方程;
(3)根據遞推方程,說明該問題具有重疊子結構性質;
(4)自底向上寫出求解最優值的非遞迴演算法,同時構造最優解的解空間樹;
(5)遍歷解空間樹,求得最優解。
貪心演算法是求一個子問題的解,假設這個解是子問題的最優解,在此基礎上再進一步推導更大問題的最優解。
這意味著,“貪心演算法最後求出解是最優的”是基於“子問題的解的確是最優的”並且“全域性最優 該區域性最優解”。如果這一點不成立,那貪心最後的結果也並不可靠。
再回過頭來看動態規劃,由於在求解時,第一步就要求要證明最優子結構,所以保證了“全域性最優 該區域性最優解”。
綜上,回答題主問題,是透過證明最優子結構來證明的。感覺題主有這個問題是因為很多時候大家都是說感覺這個可以dp解,然後就dp了,如果不是有必要,大家不會很嚴肅的推導,或者在推導遞推方程的時候,很自然就承認了的確存在最優子結構這件事。
最後,隨便找了個揹包問題的最優子結構證明。