完全揹包問題

2021-06-23 01:55:58 字數 912 閱讀 8550

這個是從ppt上弄過來的。

完全揹包問題:

¡有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。放入第i種物品的耗費的空間是ci,得到的價值是wi。

¡求解:將哪些物品裝入揹包,可使這些物品的耗費的空間總和不超過揹包容量,且價值總和最大

基本思路:

¡這個問題非常類似於01揹包問題,所不同的是每種物品有無限件。

¡從每種物品的角度考慮,與它相關的策略已並非取或不取兩種,而是有取0件、取1件、取2件……直至取⌊v/ci⌋件等很多種。

¡如果仍然按照解01揹包時的思路,令f[i][v]表示前i種物品恰放入乙個容量為v的揹包的最大權值。仍然可以按照每種物品不同的策略寫出狀態轉移方程,像這樣: ¡

¡¡求解狀態f[i,v]的時間是o(v/ci)

¡總的時間複雜度為

簡單的優化:

¡若兩件物品i、j滿足ci<=cj且wi>=wj,則將可以將物品j直接去掉,不用考慮。

§優化操作的時間複雜度o(nlogn)

¡首先將費用大於v的物品去掉,然後使用類似計數排序的做法,計算出費用相同的物品中價值最高的是哪個,可以o(v+n)地完成這個優化

轉化為01揹包求解:

¡最簡單的想法是,考慮到第i種物品最多選⌊v/ci⌋件,於是可以把第i種物品轉化為⌊v/ci⌋件費用及價值均不變的物品,然後求解這個01揹包問題。

§時間複雜度沒有變化

¡二進位制優化

§把第i種物品拆成費用為ci*2k、價值為wi*2k的若干件物品,其中k取遍滿足ci*2k <=v 的非負整數。

§時間複雜度

void solve(int n,int v)}}

void solve(int n,int v)}}

揹包問題(完全揹包)

1.矩陣鏈乘法 2.投資組合問題 3.完全揹包問題 4.01揹包問題 5.最長公共子串行 乙個揹包,可以放入n種物品,物品j的重量和價值分別為,如果揹包的最大重量限制是b,怎麼樣選擇放入揹包的物品以使得揹包的總價值最大?組合優化問題,設表示裝入揹包的第j個物品的數量,解可以表示為。那麼目標函式和約束...

完全揹包問題

設有n種物品,每種物品有乙個重量及乙個價值。但每種物品的數量是無限的,同時有乙個揹包,最大載重量為m,今從n種物品中選取若干件 用乙個物品可以多次選取 使其重量的和小於等於m,而價值的和為最大。輸入有多組資料,對於每組輸入資料第1行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 30 第2...

完全揹包問題

完全揹包問題 題目名稱 設有 n種物品,每種物品有乙個重量 w和價值 v。但每種物品的數量是無限的,同時有乙個揹包,最大載重量為m,從 n種物品中選取若干件 同一種物品可以多次選取 使其重量的和小於等於 m,而價值的和最大。輸入格式 第一行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 3...