【无标题】

该博客探讨了一种多机调度问题的解决方案,首先对作业处理时间进行降序排序,然后按顺序分配给各机器。在分配过程中,优先考虑最早空闲的机器,以优化资源利用率。算法的时间复杂性分析显示,在m远小于n的情况下,复杂度为O(n*m)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多机调度问题

输入: n个作业的处理时间t[n],m台机器的空闲时间d[m]

输出:每台机器所处理的时间S[m]

1. 将数组t[n]从大到小排序,时间性能为O(nlog2^n),对应的作业序号存储在数组p[n]中;
2. 将数组d[m]初始化大小为0
3. for(i = 0;i < m; i++)  时间性能为O(m)3.1 将m前m个作业分配给m个机器:S[i]={p[i]};
	3.2 d[i]=t[i]  //为第i台机器赋值t[i]的时间


4. for(i = m ; i < n ; i++)
    4.1 j=数组d[m]中最小值对应的下标
    4.2 将作业i分配给最先空闲的机器j:S[j]=S[j]+{p[i]}
    4.3 机器j将在d[j]后空闲:d[j]=d[j]+t[i]

算法分析:步骤1将数组t[n] 进行排序,其时间性能为O(nlong2^n),步骤3完成前m个作业的分配,其时间性能为O(m),步骤4完成n-m个作业的分配,操作“数组d[m]中最小值对应的下标” 如果采用蛮力法查找,其时间性能为O(m),则算法的时间性能:T(N)=

∑i=1m1+∑i=m+1nm=m+(n−m)∗m\sum_{i=1}^{m}1+ \sum_{i=m+1}^{n}m=m+(n-m)*mi=1m1+i=m+1nm=m+(nm)m

通常情况下m<<n,则算法的时间复杂性O(n*m)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值