1.基本策略
一步一步地构建问题的最优解决方案,其中每一步只需考虑眼前的最佳选择(局部判断规则),即通过局部最优到达全局最优。
2.TSP问题
- 最近邻点策略:从任意城市出发,每次在没有到过的城市中选择最近的一个,知道经过了所有的城市,最后回到出发城市。
- 最短链接策略:每次在整个图的范围内选择最短边加入到解集合中,但是要保证加入解集合中的边最终形成一个哈密顿回路。因此,当从剩余边集E’中选择一条边(u,v)加入解集合S中,应满足以下条件:
1.边(u,v)是边集E‘中代价最小的边;
2.边(u,v)加入解集合S后,S中不产生回路;
3.边(u,v)加入解集合S后,S中不产生分枝。
3.图着色问题
选择一种颜色,以任意顶点作为开始顶点,依次考察图中的未被着色的每个顶点,先用颜色1为尽可能多的顶点着色(不违背领接点颜色不相同的原则),当没有顶点能以这种颜色着色时,选择颜色2和一个未被着色的顶点,用颜色2为尽可能多的顶点着色,以此类推。
4.0/1背包问题
- 选择价值最大的物品
- 选择重量最轻的物品
- 选择单位重量价值最大的物品(通常采用这种)
5.多机调度问题
最长处理时间作业优先,即把处理时间最长的作业分配给最先空闲的机器,这样可以保证处理时间长的作业优先处理,从而在整体上获得尽可能短的处理时间。
例:设7个独立作业{1,2,3,4,5,6,7}由3台机器{M1,M2,M3}加工处理,各作业所需的处理时间分别为{2,14,4,16,6,5,3}。贪心法得到的作业调度如下:
6.Interval Scheduling(区间调度)
问题描述:有n项工作,每项工作分别在si时间开始,在ti时间结束。对于每项工作,你都可以选择参与与否。如果选择了参与,那么自始至终都必须全程参与。此外,参与工作的时间段不能重叠。目标是参与尽可能多的工作。
有四种策略,只有最后一种合理。
-
选取开始时间最早
反例:
-
选择所用时间最短
反例:
-
选取与其他工作重叠最少的工作
反例:
-
选取结束时间最早的工作(无反例)
7.Interval Partitioning(区间划分)
按讲座开始的时间从早到晚进行排序,若不兼容则安排到新的一间教室。
8.Scheduling to Minimizing Lateness(最小延迟调度)
问题描述:给定每个任务需要ti时间完成,期望在时刻di之前完成。要求延迟最少。
有三种策略,只有最后一种合理。
- 按ti从小到大进行安排
1 | 2 | |
---|---|---|
ti | 1 | 10 |
di | 100 | 10 |
- 按di-ti从小到大进行安排
1 | 2 | |
---|---|---|
ti | 1 | 10 |
di | 2 | 10 |
- 按di从小到大进行安排(无反例)