当前课程知识点:算法设计与分析 >  9 Approximation Algorithms >  9.1 Load Balancing >  Load Balancing

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

Load Balancing在线视频

Load Balancing

下一节:Center Selection

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

Load Balancing课程教案、知识点、字幕

这一章 和大家一起学习近似算法

如果我们要求解的问题是NP-hard的

我们能做些什么呢

通过计算复杂性理论的学习

我们知道 它们不太可能有多项式时间算法

我们必须要做一些取舍

我们说一个算法求解了一个问题

要满足三个要求

求得最优解

算法的运行时间是多项式的

解决问题的任意一个实例

我们关注于近似算法

它的运行时间是多项式的

可以解决问题的任意一个实例

虽然未必求得最优解

但是可以保证

对于最小化问题

近似算法得到的目标值至多为最优值的ρ倍

我们称这样的算法为ρ-近似算法

显然 我们面临一个挑战

在不知道最优值的情况下

要证明近似算法得到的解

不超过最优值的ρ倍

我们通过一些例子

来展示近似算法的设计与分析

先来看一下Load Balancing 问题

即负载平衡问题

负载平衡问题

也称为平行机排序问题

给定m台相同的机器 n个工件

工件j的加工时间为tj

要求工件j必须在一台机器上连续加工

一台机器在一个时刻只能加工一个工件

令J(i)为安排在机器i上加工的工件集合

定义这台机器的负载L_i为J(i)中

所有工件加工时间之和

定义makespan

即最后完工时间

为所有机器的最大负载L=max_i L_i

负载平衡问题 即安排工件在机器上加工

使得makespan最小

List Scheduling是容易想到的

也是常用的一个贪婪算法

这个算法把工件排成一个序列

然后依次把工件

安排在当前最先完工的机器上

我们来看一下算法的伪代码

先对m台机器

令它们的负载为0

所安排的工件集合为空

然后对于n个工件逐一安排加工

在安排工件j时

令第i台机器当前负载最小

那么把工件j安排在第i台机器

令第i台机器的负载增加t_j

最后返回每台机器上加工工件的集合

我们来看一个演示的例子

有三台机器

10个任务

List Scheduling算法把工件A安排在机器1

然后依次把工件B和C安排在机器2和3

安排工件D的时候

注意到机器2先完工

那么就安排在这台机器上加工

然后依次安排工件D在机器1

工件F在机器3

工件G在机器2

工件H在机器1

工件I在机器1

工件J在机器3

最后得到了所有工件的排序

算法共有n个循环

每次要寻找m台机器的最小负载

可以通过两分搜索在logm时间实现

因此总的运行时间是O(nlogm)

Gramham在1966年证明了

List Scheduling是2-近似算法

这也是第一篇对近似算法

进行最坏情形分析的文献

为了比较算法得到的解和最优解的关系

我们先建立2个引理

引理1

最优的makespanL^*≥工件的最大加工时间

这是因为工件必须连续加工

那么任何一个解的最大完工时间

都不会小于工件的最大加工时间

引理2

最优的makespanL^*≥所有工件加工时间除以m

这是因为

总的加工时间被分配到m台机器

总有一台机器的加工时间

不小于总加工时间除以m

通过上面的两个引理

我们就可以证明贪婪算法是2-近似的

考虑最后一台完工的机器

设为第i台机器

其负载为L_i

令j是这台机器上最后加工的工件

当j被安排在机器i的时刻

i具有最小的负载为L_i-t_j

可知对于任何一台机器k

1≤k≤m

其上的负载满足

L_i-t_j≤L_k

把这些不等式加到一起再除以m

我们有

L_i-t_j≤所有机器上的负载除以m

而所有机器上的负载

等于所有工件的加工时间

因此 L_i-t_j≤所有工件加工时间除以m

由引理2

它又≤L^*

L_i=(L_i-t_j)+t_j

由引理1

t_j≤L^*

因此L_i≤2L^*

命题得证

我们所得到的2-近似的结果是紧的么

下面的例子表明

它几乎是紧的

有m台机器

依次有m(m-1)个加工时间为1的工件

和一个加工时间为m的工件

按照List Scheduling算法

先安排加工时间为1的小工件

每台机器上分配m-1个

最后把大工件安排在第一台机器上加工

最后的完工时间为2m-1

显然 我们可以把大工件

安排在一台机器上加工

其它工件平均分配到余下的机器

得到最优解

目标值为m

当m充分大时

算法得到的目标值接近最优值的2倍

在List Scheduling算法中

我们把工件按照任意的顺序进行排列

然后顺序加工

通过刚才的例子 我们也会发现

把加工时间长的工件放在前面

可能会得到更好的结果

这个想法就是Longest processing time 算法

称为LPT规则

LPT规则

先把工件按照加工时间从大到小排列

然后执行List Scheduling算法

首先 我们有一个简单的发现

如果至多有m个工件

那么LPT规则会得到最优解

因为每台机器上最多加工一个工件

显然得到的是最优解

如果有不少于m个工件

那么L^*≥2t_m+1

考虑前m+1个工件

加工时间为t_1,…,t_m+1

因为工件按照加工时间降序排列

因此这些工件的加工时间都不小于t_m+1

共有m台机器

那么这m+1个工件中

至少有2个被安排在一台机器上加工

因此最后完工时间≥2t_m+1

我们可以得到下面的定理

LPT规则是3/2近似算法

我们可以假设

最后完工的工件至少是第m+1个工件

否则我们得到了最优解

和List Scheduling相同的分析

我们有

L_i=(L_i-t_j)+t_j

这里最后完工工件的加工时间t_j≤1/2L^*

因此 L_i≤3/2L^*

我们的分析是紧的吗

这次的回答是否定的

Graham在1969年证明了

LPTrule是4/3近似的

分析的过程更加精细和复杂

那么4/3的结果是紧的吗

它几乎是紧的

比如对于这样的例子

m台机器

有2m+1个工件

加工时间依次为m+1,m+2,…,2m-1

还有2个加工时间为m的工件

可以验证

当m充分大时

我们算法得到的目标值

与最优值的比值趋近4/3

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

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

Load Balancing笔记与讨论

也许你还感兴趣的课程:

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