社区
数据结构与算法
帖子详情
求用最小堆实现机器调度问题
tjuwudi
2008-03-21 03:53:39
如题,所有的任务执行完成使所用的机器数最少,要求用最小堆实现,麻烦附上思路和源代码,谢谢!
Sample Input
3//3个任务
3 5//开始时间和结束时间
1 4
4 5
Sample Output
2//最少用两台机器
...全文
249
7
打赏
收藏
求用最小堆实现机器调度问题
如题,所有的任务执行完成使所用的机器数最少,要求用最小堆实现,麻烦附上思路和源代码,谢谢! Sample Input 3//3个任务 3 5//开始时间和结束时间 1 4 4 5 Sample Output 2//最少用两台机器
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xero_123
2010-09-05
打赏
举报
回复
不知道楼主为什么要求最最小堆来实现,但是我认为这个很类似编程之美里面的,面试安排的问题,总体思路就是,当前俺开始时间先后顺序排序,之后每次遇到一个开始时间则资源数目加一,每次遇到一个结束时间点则资源数目减一个,这样在整个过程中的最大资源数字就是所求,
qq120848369
2010-05-22
打赏
举报
回复
想用最小堆实现贪心策略么.
最小堆就不要自己写了,这个工作应该学数据结构时候做.
现在,你可以用STL里的priority_queue 来实现.
每次取一个开始时间最早的(堆顶),判断与前一次决定的活动的结束时间的关系,不重叠就决定它,冲突了就再取一个.
cmy0209
2010-05-22
打赏
举报
回复
没写完
cmy0209
2010-05-22
打赏
举报
回复
#include"stdio.h"
#include"malloc.h"
struct machinenode{
int ID; //机器号
int avail //机器可用时刻
};
struct jobnode{
int ID; //作业号
int time; //处理时间
};
typedef struct{
int key;
}Dui;
int rn(int n){
int i,r[20];
printf("输入%d个作业的信息:",n);
for(i=1;i<=n;i++)
scanf("%d",&r[i]);
return r;
}
int rm(int m){
int i,r[20];
printf("输入%d台机器的编号:",m);
for(i=1;i<=m;i++)
scanf("%d",&r[i]);
return r;
}
void siftB(Dui r[],int k,int m){ //大根堆的调整算法
int j,i;
i=k;j=2*i;
while(j<=m){
if(j<m&&r[j].key<r[j+1].key) j++;
//比较左右孩子的大小,使j为较大的孩子的下标
if(r[i].key<r[j].key){
r[i]<->r[j]; //较大的孩子与根交换
i=j;j=2*i;
}
else break;
}
}
void creatheapB(Dui r[],int m){ //建大根堆
for(i=n/2;i>=1;--i) //自第n/2个元素开始筛选
siftB(r,i,n);
}
void siftL(Dui r[],int k,int m){ //小根堆的调整算法
int j,i;
i=k;j=2*i;
while(j<=m){
if(j<m&&r[j].key>r[j+1].key) j++;
//比较左右孩子的大小,使j为较小的孩子的下标
if(r[i].key>r[j].key){
r[i]<->r[j]; //较小的孩子与根交换
i=j;j=2*i;
}
else break;
}
}
void creatheapL(Dui r[],int m){ //建小根堆
for(i=n/2;i>=1;--i) //自第n/2个元素开始筛选
siftL(r,i,n);
}
void heapsort(Dui r[],int n){ //堆排序
int i;
for(i=n/2;i>=1;i--) sift(r,i,n);
for(i=n;i>1;i--){
r[1]<->r[i];
sift(r,1,i-1);
}
}
void judeg(int m,int n){
int i,rn[20],rm[20];
rn=rn(n);
rm=rm(m);
if(n<=m){
for(i=2;i<=n;i++)
if(rn[1]<rn[i])
rn[1]=rn[i];
printf("最短时间为:%d",rn[1]);
}
else{
creatheapB(rn,n);
creatheapL(rm,m);
}
}
void main(){
int m,n;
printf("输入机器数m和作业数n:");
scanf("%d%d",&m,&n);
judge(m,n);
}
knowledge_Is_Life
2008-05-01
打赏
举报
回复
lz要干嘛?
meiZiNick
2008-04-30
打赏
举报
回复
不明LZ在说什么
大王派我去巡山
2008-03-21
打赏
举报
回复
这个很像“会场分配”问题,贪心算法可以解决。
首先为第一台机器分配任务,每一步选择的都是和前面的任务不冲突同时结束时间最早的任务;
排完第一台机器之后,如果还有任务剩下来,那再按照同样的方式为第二台机器排任务;
如果还有剩余,再为第三台机器排任务;
……
所有任务派完之后,最少用到几台机器的数量也出来了。
最小堆按照结束时间来判定,结束时间早的放在上层。每次从堆中取的都是结束时间最早的任务,如果该任务和这台机器前面的任务不发生冲突,那么就把这个任务排给这台机器;如果产生冲突,则把这个任务留给下一台机器。
基于DolphinScheduler构建大数据调度平台
Apache DolphinScheduler是一个新一代分布式大数据工作流任务调度系统,致力于“解决大数据任务之间错综复杂的依赖关系,整个数据处理开箱即用”。它以 DAG(有向无环图) 的方式将任务连接起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及 Kill任务等操作。目前已经有像IBM、腾讯、美团、360等400多家公司生产上使用。 调度系统现在市面上的调度系统那么多,比如老牌的Airflow, Oozie,Kettle,xxl-job ,Spring Batch等等, 为什么要选DolphinScheduler ? DolphinScheduler 的定位是大数据工作流调度。通过把大数据和工作流做了重点标注. 从而可以知道DolphinScheduler的定位是针对于大数据体系。 DolphinScheduler是非常强大的大数据调度工具,有以下一些特点:1、通过拖拽以DAG 图的方式将 Task 按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态;2、支持丰富的任务类型;3、支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill 任务等操作;4、支持工作流全局参数及节点自定义参数设置;5、支持集群HA,通过 Zookeeper
实现
Master 集群和 Worker 集群去中心化;6、支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计;7、支持补数,并行或串行回填数据。课程会带大家构建DolphinScheduler大数据调度平台,实战讲解多种任务调度配置,会基于案例讲解DolphinScheduler使用,让大家在实战中掌握DolphinScheduler。 DolphinScheduler 发展很快 很多公司调度都切换到了DolphinScheduler,掌握DolphinScheduler调度使用势在必行,抓住新技术机遇,为跳巢涨薪做好准备。
4.7--贪心--多机
调度问题
(
最小堆
)
最小堆
,
最小堆
,多机调度贪心问题
机器
调度问题
[问题描述] 有m台
机器
处理n个作业,设作业i的处理时间为ti,则对n个作业进行
机器
分配,设计算法进行合理调度,使得m台
机器
上处理n个作业所需要的总时间最短。 [基本要求] (1)一台
机器
同一时刻只能处理一个作业; (2)一个作业不能同时在两台
机器
上处理; (3)作业i一旦运行,需要连续ti个时间单位。 [
实现
提示] (1)这是一个多
机器
调度最优解问题。输入:n个不同处理时间的作业...
贪心算法解决多机
调度问题
——C++
实现
贪心算法解决多机
调度问题
——C++
实现
java
调度问题
的贪心算法_作业调度贪心算法汇编.doc
作业调度贪心算法汇编软件算法设计实验报告题目:作业
调度问题
院(系): 计算机科学与工程专 业:班 级:学 生:学 号:2015年 11 月问题描述:n个作业{1,2,…,n}要在由n台
机器
M1,...,Mn完成加工作业
调度问题
,要求确定这n个作业的最优加工顺序,使得从第一个作业在
机器
,到最后一个作业在
机器
上加工完成所需的时间最少。算法设计:贪心算法思想:贪心选择性质:所谓贪心选择性质是...
数据结构与算法
33,007
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章