描述:略
按性价比从大到小排序:
描述:作业 必须在期限 之前完成才能获取收益 ,且完成每个作业只需1个单位时间(贪心法的前提)
分支限界版 => 9.3
思路:优先安排收益最高的作业,尽可能将其安排在最晚的可用时间点,从而为其他作业预留更多的早期时间段。
作业j | 期限d | 收益p |
---|---|---|
1 | 2 | 100 |
2 | 1 | 10 |
3 | 2 | 15 |
4 | 1 | 27 |
首先按收益排序:
作业1:(2, 100)
作业4:(1, 27)
作业3:(2, 15)
作业2:(1, 10)
依次处理:
作业1(100):可以安排在时间2
作业4(27):可以安排在时间1
作业3(15):没有可用时间,跳过
作业2(10):没有可用时间,跳过
最终获得的最大收益为:100 + 27 = 127
最优解 5 6 3 2
最大收益 74
待补充
就是哈夫曼树求最小 WPL(带权外路径长度)
(20,30,30,10,5)
WPL = (5+10)*3 + (20+30+30)*2 = 205
补:虚节点,数量为 个
(3, 7, 8, 9, 15, 16, 18, 20, 23, 25, 28) => n=11,k=3, (n-1)%(k-1)=0,不用补;
(1,2,3,3,5,6,7,9) => n=8,k=3,(n-1)%(k-1)=1,补1个虚节点;WPL=66
对于图
适用于稠密图
每次从已有点集合里扩展出一条最短的边
适用于稀疏图
对边从小到大排序,依次加入边,每次加入都需要判环路
明显是稠密图,选 Prim
Dijkstra算法 边权非负
手写步骤:
又快又准做对考研真题,从考试的角度出发【Dijkstra】【单源最短路径】https://www.bilibili.com/video/BV1nh411Y7vj/
说人话:
把 个程序(线段)按某种顺序排列在一个磁带(数轴)上,程序不能重叠,保证磁带能放得下所有程序,要求平均检索时间(MRT)最小。
MRT = 所有程序的检索时间之和 程序个数
由于程序个数固定,所以 MRT 最小等价于检索时间之和最小。
检索时间 = 程序起点到磁带起点距离 程序长度
每次检索都从磁带起点开始,所以离起点越远的程序检索时间越长。
各种排列方式参考:书p117 表6-5
贪心策略:按程序长度从小到大排序,依次放入磁带。
现在磁带变成了 个,其实也很简单:将程序放在第一个磁带上,程序放在第二个磁带上,程序放在第三个磁带上...当 个磁带都排完一遍,回到第一个磁带,继续顺次放程序。
#include <iostream.h>
void Store(int n, int m)
{
int j = 0;
for (int i=0; i<n; i++) {
cout << "将程序"<<i<<" 加到磁带" <<j<<endl;
j=(j+1)% m;
}
cout<<endl;
}
个集装箱和一艘载重为 的船。每个集装箱的重量为。
求装载方案,使得装载的集装箱数量最大化,同时集装箱的总重量不超过船的载重限制 。
贪心策略:每次都选择最轻的集装箱
(5) 最优方案:装 [2,3,4,5,6]
一个数轴上有n条线段,现要选取其中k条线段,使得这些线段两两没有重合部分,问最大的k为多少。线段的起点为活动的开始时间,终点为活动的结束时间。
贪心策略:每次选择结束时间最早的活动,以留下最多的时间给后续活动。
例:设待安排的11个活动的开始时间和结束时间按结束时间的非递减序排列如下:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 3 | 0 | 5 | 3 | 5 | 6 | 8 | 8 | 2 | 12 | |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
贪心算法步骤
答案
注意不要与动态规划的流水作业调度问题混淆。
作业数 ,机器数 ,如何分配作业让完成时间最短。
贪心策略:按 当前最短完成时间 分配作业到 最空闲的机器;优先分配处理时间较长的任务 以填满机器。
例:7个独立作业 由3台机器 加工处理。
作业编号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
处理时间 | 2 | 14 | 4 | 16 | 6 | 5 | 3 |
答案
最优完成时间:17
版权声明
① 本博客所有原创文章,除非另有特别声明,均采用CC BY-NC-SA 4.0/知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行授权。
② 本博客中,在文章内容之外使用的原创图片、动画、音频等多媒体素材的知识产权归属如下:
(i) 由博客作者独立创作的素材,其知识产权由博客作者单独所有;
(ii) 与他人合作创作的素材,其知识产权由博客作者与原创作者共同所有;
(iii) 对于特定素材,如有不同的版权归属,将在相应位置特别注明。
未经原作者或博客作者的明确授权,任何个人或组织不得在其他场合使用、复制、修改或传播这些素材。