当前课程知识点:算法设计与分析 > 6 Dynamic Programming > 6.3 Knapsack Problem > Knapsack Problem
背包问题是运筹学和算法领域中
一个基本问题
在理论和实际上有着众多的应用
我们用动态规划的方法
尝试去求解背包问题
我们先定义背包问题
有n个物品和1个背包
物品i有两个参数
权重w_i>0和收益v_i>0
背包有一个容积W
目标是
选择权重和不超过背包容积的物品
使得收益和最大
比如这个例子中有五个物品
有对应的权重和收益
一个背包 容积为11
物品3和4的权重之和为11
能够装入背包
获得的收益是40
我们选择一个物品
自然希望它收益大
权重小
一种容易想到的
看起来也是合理的办法
是把物品按照收益与权重的比值
进行排序
我们把这个比值称为性价比
然后 尽量选择性价比高的物品装入背包
还是这个例子
按照性价比排序的话
我们看到
从小到大是1到5的顺序
我们把物品5先加入
再考虑物品4的话
它的权重
超过了背包所剩的容积
物品3也是这样
然后我们可以加入物品2和物品1
我们获得的收益的总和是35
我们看到 它不是最优解
下面我们建立背包问题的动态规划算法
这也是动态规划的一个经典的应用
和以前一样
我们也把问题分为n个阶段
但要建立起来最优解的结构
我们引进一个新的参数
定义OPT(i, w)是从物品1到i中选择
并且当前的容积为w时能获得的最大收益
考虑第i阶段
只有两种情况
Case1
OPT没有选择物品i
它一定是在{ 1, 2, …, i-1 }中
同样的容积w下做出的最优选择
获得收益为OPT(i-1, w)
Case2
OPT选择了物品i
那么 对于物品{ 1, 2, …, i-1 }
剩余容积为w-w_i的情况下
最优解一定做出最优选择
对应的收益为v_i+OPT(i-1, w-w_i)
最优解
一定是这两种情况中最好的一个
因此我们可以建立动态规划基本方程
边界情况是当i=0
显然 最优值为零
如果当前要考虑的物品的权重
大于当前的容积
那么 OPT(i, w)=OPT(i-1, w)
最主要的部分
是刚才我们所讨论的两种情况
分别对应的目标值为
OPT(i-1, w)和v_i+OPT(i-1, w-w_i)
两者取大
这样我们就建立起来动态规划基本方程
下面我们给出动态规划算法的伪代码
我们的分析是从后向前的
但是我们可以用从前向后的方式来实现
初始的时候
对于小w从0到W
定义M[0,w]=0
然后是两重循环
i从1到n
w从1到W
如果当前物品的权重w_i>W
那么 M[i,w]=M[i-1,w]
否则的话
按照我们刚才所得到的最优解的结构
计算出M[i,w]的值
最后返回M[n,w]
对于刚才给出的例子
我们建立这样的一个表格
每行表示一个阶段
每列表示可用的容积从0到11
我们按照动态规划算法
可以逐一算出表格中的值
最后一行中
最大收益是40
这就是最优值
我们可以通过回溯得到
算法选择了物品4和3
我们再来看一下算法的运行时间
算法有两重循环
循环的次数是nW
每次循环对动态规划基本方程的运算
是O(1)时间的
所以总共的运行时间是θ(nW)
我们注意到
这并不是关于输入规模的多项式算法
因为这里W是背包的容积
是一个输入的数值
这个数值的输入规模为logW
所以它并不是一个多项式时间算法
称为伪多项式时间算法
实际上 我们之后会证明
背包问题的判定问题是NP-complete
不太可能有多项式时间算法
之后的章节里还会再讨论背包问题
给出多项式时间的近似算法
虽不一定会返回最优解
但是可以保证目标值很接近于最优值
比如可以保证不多于0.01%的偏差
-1.1 Introduction
-1.2 A First Problem: Stable Matching
--A First Problem: Stable Matching
-1.3 Gale-Shapley Algorithm
-1.4 Understanding Gale-Shapley Algorithm
--Understanding Gale-Shapley Algorithm
-Homework1
-Lecture note 1
--Lecture note 1 Introduction of Algorithm
-2.1 Computational Tractability
-2.2 Asymptotic Order of Growth
-2.3 A Survey of Common Running Times
--A Survey of Common Running Times
-Homework2
-Lecture note 2
--Lecture note 2 Basics of Algorithm Analysis
-3.1 Basic Definitions and Applications
--Basic Definitions and Applications
-3.2 Graph Traversal
-3.3 Testing Bipartiteness
-3.4 Connectivity in Directed Graphs
--Connectivity in Directed Graphs
-3.5 DAG and Topological Ordering
--DAG and Topological Ordering
-Homework3
-Lecture note 3
-4.1 Coin Changing
-4.2 Interval Scheduling
-4.3 Interval Partitioning
-4.4 Scheduling to Minimize Lateness
--Scheduling to Minimize Lateness
-4.5 Optimal Caching
-4.6 Shortest Paths in a Graph
-4.7 Minimum Spanning Tree
-4.8 Correctness of Algorithms
-4.9 Clustering
-Homework4
-Lecture note 4
--Lecture note 4 Greedy Algorithms
-5.1 Mergesort
-5.2 Counting Inversions
-5.3 Closest Pair of Points
-5.4 Integer Multiplication
-5.5 Matrix Multiplication
--Video
-5.6 Convolution and FFT
-5.7 FFT
--FFT
-5.8 Inverse DFT
-Homework5
-Lecture note 5
--Lecture note 5 Divide and Conquer
-6.1 Weighted Interval Scheduling
--Weighted Interval Scheduling
-6.2 Segmented Least Squares
-6.3 Knapsack Problem
-6.4 RNA Secondary Structure
-6.5 Sequence Alignment
-6.6 Shortest Paths
-Homework6
-Lecture note 6
--Lecture note 6 Dynamic Programming
-7.1 Flows and Cuts
-7.2 Minimum Cut and Maximum Flow
--Minimum Cut and Maximum Flow
-7.3 Ford-Fulkerson Algorithm
-7.4 Choosing Good Augmenting Paths
--Choosing Good Augmenting Paths
-7.5 Bipartite Matching
-Homework7
-Lecture note 7
-8.1 Polynomial-Time Reductions
-8.2 Basic Reduction Strategies I
--Basic Reduction Strategies I
-8.3 Basic Reduction Strategies II
--Basic Reduction Strategies II
-8.4 Definition of NP
-8.5 Problems in NP
-8.6 NP-Completeness
-8.7 Sequencing Problems
-8.8 Numerical Problems
-8.9 co-NP and the Asymmetry of NP
--co-NP and the Asymmetry of NP
-Homework8
-Lecture note 8
--Lecture note 8 NP and Computational Intractability
-9.1 Load Balancing
-9.2 Center Selection
-9.3 The Pricing Method: Vertex Cover
--The Pricing Method: Vertex Cover
-9.4 LP Rounding: Vertex Cover
-9.5 Knapsack Problem
-Homework9
-Lecture note 9
--Lecture note 9 Approximation Algorithms
-10.1 Landscape of an Optimization Problem
--Landscape of an Optimization Problem
-10.2 Maximum Cut
-10.3 Nash Equilibria
-10.4 Price of Stability
-Homework10
-Lecture note 10
--Lecture note 10 Local Search
-11.1 Contention Resolution
-11.2 Linearity of Expectation
-11.3 MAX 3-SAT
-11.4 Chernoff Bounds
-Homework11
-Lecture note 11
--Lecture note 11 Randomized Algorithms
-Exam