背包有件物品和一個容量為的第費(fèi)用是ci價值wi求解_第1頁
背包有件物品和一個容量為的第費(fèi)用是ci價值wi求解_第2頁
背包有件物品和一個容量為的第費(fèi)用是ci價值wi求解_第3頁
背包有件物品和一個容量為的第費(fèi)用是ci價值wi求解_第4頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、012008-04-05ivi012008-04-05ivii-1vi 先考慮上面講的基本思路如何實(shí)現(xiàn),肯定是有一個主循環(huán) i=1.N fiv時(ifv時) - -for for 其 中 的 fv=maxfv,fv-ci 一 句 恰 就 相 當(dāng) 于的 轉(zhuǎn) 移 方 程fiv=maxfi-1v,fi-1v-ci , 因為現(xiàn)在的 fv-ci 就相當(dāng)于原來的 fi-1v-civfiv由 其 中 的 fv=maxfv,fv-ci 一 句 恰 就 相 當(dāng) 于的 轉(zhuǎn) 移 方 程fiv=maxfi-1v,fi-1v-ci , 因為現(xiàn)在的 fv-ci 就相當(dāng)于原來的 fi-1v-civfiv由 P02:wi。求

2、解將哪些物品裝入背包可使這些物品的費(fèi)用總和不超過背包容量,且價值總01fiviv最大權(quán)值。 仍然可以按照每種物品不同的策略寫出狀態(tài)轉(zhuǎn)移方程, 像這樣: fiv=maxfi-1v-k*ci+k*wi|0=k*ci= v01O(N*V)個狀態(tài)需要求解,但求解每個狀態(tài)的時間則不是常數(shù)了, 求解狀態(tài) fiv的時間是完全背包問題有一個很簡單有效的優(yōu)化,是這樣的:若兩件物品 i、j 滿足 ci=cj 改進(jìn)。 有更優(yōu)的O(VN)的算法。*O(VN)的算法這個算法使用一維數(shù)組,先看偽fori=1.Nforv=0.Vfv=maxfv,fv-你會發(fā)現(xiàn),這個偽代碼與 P01 的偽代碼只有 v 的循環(huán)次序不同而已。為

3、什么這樣一改就可行呢?首先想想為什么 P01 中要按照 v=V.0 的逆序來循環(huán)這是因為要保證第 i 次循環(huán)中的狀次,保證在考慮“選入第 i 件物品”這件策略時,依據(jù)的是一個絕無已經(jīng)選入第 i 件物品的選一件第 i 種物品” 這種策略時, 卻正需要一個可能已選入第 i 種物品的子結(jié)果 P03:對于第i物品有ni+1略:取0件,取1取n i件。令對于第i物品有ni+1略:取0件,取1取n i件。令fiv表示前i物品恰放入一個容量為 vfiv=maxfi-1v-品,則得到了物品數(shù)為ni01O(V*ni)但的,i1,2,4,.,2(k-1),ni-2k+1,kni-2k+10ni13,就將這種物品分

4、成系數(shù)分別也能保證對于 0.ni這樣就將第i種物品分成了O(logni)O(V*logO(VN)多重背包問題同樣有 看到了將一個算法的復(fù)雜度由O(V*niO(V*logni了存在應(yīng)用超出NOIPO(VNP04:P01、P02、P03(01,有的物品P01P02for ifP01、P02、P03(01,有的物品P01P02for ifi01for elseif 第ifor O(VN)的解法:遇到多重背 P05:2v和u時 可 獲 得 的 最 大 價 值 。 狀 態(tài) 轉(zhuǎn) 移 方 程 就 是 : vu有時,“二維費(fèi)用”的條件是以這樣一種隱含的方式給出的:最多只能取Mv和u時 可 獲 得 的 最 大

5、價 值 。 狀 態(tài) 轉(zhuǎn) 移 方 程 就 是 : vu有時,“二維費(fèi)用”的條件是以這樣一種隱含的方式給出的:最多只能取M。P06:設(shè) fkv k v forfor 所有的ifor P07P07:jfor P07P07:j個物品的物品組,其中費(fèi)用為 ci+k 的物品的價值為 fk+wi。也就是說原來指數(shù)級的DP,DP,P08:h,當(dāng)分配給它的費(fèi)用為vh(v)一個費(fèi)用為c 價值為w 的物品,如果它是 01 背包中的物品,那么把它看成泛化物品,它就是除了 h(c)=w 其它函數(shù)值都為 0 的一個完全背包中的物品那么它可以看成這nh(v)=v/c*wvch0.Vv,vhl,要用給定的費(fèi)用從這兩個泛化物品

6、中得到最大的價值,怎么求呢?事實(shí)上,對于一個給定的費(fèi)用 v,只需枚舉將這個費(fèi)用如何分配給兩個泛化物品就可f(v)=maxh(k)+ l(v-k)|0=k=v??梢钥吹?,fh0.Vv,vhl,要用給定的費(fèi)用從這兩個泛化物品中得到最大的價值,怎么求呢?事實(shí)上,對于一個給定的費(fèi)用 v,只需枚舉將這個費(fèi)用如何分配給兩個泛化物品就可f(v)=maxh(k)+ l(v-k)|0=k=v??梢钥吹?,fhl由此可以定義泛化物品的 和: hlf 滿足O(V2)。例如 。的SchemenoiPOI。P09:組 gi vgiv=0 表示推出 fiv 的值時是采用了方程的前一項P09:組 gi vgiv=0 表示推出 fiv 的值時是采用了方程的前一項( 1v,giv未選第 ifNVi個物品。那么輸出方案的偽代碼可以這

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論