当前课程知识点:算法设计与分析 > 4 Greedy Algorithms > 4.3 Interval Partitioning > Interval Partitioning
我们再来看一个类似的问题
被称为区间划分问题
一些讲座分别有开始时间和结束时间
我们希望用最少的教室来安排这些讲座
使得彼此之间没有时间冲突
如在这样的例子中
我们可以用四间教室安排十个讲座
实际上对于这十个讲座
我们也可以用三间教室来安排
对于一些开区间
我们定义它的深度为
所有时刻中
包含某个时刻的区间最多的数量
一个简单的发现是
在我们的问题中
所需教室的数量要大于等于这些区间的深度
对于刚才的例子
我们容易发现
区间的深度为3
比如说 abc这3个区间
都包含9:30的这个时刻
所以我们得到3个教室的安排是最优的
对于区间划分问题
我们是否一定可以得到
目标值为区间深度的安排呢
考虑这样的贪婪算法
按照讲座的开始时间升序排列
依次把讲座安排在某个相容的教室中
如果没有相容的教室
那么就开辟一个新的教室
这里是算法的伪代码
我们把讲座按照开始时间升序排列
用d记录使用教室的数目
如果当前讲座
和某个教室中的讲座是相容的
那么我们把这个讲座安排在该教室中
否则就打开一个新的教室
使用教室的数目加一
这个算法的主要运营时间
也是花在排序上面
需要O(nlogn)的时间
显然 我们算法所安排的讲座没有时间的冲突
会得到一个可行解
我们来证明算法是最优的
令d为算法所使用的教室数目
教室d被打开
是因为我们需要用它来安排一个新的讲座
我们把这个讲座称为j
它与其他的d-1个教室中的讲座是都不相容的
因为算法按照工件的开始时间进行排序
这d-1个教室中与j不相容的讲座
一定有更早的开始时间
一定会在s_j之后的某个时刻
有d个讲座不相容
由我们刚才的发现
要安排这些讲座
至少需要d个教室
而我们的算法得到的解用了d个教室
因此就是最优的
-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