当前课程知识点:算法设计与分析 >  9 Approximation Algorithms >  9.5 Knapsack Problem >  Knapsack Problem

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

Knapsack Problem在线视频

Knapsack Problem

下一节:Lecture note 9 Approximation Algorithms

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

Knapsack Problem课程教案、知识点、字幕

在动态规划一章中

我们研究了背包问题

并给出伪多项式时间算法

我们从近似算法的角度

再来研究背包问题

对于近似算法

我们可能得到的最好的结果

是所谓的多项式时间近似格式

简称为PTAS

是指对于任意的ε>0

都有(1+ε)-近似算法

PTAS可以得到任意精度的解

当然这是以花费更多时间为代价

运行的时间往往是1/ε的函数

在这部分 我们介绍背包问题的PTAS算法

主要是通过舍入的方法

回顾一下背包问题

我们先定义背包问题

有n个物品和1个背包

物品i有两个参数

权重w_i>0和收益v_i>0

背包有一个容积W

不失一般性

我们假设 w_i≤W

目标是

选择权重和不超过背包容积的物品

使得收益和最大

比如这个例子中有五个物品

有对应的权重和收益

一个背包 容积为11

物品3和4的权重之和为11

能够装入背包

获得的收益是40

我们先来证明

背包问题的判定问题是NP完全的

背包问题的判定问题为

给定一个物品集合X

物品i有两个参数

权重wi>0和收益vi>0

背包有一个容积W

再给定一个目标值V

是否存在S⊆X

使得S中物品权重和不超过W

收益和不小于V

我们建立从子集和问题到背包问题的规约

子集和问题为

给定一个有限集合X

其中元素值为ui

和一个整数U

是否存在S⊆X

使得其中元素之和为U

对于子集和问题给定的一个实例(u_1,…,u_n,U)

我们构架背包问题的实例

令v_i=w_i=u_i

V=W=U

这两个实例同为是实例或否实例

背包判定问题显然是属于NP的

因此 它是NP完全问题

再回顾一下

我们学习过的背包问题的动态规划算法

定义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)

两者取大

这样我们就建立起来动态规划基本方程

我们再来看一下算法的运行时间

算法的运行时间是O(nW)

这里W是背包的容积

是一个输入的数值

这个数值的输入规模是logW

所以它并不是一个多项式时间算法

称为伪多项式时间算法

类似地 我们可以给出第二个动态规划算法

定义OPT(i,v)是从物品1到i中选择

并且当前的收益恰为v时

物品的最小权重和

考虑第i阶段

只有两种情况

Case1

OPT没有选择物品i

它一定是在{ 1,2,…,i-1 }中

得到同样的收益v

做出的最优选择

物品的总权重为OPT(i-1,v)

Case2

OPT选择了物品i

那么对于物品{1,2,…,i-1}

获得收益为v-v_i的情况下

最优解一定做出了最优选择

对应的权重和为wi+OPT(i-1,v-v_i)

最优解

一定是这两种情况中最好的一个

因此我们可以建立动态规划基本方程

边界情况是

当v=0 最优值为0

当i=0,v>0时

最优值为无穷

如果当前要考虑的物品的收益大于v

那么一定不选择这个物品

即OPT(i,v)=OPT(i-1,v)

我们所讨论的两种情况

分别的对应目标值为

OPT(i-1,v)和w_i+OPT(i-1,v-v_i)

两者取小

这样我们就建立起来动态规划基本方程

我们可以从小到大

逐一求出OPT(i,v)

算法的运行时间是O(nV^*)

这里的V^*是最优值

等于最大的v

使得OPT(n,v)≤W

V^*不超过n倍的最大物品收益

因此算法的运行时间是O(n^2v_max)

同样地 这不是一个多项式时间算法

也是一个伪多项式时间算法

我们将要给出的算法

基于这样的直觉

我们把给定的物品收益

在一个小范围内舍入

然后对舍入的例子用动态规划算法求解

得到它的最优解

再和最大的物品收益进行比较

返回两者中更优的一个

比如对下面的例子

物品的价值都很大

我们以10万为单位

对这些价值向上取整

得到右边舍入后的例子

可以发现 舍入后的例子中

物品的价值变得很小

再调用第二个动态规划算法的话

可以期望快速求出其最优解

关键是如何分析这个算法给出解的质量

及具体的运行时间

令θ为缩放比例参数

令物品i的新价值为v_i bar

为v_i/θ向上取整再乘以θ

v_i/θ向上取整记为花写的v_i

令vmax为原实例中物品的最大价值

ε确定精度的参数

θ为控制缩放比例的参数=εv_max/n

一个直接的发现是

以v bar和花写v

作为物品的价值求得的最优解是一样的

直觉上 v bar与v很接近

用v bar作为物品的价值求得的最优值

也接近于原实例的最优值

而花写v相对较小

而且都是整数

可以用动态规划来快速求解

具体来说 这个算法的运行时间是O(n^3/ε)

注意第二个动态规划算法的运行时间是

O(n^2花写v_max)

花写v_max=v_max/θ向上取整

根据θ的设定

可知它等于n/ε向上取整

因此算法的运行时间是O(n^3/ε)

下面的定理表明

我们的算法是一个1+ε近似算法

也就是一个PTAS

令S是我们算法得到的解

S^*是任意可行解

我们有

算法目标值的1+ε倍≥S^*对应的目标值

S^*是一个可行解

它对应的目标值为

其包含的物品收益v_i之和

因为v_i bar是对v_i向上取整

因此它≤对应的v_i bar之和

因为S为以v_i bar为收益时的最优解

因此上式≤S中物品对应的v_i bar之和

注意到 v_i bar≤v_i+θ

则上式≤S中物品对应v_i之和+nθ

由θ=εv_max/n

及算法得到的目标值≥v_max

我们得到 上式≤1+ε倍算法得到的目标值

命题得证

算法设计与分析课程列表:

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笔记与讨论

也许你还感兴趣的课程:

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