簡單理解貪心算法

最近簡單研究了下貪心算法,本人小白,數學不過關,因此對於算法這塊始終不是很好的理解。這裏僅提供一下自己的拙見。

它和動態規劃也就是DP還是挺像的,以至於有時候會搞不懂,下面先說一下它的兩個要素:
1. 具有最優子結構
2. 貪心選擇性

第一點是貪心和DP都有的特點,重點在於第二點貪心的選擇性。

我理解就是使用了貪心的思想是否會得到最優解。

我們知道典型的DP場景就是進行樹形結構的算法時會用到遞歸,這是典型的DP思想了;那麼貪心這裏舉個例子:選擇排序(那麼我覺得冒泡也應該算),求最短路徑的迪傑斯特拉算法。這裏就可以看出一點貪心和DP的不同(這裏是我自己覺得的,如果有說錯的還請大家幫我指出,3Q),就是貪心思想每次都是求最值,因爲貪心,貪婪,所以每次都要拿一個最大或者最小,比如選擇排序,每次都會排序出最小的一個,再排第二小,……。並且後面的排序並不影響前面的結果。這才使得它是最優的。像快速排序這種DP思想的,就沒有像貪心思想那樣,每次非要排出最小值。我覺得這是一個可以區分它倆的區別吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章