[算法導論]貪心算法(greedy algorithm)


轉載請注明出處:http://www.cnblogs.com/StartoverX/p/4611544.html 

  貪心算法在每一步都做出當時看起來最佳的選擇。也就是說,它總是做出局部最優的選擇,寄希望(證明)這樣的選擇能夠導致全局最優解。

  貪心算法和動態規划都依賴於最優子結構,也就是一個問題的最優解包含其子問題的最優解。不同的是,動態規划通常需要求解每一個子問題,通過對所有子問題的求解得到最終問題的解。而貪心算法寄希望於通過貪心選擇來改進最優子結構,使得每次選擇后只留下一個子問題,大大簡化了問題的求解過程。所以能夠使用貪心算法的問題都包含着一些特殊的條件,需要細心發覺。貪心算法和動態規划的關系使得我們能夠得出,在每個貪心算法之下,幾乎總有一個更繁瑣的動態規划算法。

  貪心算法的步驟:

    1.將最優化問題轉化為這樣的形式:對其做出一次選擇后,只剩下一個子問題需要求解。

    2.證明做出貪心選擇后,原問題總是存在最優解,即貪心選擇總是安全的。

    3.證明做出貪心選擇后,剩余的子問題滿足性質:其最優解與貪心選擇的組合即可得到原問題的最優解,這樣就得到了最優子結構。

舉例:leetcode Jump Game:http://www.cnblogs.com/StartoverX/p/4611518.html


免責聲明!

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



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