1. 程式人生 > >動態規劃和分治法,貪心算法以及遞歸的再一次深刻理解和體會

動態規劃和分治法,貪心算法以及遞歸的再一次深刻理解和體會

規劃 動態 分治法

每次體會算法都有新的感覺,刷題越多,對算法的理解感覺也就越深刻。

下面我們來重新體會下分治法,動態規劃,貪心法,遞歸的理解。

1.分治法:

將問題分成單獨的階段,每個階段互相不幹擾很獨立,如10米長的木棍,切成10段,每段去解決每一段的問題。(階段沒有關系)

2.貪心法

站在全局的角度,也是將問題堪稱分為多個階段,只不過階段和階段之間有一定的遞進關系,如從5毛,1元,2毛,1毛,2元中,去找最少的錢幣構成10塊錢。首先是站在全局的角度,先從中取其最大值,為第一階段,然後在從剩余的當中在找最大值,構成第二階段。。。。。。如此往復,這就是貪心法。

3.動態規劃

是階段和階段之間有重復,舉例說明:求一個數組的最長遞增子序列。假設數組有10個元素,那麽如何求解呢?將10個元素劃分成10個階段,第一個階段,從第一個元素中求解,第二個階段在第一個階段求其解,第三個階段在第一個,第二個階段綜合的基礎上求解,第四個階段在第1,2,3個階段求其解,最後。。。。第k個階段在第1,2....k-1個階段求其最優解。

4.遞歸算法

個人感覺和動態規劃反著來的樣子,有點像,問題規模為10,轉化為問題規模為9的問題,,問題規模為9的問題,轉化為8.。。。。。

5.回溯法和分支限界法

都屬於組合優化問題,就是按照過程向下面去尋找最優解,在尋找最優解的過程,不斷的剪取枝條,來減少搜索情況。不行就換思路。


本文出自 “簡答生活” 博客,謝絕轉載!

動態規劃和分治法,貪心算法以及遞歸的再一次深刻理解和體會