当前课程知识点:算法设计与分析 > 4 Greedy Algorithms > 4.2 Interval Scheduling > Interval Scheduling
我们再来看一个例子
在区间排序中
任务j 它有两个参数
它的开始时间s_j
完工时间f_j
如果两个工件的加工时间没有重叠的部分
我们说它们是相容的
区间排序问题的目标
是找到最大的相容工件的集合
比如在这个例子里边b,e,h
这三个工件是相容的
对于这个问题
我们可以设计多个贪婪算法
我们按照某种顺序对工件进行排序
然后依次安排相容的工件进行加工
我们可以把工件按照开始的时间升序排列
这个算法我们称为
最早开始时间优先的算法
还可以按照结束时间的升序排序
这个算法称为最早结束时间优先算法
如果把工件
按照所需要加工时间的长度升序排列
我们有最小区间优先算法
我们还可以考虑
对于每个工件计算出来
它与其他工件冲突的数目
按照升序排列
得到最小冲突优先算法
这些算法都在一定程度上
符合我们的直觉
但是它们都是最优的吗
我们来看这样的例子
对于第一个例子来说
这个长的工件
它的加工时间最早
在最早开始时间优先的算法中
安排对它进行加工
其他四个工件与它都有冲突
所以算法得到的解
只有一个工件被加工
这个例子的最优解
显然是加工四个小的工件
在第二个例子中
我们考虑
最小区间优先算法
这个例子中我们加工下面的这个小的工件
目标值为1
而这个例子的最优解
是加工上面两个大的工件
而得到的目标值为2
对于最少冲突优先的算法
我们考虑这样的例子
对于这个例子
算法得到的解返回3个工件
分别是最左右两端的工件
以及中间这个工件
而这个例子的最优解是返回上面的4个工件
在我们上面提到的4个贪婪算法中
唯一还可能是最优的算法
就是最早完工时间优先的算法
我们先给出这个算法的伪代码
按照工件的结束时间
从小到大进行排序
令A是我们要加工的工件的集合
工件j从1到n
如果 它与A中的工件相容
那么就把工件j加入到集合A中
我们来看一个例子
在这个例子中
我们按照工件的结束时间
从早到晚依次排序
我们先加工b工件
然后考虑c工件
它是与b不相容的
有时间的冲突
然后我们考虑之后的a工件
也仍然与之前加工的工件有冲突
然后我们考虑e工件
它是与b没有冲突的
所以我们把b放入到要加工的工件集合中
我们依次往后进行检查
d工件是与之前的工件有冲突
f有冲突 g有冲突
最后我们把h工件
它是与之前的工件是都相容的
所以最后我们的算法返回的解
就是b、e、h三个工件
下面我们分析算法的运行时间
对n个工件的结束时间进行排序
需要O(nlogn)的时间
我们记录下来当前最后一个被加入到
集合A中的工件 我们记它为j star
判断下一个工件j是否与A中的工件相容
只需要判断它的开始时间s_j
是否大于等于j^*的结束时间
所有的这些判断需要O(n)的时间
所以算法所需要的计算时间是O(nlogn)的
下面证明贪婪算法是最优的
我们用反证法
假设贪婪算法不是最优的
我们来看一下会发生什么
令i_1 i_2到i_k
是贪婪算法选择工件的集合
令j_1到j_m为最优算法所选择工件的集合
并且 它与贪婪算法所得到的工件集合
具有数目最多的前r个工件
我们来看一下这个最优解中第r+1个工件
按照我们的算法
它的结束时间要晚于贪婪算法中
第r+1个工件的结束时间
如果我们在这个最优解中
把这个第r+1个工件
替换为贪婪算法中的第r+1个工件
我们同样得到了一个相同目标值的可行解
但是 这个解与贪婪算法前r+1个工件相同
与我们r的设定产生矛盾
也就是说
存在一个最优解
它与贪婪算法得到的解是完全相同的
从而证明了贪婪算法的最优性
-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