[轉(zhuǎn)]背包問題九講v1.0(P07: 有依賴的背包問題)

簡化的問題

這種背包問題的物品間存在某種“依賴”的關系。也就是說拨扶,i依賴于j,表示若選物品i茁肠,則必須選物品j患民。為了簡化起見,我們先設沒有某個物品既依賴于別的物品垦梆,又被別的物品所依賴匹颤;另外,沒有某件物品同時依賴多件物品托猩。

算法

這個問題由NOIP2006金明的預算方案一題擴展而來印蓖。遵從該題的提法,將不依賴于別的物品的物品稱為“主件”京腥,依賴于某主件的物品稱為“附件”赦肃。由這個問題的簡化條件可知所有的物品由若干主件和依賴于每個主件的一個附件集合組成。
<p>按照背包問題的一般思路公浪,僅考慮一個主件和它的附件集合他宛。可是欠气,可用的策略非常多厅各,包括:一個也不選,僅選擇主件预柒,選擇主件后再選擇一個附件队塘,選擇主件后再選擇兩個附件……無法用狀態(tài)轉(zhuǎn)移方程來表示如此多的策略袁梗。(事實上,設有n個附件憔古,則策略有2^n+1個遮怜,為指數(shù)級。)
<p>考慮到所有這些策略都是互斥的(也就是說投放,你只能選擇一種策略),所以一個主件和它的附件集合實際上對應于P06中的一個物品組适贸,每個選擇了主件又選擇了若干個附件的策略對應于這個物品組中的一個物品灸芳,其費用和價值都是這個策略中的物品的值的和。但僅僅是這一步轉(zhuǎn)化并不能給出一個好的算法拜姿,因為物品組中的物品還是像原問題的策略一樣多烙样。
<p>再考慮P06中的一句話: 可以對每組中的物品應用P02中“一個簡單有效的優(yōu)化”。 這提示我們蕊肥,對于一個物品組中的物品谒获,所有費用相同的物品只留一個價值最大的,不影響結(jié)果壁却。所以批狱,我們可以對主件i的“附件集合”先進行一次01背包,得到費用依次為0..V-c[i]所有這些值時相應的最大價值f'[0..V-c[i]]展东。那么這個主件及它的附件集合相當于V-c[i]+1個物品的物品組赔硫,其中費用為c[i]+k的物品的價值為f'[k]+w[i]。也就是說原來指數(shù)級的策略中有很多策略都是冗余的盐肃,通過一次01背包后爪膊,將主件i轉(zhuǎn)化為V-c[i]+1個物品的物品組,就可以直接應用P06的算法解決問題了砸王。

較一般的問題

更一般的問題是:依賴關系以圖論中“森林”的形式給出(森林即多叉樹的集合)推盛,也就是說,主件的附件仍然可以具有自己的附件集合谦铃,限制只是每個物品最多只依賴于一個物品(只有一個主件)且不出現(xiàn)循環(huán)依賴耘成。
<p>解決這個問題仍然可以用將每個主件及其附件集合轉(zhuǎn)化為物品組的方式。唯一不同的是驹闰,由于附件可能還有附件凿跳,就不能將每個附件都看作一個一般的01背包中的物品了。若這個附件也有附件集合疮方,則它必定要被先轉(zhuǎn)化為物品組控嗜,然后用分組的背包問題解出主件及其附件集合所對應的附件組中各個費用的附件所對應的價值。
<p>事實上骡显,這是一種樹形DP疆栏,其特點是:每個父節(jié)點都需要對它的各個兒子的屬性進行一次DP以求得自己的相關屬性曾掂。這已經(jīng)觸及到了“泛化物品”的思想”诙ィ看完P08后珠洗,你會發(fā)現(xiàn)這個“依賴關系樹”每一個子樹都等價于一件泛化物品,求某節(jié)點為根的子樹對應的泛化物品相當于求其所有兒子的對應的泛化物品之和若专。

小結(jié)

NOIP2006的那道背包問題我做得很失敗许蓖,寫了上百行的代碼,卻一分未得调衰。后來我通過思考發(fā)現(xiàn)通過引入“物品組”和“依賴”的概念可以加深對這題的理解膊爪,還可以解決它的推廣問題。用物品組的思想考慮那題中極其特殊的依賴關系:物品不能既作主件又作附件嚎莉,每個主件最多有兩個附件米酬,可以發(fā)現(xiàn)一個主件和它的兩個附件等價于一個由四個物品組成的物品組,這便揭示了問題的某種本質(zhì)趋箩。
我想說:失敗不是什么丟人的事情赃额,從失敗中全無收獲才是。

轉(zhuǎn)載:dd_engi 的背包九講

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叫确,一起剝皮案震驚了整個濱河市跳芳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竹勉,老刑警劉巖筛严,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饶米,居然都是意外死亡桨啃,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門檬输,熙熙樓的掌柜王于貴愁眉苦臉地迎上來照瘾,“玉大人,你說我怎么就攤上這事丧慈∥雒” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵逃默,是天一觀的道長鹃愤。 經(jīng)常有香客問我,道長完域,這世上最難降的妖魔是什么软吐? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮吟税,結(jié)果婚禮上凹耙,老公的妹妹穿的比我還像新娘姿现。我一直安慰自己,他們只是感情好肖抱,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布备典。 她就那樣靜靜地躺著,像睡著了一般意述。 火紅的嫁衣襯著肌膚如雪提佣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天荤崇,我揣著相機與錄音拌屏,去河邊找鬼。 笑死天试,一個胖子當著我的面吹牛槐壳,可吹牛的內(nèi)容都是我干的然低。 我是一名探鬼主播喜每,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雳攘!你這毒婦竟也來了带兜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤吨灭,失蹤者是張志新(化名)和其女友劉穎刚照,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喧兄,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡无畔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吠冤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浑彰。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拯辙,靈堂內(nèi)的尸體忽然破棺而出郭变,到底是詐尸還是另有隱情,我是刑警寧澤涯保,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布诉濒,位于F島的核電站,受9級特大地震影響夕春,放射性物質(zhì)發(fā)生泄漏未荒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一及志、第九天 我趴在偏房一處隱蔽的房頂上張望茄猫。 院中可真熱鬧狈蚤,春花似錦、人聲如沸划纽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勇劣。三九已至靖避,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間比默,已是汗流浹背幻捏。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留命咐,地道東北人篡九。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像醋奠,于是被迫代替她去往敵國和親榛臼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容