01揹包問題怎麼做?(我是小學生啦,簡單講解寫吧,我要參加noip我是愛聯學生

時間 2021-08-15 04:21:14

1樓:匿名使用者

初看這類問題,第一個想到的會是貪心,但是貪心法卻無法保證一定能得到最優解,看以下例項:

貪心準則1:從剩餘的物品中,選出可以裝入揹包的價值最大的物品,利用這種規則,價值最大的物品首先被裝入(假設有足夠容量),然後是下一個價值最大的物品,如此繼續下去。這種策略不能保證得到最優解。

例如,考慮n=2, w=[100,10,10], p =[20,15,15], c =105。當利用價值貪婪準則時,獲得的解為x= [1,0,0],這種方案的總價值為20。而最優解為[0,1,1],其總價值為30。

貪心準則2:從剩下的物品中選擇可裝入揹包的重量最小的物品。雖然這種規則對於前面的例子能產生最優解,但在一般情況下則不一定能得到最優解。

考慮n= 2 ,w=[10,20], p=[5,100], c= 2 5。當利用重量貪婪策略時,獲得的解為x =[1,0], 比最優解[ 0 , 1 ]要差。

貪心準則3:價值密度pi /wi 貪婪演算法,這種選擇準則為:從剩餘物品中選擇可 裝入包的pi /wi 值最大的物品,但是這種策略也不能保證得到最優解。

利用此策略解 n=3 ,w=[20,15,15], p=[40,25,25], c=30 時的得到的就不是最優解。

由此我們知道無法使用貪心演算法來解此類問題。我們採用如下思路:

在該問題中需要決定x1 .. xn的值。假設按i = 1,2,...

,n 的次序來確定xi 的值。如果置x1 = 0,則問題轉變為相對於其餘物品(即物品2,3,.,n),揹包容量仍為c 的揹包問題。

若置x1 = 1,問題就變為關於最大揹包容量為c-w1 的問題。現設r= 為剩餘的揹包容量。在第一次決策之後,剩下的問題便是考慮揹包容量為r 時的決策。

不管x1 是0或是1,[x2 ,.,xn ] 必須是第一次決策之後的一個最優方案。也就是說在此問題中,最優決策序列由最優決策子序列組成。

假設f (i,j) 表示剩餘容量為j,剩餘物品為i,i + 1,...,n 時的最優解的值,即:利用最優序列由最優子序列構成的結論,可得到f 的遞迴式為:

當j≥wi時: f(i,j)=max

當0≤j=wi), f[i-1,j]}

這樣,就可以自底向上地得出在前n件物品中取出若干件放進揹包能獲得的最大價值,也就是f[n,c]

演算法框架如下:

for i:=0 to c do

f[0,i]:=0;

for i:=1 to n do

for j:=0 to c do

begin

f[i,j]:=f[i-1,j];

if (j>=w[i]) and (f[i-1,j-w[i]]+p[i]>f[i,j])

then f[i,j]:=f[i-1,j-w[i]]+p[i];

end;

writeln(f[n,c]);

為了進一步說明演算法的執行原理,下面給出一個例項:

【輸入檔案】104

5 1 4 3

40 10 25 30

【輸出結果】下面列出所有的f[i,j]

0 0 0 0 40 40 40 40 40 40

10 10 10 10 40 50 50 50 50 50

10 10 10 25 40 50 50 50 65 75

10 10 30 40 40 50 55 70 80 80

從以上的資料中我們可以清晰地看到每一次的列舉結果,每一行都表示一個階段。

2樓:

網上搜下,很多的,關鍵看你對此的理解!

我是小學生啦為主題的畫怎麼畫, 我是小學生啦 為題寫一篇手抄報

小丁創業 以畫娃娃為例,方法如下 1 首先,娃娃上畫出頭和辮子,如下圖所示,然後進入下一步。2 其次,完成上述步驟後,在頭髮的基礎上繪製娃娃的面部輪廓,如下圖所示,然後進入下一步。3 接著,完成上述步驟後,將娃娃的眼睛,鼻子和嘴巴畫在臉上,如下圖所示,然後進入下一步。4 然後,完成上述步驟後,將娃娃...

小學生的小製作,小學生科技小製作怎麼做呀

吊式花瓶 三隻相同式樣,相似顏色的汽水瓶,洗洗乾淨,用麻繩捆捆,連線起來,再綁上吊環 就成了一隻別有風味的吊式花瓶!雅緻花缽 這隻花缽是用什麼做的,知道嗎?一次性筷子,哈哈 沒想到吧?在裡面插上些花啊草的,擺在書桌上,雅緻極了!精巧小木筒 模仿傳統式木筒的造型,將平常吃完的雪糕棒洗乾淨,並收集來,拼...

我是小學生,求助問題,我是一名小學生,我們老師讓我們做個發明,求生活中的不便!快快快!!!!!!!!

小朋友 愛情這東西不是隨便玩的哈 不要小小的就授打擊 我估計你也就是一時衝動 我以前的同學也喜歡我們班長 但是有一次自習課班長吵了他兩句,他說了句 mb,不喜歡她了 我估計你也差不多 先問自己是不是真的喜歡 五年級才十歲吧小弟弟?我比你大十五歲,你叫我阿姨都可以了,你現在的喜歡是不具有任何意義的,不...