1. 程式人生 > >動態規劃與貪婪算法

動態規劃與貪婪算法

csdn 公司 如果 sdn 承前啟後 一個 重要 今天 部分

觀點描述來源與博客:http://blog.csdn.net/woaimeinuo/article/details/45651163

貪婪:每一次都選擇當前最好的,雖然不是全局最優解,但其可以讓你找到局部最優解或是次優解。其實,有次優解也不錯了。貪婪算法基本上是一種急功近利的算法,但是並不代表這種算法不好,如果貪婪的是一種長遠和持續,又未嘗不可呢?

動態規劃:

對於大部分的問題,貪婪法通常都不能找出最優解,因為他們一般沒有測試所有可能的解。因為貪婪算法是一種短視的行為,只會跟據當前的形式做判斷,也就是過早做決定,因而沒法達到最佳解。

動態規劃和貪婪算法的最大不同是,貪婪算法做出選擇,不能在過程優化。動態規劃則會保存以前的運算結果,並根據以前的結果對當前進行選擇,會動態優化功能。

動態規劃算法至少告訴我們兩個事:

1)承前啟後非常重要,當你準備去做遍歷的時候,你的上次的經歷不但能開啟你以後的經歷,而且還能為後面的經歷所用。你的每一步都沒有浪費。

2)是否可以回退也很重要。這意思是——如果你面前有兩個選擇,一個是A公司一個是B公司,如果今天你選了A公司,並不是你完全放棄了B公司。而是,你知道從A公司退出來去B公司,會比從B公司退出來去A公司要容易一些。

比如說:你有兩個offer,一個是Yahoo,一個是Baidu,上述的第一點會讓我們思考,我以前的特長和能力更符合Yahoo還是Baidu?而Yahoo和Baidu誰能給我開啟更大的平臺?上述的第二點告訴我們,是進入Yahoo後如果沒有選好,是否還能再選擇Baidu公司?還是進入Baidu公司後能容易回退到Yahoo公司?

動態規劃與貪婪算法