部分揹包問題貪心選擇性質的證明

2021-06-26 17:35:56 字數 1153 閱讀 2731

部分揹包問題貪心選擇性質的證明

貪心選擇性質:問題的整體最優解可以由一系列子問題的最優選擇,既貪心選擇得到。

問題描述:假設有n個物體c1,n分別標記為:1, 2, …, n。其價值分別為:v1, v2,…, vn,重量分別為:w1, w2, …, wn。揹包的容量為w。則部分揹包問題可以描述為:存

在乙個n元向量(x1, x2, …, xn),在

按照單位價值vi/wi從大到小排好序的,即:v1/w1 >  v2/w2  >  …  >  vn/wn。如果不是,則對c1,n重新編號即可。

於是部分揹包問題的貪心選擇性質可以描述為:每次從ci,j中選擇物品,都是優先考慮選擇物品i,且在滿足條件1的情況下,xi 越接近1越好。下面用數學歸納法證明這一貪心選擇性質:

記ai,j為從物品ci,j中選擇裝進揹包的最優解,則原問題為求a1,n。再記k為第k次從c中選物品進揹包。則:

ⅰ)當k=1時,滿足貪心選擇性質,即第一次選物品p進揹包,且p=1。下面用反證法證明:

若p≠1,則p≥2。但在此情況下不能保證a1,n最優。試考慮w1=w的情況下,另外乙個解a1,n

』=的價值v』更大(因為v1/w1 > v2/w2 > …> vn/wn)。既a1,n不是最優解,產生矛盾。所以p=1。

ⅱ)在滿足條件1的情況下,假設k≤z時,滿足貪心選擇性質。既前z(包括z)次從cz,n中選擇物品,都是優先考慮選擇物品z,且在滿足條件1的情況下,xi 越接近1越好。

ⅲ)在滿足條件1的情況下,當k=z+1時,證明也滿足貪心選擇性質,既第k=z+1次選物品(z+1)。

先證明a1,n的子問題az+1,n也具有最優性質:如果存在cz+1,n中選擇物品的子問題的解az+1,n

』的總價值比az+1,n的總價值更大,那麼az+1,n

』與a1,z合併後的原問題的解a1,n

』的總價值比a1,n的總價值更大。這與a1,n是最優解矛盾。所以az+1,n也具有最優性質。

於是第k=z+1次選擇物品等價於子問題az+1,n的第一次選擇物品,又因為在ⅱ)假設成立的情況下,c1,n的前z個物品已經被選了,所以轉換成az+1,n從cz+1,n中選擇第乙個物品。根據ⅰ),顯然優先選擇物品(z+1)。所以結論得證。

∴ 綜合ⅰ)ⅱ)ⅲ),得證部分揹包問題具有最優選擇性質。

揹包問題貪心選擇性質證明

對於揹包問題可以用貪心演算法求解,作為01揹包的上界函式 下面證明揹包問題滿足貪心選擇性質 設有一按照單位價值排序好的最優解t tk,tn 第乙個裝入的物品是tk 若k 1則存在貪心性質出發的最優解 若k不等於1 如果物品k比物品1重,將k物品中物品1重量的部分卸下,換成物品1,構造新的解t 滿足容...

部分揹包問題(貪心基礎)

有n個物體,第i個物體重量為w i 價值為v i 在總重量不超過c的情況下讓總價值盡量高.取乙個物品必須全取,價值和重量按比例計算 分析 貪心策略 優先拿 價值除以重量的值 最大的,重量和小於等於c include include include using namespace std struct...

貪心 部分揹包問題

阿里巴巴走進了裝滿寶藏的藏寶洞。藏寶洞裡面有 n n 100 堆金幣,第 i 堆金幣的總重量和總價值分別是 mi,vi 1 mi,vi 100 阿里巴巴有乙個承重量為 t t 1000 的揹包,但並沒辦法將全部的金幣都裝進去。他想裝走盡可能多價值的金幣。所有金幣都可以隨意分割,分割完的金幣重量價值比...