日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

动态规划和贪心算法的区别

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态规划和贪心算法的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要想清楚兩者的區別,首先就要了解兩者的基本概念與性質。

1. 貪心算法

  • 基本思想:貪心算法并不從整體最優上加以考慮,它所做的選擇只是在某種意義上的局部最優解。
  • 基本要素:最優子結構性質和貪心選擇性質。

  • 該算法存在問題:
    1.不能保證求得的最后解是最佳的;
    2.不能用來求最大或最小解問題;
    3.只能求滿足某些約束條件的可行解的范圍。

  • 實現該算法的過程:
    從問題的某一初始解出發;
    while 能朝給定總目標前進一步 do
    求出可行解的一個解元素;
    由所有解元素組合成問題的一個可行解

  • 經典例子:

比如中國的貨幣,只看元,有1元2元5元10元20、50、100
如果我要16元,可以拿16個1元,8個2元,但是怎么最少呢? 如果用貪心算,就是我每一次拿那張可能拿的最大的。
比如16,我第一次拿20拿不起,拿10元,OK,剩下6元,再拿個5元,剩下1元 也就是3張 10、5、1。
每次拿能拿的最大的,就是貪心。
但是一定注意,貪心得到的并不是最優解,也就是說用貪心不一定是拿的最少的張數 貪心只能得到一個比較好的解,而且貪心算法很好想得到。
再注意,為什么我們的錢可以用貪心呢?因為我們國家的錢的大小設計,正好可以使得貪心算法算出來的是最優解(一般是個國家的錢幣都應該這么設計)。如果設計成別的樣子情況就不同了
比如某國的錢幣分為 1元3元4元 如果要拿6元錢 怎么拿?貪心的話 先拿4 再拿兩個1 一共3張錢 實際最優呢? 兩張3元就夠了

2. 動態規劃

基本思想:將待求解的問題分解成若干個子問題,先求解子問題,然后從這些子問題的解得到原問題的解。
基本要素:最優子結構性質和重疊子問題性質

3. 貪心算法與動態規劃的區別

共同點:兩者都具有最優子結構性質
不同點:

  • 動態規劃算法中,每步所做的選擇往往依賴于相關子問題的解,因而只有在解出相關子問題時才能做出選擇。而貪心算法,僅在當前狀態下做出最好選擇,即局部最優選擇,然后再去解做出這個選擇后產生的相應的子問題。
  • 動態規劃算法通常以自底向上的方式解各子問題,而貪心算法則通常自頂向下的方式進行。
  • 4.總結

    求最優解的問題,從根本上說是一種對解空間的遍歷。最直接的暴力分析容易得到,最優解的解空間通常都是以指數階增長,因此暴力窮舉都是不可行的。最優解問題大部分都可以拆分成一個個的子問題,把解空間的遍歷視作對子問題樹的遍歷,則以某種形式對樹整個的遍歷一遍就可以求出最優解,如上面的分析,這是不可行的。貪心和動態規劃本質上是對子問題樹的一種修剪。兩種算法要求問題都具有的一個性質就是“子問題最優性”。即,組成最優解的每一個子問題的解,對于這個子問題本身肯定也是最優的。如果以自頂向下的方向看問題樹(原問題作根),則,我們每次只需要向下遍歷代表最優解的子樹就可以保證會得到整體的最優解。形象一點說,可以簡單的用一個值(最優值)代表整個子樹,而不用去求出這個子樹所可能代表的所有值。
    動態規劃方法代表了這一類問題的一般解法。我們自底向上(從葉子向根)構造子問題的解,對每一個子樹的根,求出下面每一個葉子的值,并且以其中的最優值作為自身的值,其它的值舍棄。動態規劃的代價就取決于可選擇的數目(樹的叉數)和子問題的的數目(樹的節點數,或者是樹的高度?)。
    貪心算法是動態規劃方法的一個特例。貪心特在,可以證明,每一個子樹的根的值不取決于下面葉子的值,而只取決于當前問題的狀況。換句話說,不需要知道一個節點所有子樹的情況,就可以求出這個節點的值。通常這個值都是對于當前的問題情況下,顯而易見的“最優”情況。因此用“貪心”來描述這個算法的本質。由于貪心算法的這個特性,它對解空間樹的遍歷不需要自底向上,而只需要自根開始,選擇最優的路,一直走到底就可以了。這樣,與動態規劃相比,它的代價只取決于子問題的數目,而選擇數目總為1。

    參考文章1
    參考文章2

    總結

    以上是生活随笔為你收集整理的动态规划和贪心算法的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。