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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法设计与分析(第四周)贪心算法、背包问题

發(fā)布時間:2024/2/28 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法设计与分析(第四周)贪心算法、背包问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

貪心算法

顧名思義,貪心算法總是作出在當(dāng)前看來最好的選擇。也就是說貪心算法并不從整體最優(yōu)考慮,它所作出的選擇只是在某種意義上的局部最優(yōu)選擇。當(dāng)然,希望貪心算法得到的最終結(jié)果也是整體最優(yōu)的。

雖然貪心算法不能對所有問題都得到整體最優(yōu)解,但對許多問題它能產(chǎn)生整體最優(yōu)解。如單源最短路經(jīng)問題,最小生成樹問題等。在一些情況下,即使貪心算法不能得到整體最優(yōu)解,其最終結(jié)果卻是最優(yōu)解的很好近似。

例:用貪心法求解付款問題

假設(shè)有面值為5元、2元、1元、5角、2角、1角的貨幣,需要找給顧客4元6角現(xiàn)金,為使付出的貨幣的數(shù)量最少首先選出1張面值不超過4元6角的最大面值的貨幣,即2元,再選出1張面值不超過2元6角的最大面值的貨幣,即2元再選出1張面值不超過6角的最大面值的貨幣,即5角,再選出1張面值不超過1角的最大面值的貨幣,即1角總共付出4張貨幣。

總結(jié)起來,本題要求如下:

面值:5元 2元 1元 5角 2角 1角
需要付款:4元6角

貪心思想

在付款問題每一步的貪心選擇中,在不超過應(yīng)付款金額的條件下,只選擇面值最大的貨幣,而不去考慮在后面看來這種選擇是否合理,而且它還不會改變決定:一旦選出了一張貨幣,就永遠(yuǎn)選定。付款問題的貪心選擇策略是盡可能使付出的貨幣最快地滿足支付要求,其目的是使付出的貨幣張數(shù)最慢地增加,這正體現(xiàn)了貪心法的設(shè)計思想。

但是這種貪心思想并非對于任何問題都有效。比如,面值變成如下情況:

面值:10元 7元 5元 1元
需要付款:12元

貪心算法結(jié)果:10元+1元+1元
實際上最優(yōu)情況:7元+5元

分析后我認(rèn)為,當(dāng)任一級別錢幣面值*2>高一級別錢幣面值時,貪心算法不能任意付款需求時給出全局最優(yōu)解。(個人想法)

貪心算法的設(shè)計思路

貪心算法的設(shè)計思路是:總是做出在當(dāng)前看來最好的選擇,即貪心算法并不是從整體最優(yōu)考慮,它所做的選擇只是在某種意義上的局部最優(yōu)選擇。

貪心算法的基本要素



貪心算法與0-1背包問題



手動證明0-1背包問題具有最優(yōu)子結(jié)構(gòu):

以下為假設(shè)背包容量與物品狀態(tài)

以下為反證法

0-1背包問題不具有貪心選擇性質(zhì)。
原因是無法保證能夠?qū)⒈嘲b滿,而所剩空間降低了背包的總價值。

背包問題具有貪心選擇性質(zhì)。

用貪心算法解背包問題的基本步驟

1.計算每種物品單位重量的價值 Vi/Wi;
2.按照單位重量的價值從高到低的順序排序;
3.依據(jù)貪心選擇策略,按照單位價值從高到低的順序,依次將盡可能多的物品裝入背包中。直到背包裝滿為止。是否可以將物品裝入背包的條件是:有空間

偽代碼

總結(jié)

以上是生活随笔為你收集整理的算法设计与分析(第四周)贪心算法、背包问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。