揹包問題九講

揹包問題九講

version 1.1 build 20071115html

前言

本篇文章是我(dd_engi)正在進行中的一個雄心勃勃的寫做計劃的一部分,這個計劃的內容是寫做一份較爲完善的NOIP難度的動態規劃總結,名爲《解動態規劃題的基本思考方式》。如今你看到的是這個寫做計劃最早發佈的一部分。算法

揹包問題是一個經典的動態規劃模型。它既簡單形象容易理解,又在某種程度上可以揭示動態規劃的本質,故很多教材都把它做爲動態規劃部分的第一道例題,我也將它放在個人寫做計劃的第一部分。編輯器

讀本文最重要的是思考。由於個人語言和寫做方式向來不以易於理解爲長,思路也偶有跳躍的地方,後面更有須要大量思考才能理解的比較抽象的內容。更重要的是:不大量思考,絕對不可能學好動態規劃這一信息學奧賽中最精緻的部分。工具

你如今看到的是本文的v1.1版,發佈於2007年11月15日。我會長期維護這份文本,把你們的意見和建議融入其中,也會不斷加入我在OI學習以及未來可能的ACM-ICPC的征程中獲得的新的心得。但目前本文尚未一個固定的發佈頁面,想了解本文是否有更新版本發佈,能夠在OIBH論壇中以「揹包問題九講」爲關鍵字搜索貼子,每次比較重大的版本更新都會在這個論壇裏發貼公佈。也能夠用「揹包問題九講」爲關鍵字在搜索引擎中搜索以獲得最新版本。學習

目錄

第一講 01揹包問題

這是最基本的揹包問題,每一個物品最多隻能放一次。優化

第二講 徹底揹包問題

第二個基本的揹包問題模型,每種物品能夠放無限屢次。ui

第三講 多重揹包問題

每種物品有一個固定的次數上限。this

第四講 混合三種揹包問題

將前面三種簡單的問題疊加成較複雜的問題。搜索引擎

第五講 二維費用的揹包問題

一個簡單的常見擴展。插件

第六講 分組的揹包問題

一種題目類型,也是一個有用的模型。後兩節的基礎。

第七講 有依賴的揹包問題

另外一種給物品的選取加上限制的方法。

第八講 泛化物品

我本身關於揹包問題的思考成果,有一點抽象。

第九講 揹包問題問法的變化

試圖舉一反三、觸類旁通。

附錄一:USACO中的揹包問題

給出 USACO Training 上可供練習的揹包問題列表,及簡單的解答。

附錄二:揹包問題的搜索解法

除動態規劃外另外一種揹包問題的解法。

聯繫方式

若是有任何意見和建議,特別是文章的錯誤和不足,或者但願爲文章添加新的材料,能夠經過http://kontactr.com/user/tianyi/這個網頁聯繫我。

值得說明的是,若是有OI方面的問題,例如不明白本身的程序爲何錯了或者索要某種算法的源代碼,使用這個聯繫方式可能得不到及時解答。請在OIBH論壇發問。

致謝

感謝如下名單:

  • 阿坦
  • jason911
  • donglixp
  • LeafDuo

他們每人都最早指出了本文曾經存在的某個並不是可有可無的錯誤。謝謝大家如此仔細地閱讀拙做並彌補個人疏漏。

感謝 XiaQ,它針對本文的第一個beta版發表了用詞嚴厲的六條建議,雖然我只認同並採納了其中的兩條。在全部讀者幾乎一邊倒的讚賞將我包圍的當時,你的貼子是個人一劑清醒劑,讓我能清醒起來並用更嚴厲的眼光審視本身的做品。

sfita 提供了P01中的「一個常數優化」。

固然,還有用各類方式對我表示鼓勵和支持的幾乎沒法計數的同窗。不論是當面讚賞,或是在論壇上回復個人貼子,不論是發來熱情洋溢的郵件,或是在即時聊天的窗口裏豎起大拇指,大家的鼓勵和支持是支撐個人寫做計劃的強大動力,也鞭策着我不斷提升自身水平,謝謝大家!

最後,感謝 Emacs 這一世界最強大的編輯器的全部貢獻者,感謝它的插件 EmacsMuse 的開發者們,本文的全部編輯工做都藉助這兩個卓越的自由軟件完成。謝謝大家——自由軟件社羣——爲社會提供瞭如此有生產力的工具。我深深欽佩大家身上體現出的自由軟件的精神,沒有大家的感召,我不能完成本文。在大家的影響下,採用自由文檔的方式發佈本文檔,也是我對自由社會事業的微薄努力。

首頁


Copyright (c) 2007 Tianyi Cui

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.

相關文章
相關標籤/搜索