当前课程知识点:算法设计与分析 > 4 Greedy Algorithms > 4.4 Scheduling to Minimize Lateness > Scheduling to Minimize Lateness
还是排序问题
我们有一台生产设备
一个时刻能够处理一个工件
工件j需要t_j的加工时间
交工时间为d_j
如果工件j的开始时间为s_j的话
那么它的结束时间f_j
等于s_j加t_j
定义这个工件的延迟时间为
f_j-t_j与0这两个值取大
问题的目标为
对工件进行排序
使得工件的最大延迟时间最小
下面这个例子中
给定工件的加工时间和交工时间
按照这样的顺序进行加工
我们可以算出每个工件的结束时间
以及相应的延迟时间
可以看到 第4个工件的延迟时间为6
是最大的
这个算法对应的目标值为6
我们考虑用贪婪算法求解
这里有几种选择
我们可以把工件按照加工时间升序排列
可以把工件按照交工时间升序排列
考虑d_j-t_j
表示工件交工的急缓程度
也可以考虑把它按照升序进行排列
我们先来看几个例子
第一个例子中
我们采用最少加工时间优先的算法
算法会安排工件1加工
再安排工件2加工
对应的目标值为1
显然 这个例子的最优解是
先安排工件2加工
再安排工件1加工
目标值为零
如果考虑按照急缓程度进行排序的算法
看下面这个例子
贪婪算法会先安排工件2加工
再安排工件1加工
对应的目标值为9
这个例子的最优解是先安排工件1加工
再安排工件2加工
目标值为1
最后只剩下最早交工时间优先的算法
我们给出它的伪代码
我们把工件按照交工时间升序排列
然后依次在每个工件的结束时刻
安排下一个工件的加工
对于之前的例子
最早交工时间优先算法执行的结果如下
目标值为1
我们有一些简单的发现
一定存在没有空闲时间的最优排序
如果工件的加工之间有空闲出现的话
那么我们可以按照相同的顺序
把工件紧凑的安排加工
不会增加目标值
而我们的贪婪算法就是没有空闲时间的
在排序S中
我们定义逆序
一对工件i和j
满足i 但是j排在i的前面 我们就称它是一对逆序 贪婪算法所得到的解不存在逆序 如果一个排序存在逆序的话 那么一定存在着相邻的两个工件构成逆序 我们有这样的结论 交换相邻的逆序工件 会减少一个逆序 但是不会增加最大的延迟 令i,j构成一对相邻的逆序 l是交换之前的延迟 l'是交换之后的延迟 对于所有不等于i,j的工件k 交换前后的延迟是不变的 工件i的延迟显然不会增加 我们考虑工件j的延迟 交换后的延迟为它的完工时间f_j'-d_j 交换后j的完工时间 等于交换前工件i的结束时间 所以上式等于f_i-d_j 因为i 而这个值<=交换前的工件i的延迟 我们有所要的结论 最后我们来证明 贪婪算法是最优的 令S^*是一个最优排序 并且包含最少的逆序 我们来看看会发生什么 我们可以假设S^*没有空闲时间 如果S^*没有逆序的话 那么 它与我们算法返回的解是相同的 如果S^*有一个逆序 令i,j是一对相连的逆序 交换i和j 不会增加目标值 但是会严格下降逆序的数目 这与S^*的设定产生矛盾 通过这些例子我们可以看到 贪婪算法的一些特征 我们总是把一个问题分解为若干阶段 然后依次用一些 符合直觉的策略进行求解 最后返回问题的解 目前为止 我们设计和分析贪婪算法 采用了几种不同的方式 一种方式是 我们证明在算法执行的每一步 所得到的解不坏于其他任何的解 我们还采用交换的方法来证明 可以一步一步地把一个最优解 转换为我们贪婪算法所得到的解 而不影响解的质量 还有通过对问题结构的分析 我们分析解的边界 并证明算法得到的解达到了这个边界 从而是最优的
-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