【数据结构与算法】【算法思想】【联系与区别】回溯 贪心 动态规划 分治
4種算法思想比較與聯系
如果將貪心,分治,回溯和動態規劃四種算法思想分類,那貪心,回溯,動態規劃可歸為一類,而分治單獨可以作為一類,因為它跟其他是三個都不大一樣。
因為前三個算法解決問題的模型,都可以抽象成多階段決策最優解模型,而分治算法解決問題盡管大部分也還是最優解問題,但大部分都不能抽象成多階段決策模型。
回溯算法,是個萬金油。基本上能用動態規劃,貪心解決的問題,都可以用回溯算法解決。回溯算法相當于窮舉搜索。窮舉所有的情況,然后對比得到最優解。不過,回溯算法的時間復雜度非常高,是指數級別的,只能用來解決小規模數據的問題。對于大規模的數據問題,用回溯算法解決的執行效率很低。
動態規劃算法,盡管比較回溯算法高效,但是,并不是所有問題都可以用動態規劃來解決。能用動態規劃解決的問題,需要滿足三個特征:最優子結構,無后效性和重復子問題。在重復子問題這一點上,動態規劃和分治算法的區分非常明顯,分治算法要求分割成子問題,不能有重復字問題,而動態規劃正好相反,動態規劃之所以高效,就是因為回溯算法實現中存在大量的重復子問題。
貪心算法:實際上是動態規劃算法中一種比較特殊情況。他解決問題更加高效,代碼實現也更加簡潔。不過,他可以解決的問題也更加有限。他能解決的問題需要滿足三個條件,最優子結構,無后效性和貪心選擇性。
其中,最優子結構,無后效性跟動態規劃中的無異。“貪心選擇性”的意思是,通過局部最優的選擇,能產生全局的最優選擇。每個階段,我們都選擇當前看起來最優的決策,所以階段的決策完成之后,最終由這些局部最優解構成全局最優解。
總結
以上是生活随笔為你收集整理的【数据结构与算法】【算法思想】【联系与区别】回溯 贪心 动态规划 分治的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pc连接用hybrid,并untagge
- 下一篇: static的应用以及静态与非静态的区别