iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++贪心算法处理多机调度问题详解
  • 197
分享到

C++贪心算法处理多机调度问题详解

2024-04-02 19:04:59 197人浏览 安东尼
摘要

多机调度问题思路 1、把作业按加工所用的时间从大到小排序 2、如果作业数目比机器的数目少或相等,则直接把作业分配下去 3、 如果作业数目比机器的数目多,则每台机器上先分配一个作业,如

多机调度问题思路

1、把作业按加工所用的时间从大到小排序

2、如果作业数目比机器的数目少或相等,则直接把作业分配下去

3、 如果作业数目比机器的数目多,则每台机器上先分配一个作业,如下的作业分配时,是选那个表头上 s 最小的链表加入新作业

可以考虑以下的贪心策略:

(1)最长处理时间作业优先的贪心选择策略。

(2)最短处理时间作业优先的贪心选择策略。

(3)作业到达时间优先的贪心选择策略。

*贪⼼策略:优先处理花费时间长的任务,这样可以减少短任务的等待时间.

问题描述

形式:有n个任务,m台机器,n>m,每个作业i可以选择⼀台设备进⾏加⼯,加⼯时间为ti,每台机器同时只能加⼯⼀个作业,且不可中断。实现作业调度,使得n个作业的等待时间最短。

假定有7个独立作业,所需处理时间分别为{2,14,4,16,6,5,3},由三台机器M1,M2,M3加工。按照贪心算法产生的作业调度如下图所示,所需总加工时间为17.

代码实现【c++

#include<iOStream> 
using namespace std;
#define N 7 
#define M 3 
int s[M] = { 0, 0, 0 };
//求出目前处理作业的时间和 最小的机器号 
int min(int m){
int min = 0;
int i;
for (i = 1; i<m; i++){
if (s[min]>s[i]){
min = i;
}
}
return min;
}
//求最终结果(最长处理时间) 
int max(int s[], int num){
int max = s[0];
for (int i = 1; i<num; i++){
if (max<s[i])
max = s[i];
}
return max;
}
//机器数大于待分配作业数 
int setwork1(int t[], int n){
int i = 0;
for (; i<n; i++){
s[i] = t[i];
}
int ma = max(s, N);
return ma;
}
//机器数小于待分配作业数 
int setwork2(int t[], int n){
int i;
int mi = 0;
for (i = 0; i<n; i++){
mi = min(M);
cout << "接下来由" << mi+1 << "号机器处理任务" << i + 1 << endl;
s[mi] = s[mi] + t[i];
}
int ma = max(s, M);
return ma;
}
void main()  //DEV中是int,vc++6.0中是void
{
	int time[N] = { 16, 14, 6, 5, 4, 3, 2 };//处理时间按从大到小排序 
	int maxtime;
	if (M >= N)
		maxtime = setwork1(time, N);
	else
		maxtime = setwork2(time, N);
	cout << "最多耗费时间" << maxtime << endl;
}

结果

到此这篇关于C++贪心算法处理多机调度问题详解的文章就介绍到这了,更多相关C++多机调度内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++贪心算法处理多机调度问题详解

本文链接: https://www.lsjlt.com/news/153045.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++贪心算法处理多机调度问题详解
    多机调度问题思路 1、把作业按加工所用的时间从大到小排序 2、如果作业数目比机器的数目少或相等,则直接把作业分配下去 3、 如果作业数目比机器的数目多,则每台机器上先分配一个作业,如...
    99+
    2024-04-02
  • 贪心算法①--使用贪心算法思想解活动安排问题-python
    '''一、具有贪心选择结构 复杂问题可以划分成小问题解决二、具有贪心选择性质 是否能够用贪心选择开始一个最优起点,使用贪心选择能否得到一个完整解案例1:最优装载问题 有n个集装箱需要装上一艘重量为W的轮船。 其中...
    99+
    2023-10-26
    贪心算法 python 算法 数据结构 pycharm
  • C++实现贪心算法的示例详解
    目录区间问题区间选点最大不相交区间数量区间分组区间覆盖Huffman树合并果子排序不等式排队打水绝对值不等式货舱选址区间问题 区间选点 给定 N 个闭区间 [ai,bi],请你在数轴...
    99+
    2024-04-02
  • Java使用贪心算法解决电台覆盖问题(示例详解)
    java使用贪心算法解决电台覆盖问题 代码实现 public class Demo { public static void main(String[] args) { ...
    99+
    2024-04-02
  • C++递归算法处理岛屿问题详解
    目录岛屿问题定义例题一-岛屿的数量例题二-岛屿的周长岛屿问题定义 岛屿问题是指用二维数组进行模拟, 1的位置表示陆地, 0的位置表示海洋。岛屿是指 被水(0)包围的陆地(1) 如下图...
    99+
    2024-04-02
  • Java贪心算法之Prime算法原理与实现方法详解
    本文实例讲述了Java贪心算法之Prime算法原理与实现方法。分享给大家供大家参考,具体如下:Prime算法:是一种穷举查找算法来从一个连通图中构造一棵最小生成树。利用始终找到与当前树中节点权重最小的边,找到节点,加到最小生成树的节点集合中...
    99+
    2023-05-31
    java 贪心算法 prime算法
  • PythonPSO算法处理TSP问题详解
    目录前言PSO算法算法流程简单实现解决TSP数据表示区别完整代码特点分析设计环境压力设计压力策略强化学习前言 先前我们给出了遗传算法的解决方案,那么同样的我们,给出使用PSO的解决方...
    99+
    2022-11-13
    Python PSO算法处理TSP Python PSO算法 Python TSP
  • C#开发中如何处理多任务调度和并行处理问题及解决方法
    C#开发中如何处理多任务调度和并行处理问题及解决方法在C#开发中,处理多任务调度和并行处理是非常常见的需求。如何高效地处理多任务和并行任务,可以提高程序的性能和响应速度。本文将介绍如何使用C#的多线程和任务并行库来实现多任务调度和并行处理,...
    99+
    2023-10-22
    解决方法 任务调度 并行处理
  • 怎么使用Python贪心算法解决集合覆盖问题
    本文小编为大家详细介绍“怎么使用Python贪心算法解决集合覆盖问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Python贪心算法解决集合覆盖问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在《算...
    99+
    2023-06-04
  • C#开发中如何处理多任务调度和并行处理问题
    C#开发中如何处理多任务调度和并行处理问题,需要具体代码示例在C#开发中,处理多任务调度和并行处理问题是一项重要的技能。通过利用多核处理器的并行计算能力,可以提高程序的性能和响应速度。本文将介绍如何在C#中使用多线程和任务并行库来处理多任务...
    99+
    2023-10-22
    任务调度 并行处理 C#开发
  • Python 遗传算法处理TSP问题详解
    目录前言TSP问题枚举智能算法策略算法数据样例遗传算法算法流程繁殖交叉变异选择逆转代码TSP遗传算法种群表示交叉与变异代码运行结果总结前言 临时接到一个分支任务,那就是解决TSP问题...
    99+
    2022-11-13
    Python 遗传算法处理TSP Python 遗传算法 Python TSP
  • C++超详细讲解贪心策略的设计及解决会场安排问题
    目录问题描述贪心策略算法设计代码实现选择结构体随机输入会议按结束时间排序最终会议确定结束语问题描述 设有n个会议的集合C={1,2,…,n},其中每个会议都要求使用同一...
    99+
    2024-04-02
  • matlab鸟群算法求解车间调度问题详解及实现源码
    目录一、车间调度简介1 车间调度定义2 传统作业车间调度3 柔性作业车间调度二、蝴蝶优化算法(MBO)简介1 介绍2 香味3 具体算法三、部分源代码五、matlab版本及参考文献一、...
    99+
    2024-04-02
  • C++中算法优化问题详细解析
    C++中算法优化问题详细解析引言:在编程领域中,算法的优化是一项非常重要的工作。一个高效的算法可以有效地节省时间和空间资源,提高程序的性能。C++作为一种高级编程语言,提供了丰富的工具和技术来优化算法。本文将详细解析C++中算法优化的问题,...
    99+
    2023-10-22
    C++ 算法优化 问题解析
  • C/C++经典算法之约瑟夫问题详解
    目录什么是约瑟夫问题? 方法一:数组方法二:环形链表方法三:递归总结什么是约瑟夫问题?  约瑟夫问题:n个人围成一圈,初始编号从1~n排列,从约定编号为x的人开始...
    99+
    2024-04-02
  • C++ 函数调试详解:如何调试预处理器指令中的问题?
    调试预处理器指令问题的方法包括:查看预处理后的代码使用宏扩展定义调试宏使用预处理器分析器 C++ 函数调试详解:如何调试预处理器指令中的问题 预处理器指令是 C++ 中强大但容易出错的...
    99+
    2024-05-03
    c++ 函数调试
  • 用C语言递归实现火车调度算法详解
    目录1、代码2、代码详解3、用二叉树表示调用过程4、思维导图笔者在李云清版的《数据结构》中第二章遇到了这道经典的火车调度题,经过对一些前辈的代码进行学习,以下将这段火车代码进行分析详...
    99+
    2024-04-02
  • C++中字符串处理问题的详解
    C++中字符串处理问题的详解在C++编程中,字符串处理是一个非常常见的任务。无论是读取用户输入、从文件中读取数据、或者进行数据处理和格式转换,字符串处理都扮演了重要的角色。本文将介绍C++中常见的字符串处理问题,并提供具体的代码示例。字符串...
    99+
    2023-10-22
    C++ 字符串处理 问题详解
  • C++中异常处理问题详细解析
    C++中异常处理问题详细解析异常处理是现代编程语言中一个非常重要的概念,它可以帮助程序员有效地处理和响应运行时错误。在C++中,异常处理机制提供了一种结构化的方式来捕捉并处理异常,从而使程序能够在遇到错误时进行适当的处理,而不是直接崩溃。异...
    99+
    2023-10-22
    C++ 异常处理 问题解析
  • 详解C语言处理算经中著名问题百钱百鸡
    前言 Wassup guys,我是Edison 今天是C语言每日一练,第117天! Let's get it! 1. 问题描述 中国古代数学家张丘健在他的 《算经》 中提出了一个...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作