当前课程知识点:算法设计与分析 >  6 Dynamic Programming >  6.3 Knapsack Problem >  Knapsack Problem

返回《算法设计与分析》慕课在线视频课程列表

Knapsack Problem在线视频

Knapsack Problem

下一节:RNA Secondary Structure

返回《算法设计与分析》慕课在线视频列表

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 Introduction of Algorithm

-1.1 Introduction

--Introduction

-1.2 A First Problem: Stable Matching

--A First Problem: Stable Matching

-1.3 Gale-Shapley Algorithm

--Gale-Shapley Algorithm

-1.4 Understanding Gale-Shapley Algorithm

--Understanding Gale-Shapley Algorithm

-Homework1

-Lecture note 1

--Lecture note 1 Introduction of Algorithm

2 Basics of Algorithm Analysis

-2.1 Computational Tractability

--Computational Tractability

-2.2 Asymptotic Order of Growth

--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 Graph

-3.1 Basic Definitions and Applications

--Basic Definitions and Applications

-3.2 Graph Traversal

--Graph Traversal

-3.3 Testing Bipartiteness

--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

--Lecture note 3 Graph

4 Greedy Algorithms

-4.1 Coin Changing

--Coin Changing

-4.2 Interval Scheduling

--Interval Scheduling

-4.3 Interval Partitioning

--Interval Partitioning

-4.4 Scheduling to Minimize Lateness

--Scheduling to Minimize Lateness

-4.5 Optimal Caching

--Optimal Caching

-4.6 Shortest Paths in a Graph

--Shortest Paths in a Graph

-4.7 Minimum Spanning Tree

--Minimum Spanning Tree

-4.8 Correctness of Algorithms

--Correctness of Algorithms

-4.9 Clustering

--Clustering

-Homework4

-Lecture note 4

--Lecture note 4 Greedy Algorithms

5 Divide and Conquer

-5.1 Mergesort

--Mergesort

-5.2 Counting Inversions

--Counting Inversions

-5.3 Closest Pair of Points

--Closest Pair of Points

-5.4 Integer Multiplication

--Integer Multiplication

-5.5 Matrix Multiplication

--Video

-5.6 Convolution and FFT

--Convolution and FFT

-5.7 FFT

--FFT

-5.8 Inverse DFT

--Inverse DFT

-Homework5

-Lecture note 5

--Lecture note 5 Divide and Conquer

6 Dynamic Programming

-6.1 Weighted Interval Scheduling

--Weighted Interval Scheduling

-6.2 Segmented Least Squares

--Segmented Least Squares

-6.3 Knapsack Problem

--Knapsack Problem

-6.4 RNA Secondary Structure

--RNA Secondary Structure

-6.5 Sequence Alignment

--Sequence Alignment

-6.6 Shortest Paths

--Shortest Paths

-Homework6

-Lecture note 6

--Lecture note 6 Dynamic Programming

7 Network Flow

-7.1 Flows and Cuts

--Flows and Cuts

-7.2 Minimum Cut and Maximum Flow

--Minimum Cut and Maximum Flow

-7.3 Ford-Fulkerson Algorithm

--Ford-Fulkerson Algorithm

-7.4 Choosing Good Augmenting Paths

--Choosing Good Augmenting Paths

-7.5 Bipartite Matching

--Bipartite Matching

-Homework7

-Lecture note 7

--Lecture note 7 Network Flow

8 NP and Computational Intractability

-8.1 Polynomial-Time Reductions

--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

--Definition of NP

-8.5 Problems in NP

--Problems in NP

-8.6 NP-Completeness

--NP-Completeness

-8.7 Sequencing Problems

--Sequencing Problems

-8.8 Numerical Problems

--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 Approximation Algorithms

-9.1 Load Balancing

--Load Balancing

-9.2 Center Selection

--Center Selection

-9.3 The Pricing Method: Vertex Cover

--The Pricing Method: Vertex Cover

-9.4 LP Rounding: Vertex Cover

--LP Rounding: Vertex Cover

-9.5 Knapsack Problem

--Knapsack Problem

-Homework9

-Lecture note 9

--Lecture note 9 Approximation Algorithms

10 Local Search

-10.1 Landscape of an Optimization Problem

--Landscape of an Optimization Problem

-10.2 Maximum Cut

--Maximum Cut

-10.3 Nash Equilibria

--Nash Equilibria

-10.4 Price of Stability

--Price of Stability

-Homework10

-Lecture note 10

--Lecture note 10 Local Search

11 Randomized Algorithms

-11.1 Contention Resolution

--Contention Resolution

-11.2 Linearity of Expectation

--Linearity of Expectation

-11.3 MAX 3-SAT

--MAX 3-SAT

-11.4 Chernoff Bounds

--Chernoff Bounds

-Homework11

-Lecture note 11

--Lecture note 11 Randomized Algorithms

Exam

-Exam

Knapsack Problem笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。