欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++貪心算法處理多機調度問題詳解

 更新時間:2022年06月30日 09:25:56   作者:成就一億技術人  
貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優(yōu)上加以考慮,他所做出的僅是在某種意義上的局部最優(yōu)解

多機調度問題思路

1、把作業(yè)按加工所用的時間從大到小排序

2、如果作業(yè)數(shù)目比機器的數(shù)目少或相等,則直接把作業(yè)分配下去

3、 如果作業(yè)數(shù)目比機器的數(shù)目多,則每臺機器上先分配一個作業(yè),如下的作業(yè)分配時,是選那個表頭上 s 最小的鏈表加入新作業(yè)

可以考慮以下的貪心策略:

(1)最長處理時間作業(yè)優(yōu)先的貪心選擇策略。

(2)最短處理時間作業(yè)優(yōu)先的貪心選擇策略。

(3)作業(yè)到達時間優(yōu)先的貪心選擇策略。

*貪?策略:優(yōu)先處理花費時間長的任務,這樣可以減少短任務的等待時間.

問題描述

形式:有n個任務,m臺機器,n>m,每個作業(yè)i可以選擇?臺設備進?加?,加?時間為ti,每臺機器同時只能加??個作業(yè),且不可中斷。實現(xiàn)作業(yè)調度,使得n個作業(yè)的等待時間最短。

假定有7個獨立作業(yè),所需處理時間分別為{2,14,4,16,6,5,3},由三臺機器M1,M2,M3加工。按照貪心算法產生的作業(yè)調度如下圖所示,所需總加工時間為17.

代碼實現(xiàn)【C++】

#include<iostream> 
using namespace std;
#define N 7 
#define M 3 
int s[M] = { 0, 0, 0 };
//求出目前處理作業(yè)的時間和 最小的機器號 
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;
}
//機器數(shù)大于待分配作業(yè)數(shù) 
int setwork1(int t[], int n){
int i = 0;
for (; i<n; i++){
s[i] = t[i];
}
int ma = max(s, N);
return ma;
}
//機器數(shù)小于待分配作業(yè)數(shù) 
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++多機調度內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言實現(xiàn)簡單推箱子游戲

    C語言實現(xiàn)簡單推箱子游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單推箱子游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 斐波那契數(shù)列 優(yōu)化矩陣求法實例

    斐波那契數(shù)列 優(yōu)化矩陣求法實例

    斐波那契數(shù)列 優(yōu)化矩陣求法實例,需要的朋友可以參考一下
    2013-03-03
  • C++數(shù)據結構之單鏈表的實現(xiàn)

    C++數(shù)據結構之單鏈表的實現(xiàn)

    線性表的鏈式存儲又稱為單鏈表,它是指通過一組任意的存儲單元來存儲線性表中的數(shù)據元素。本文將用C++實現(xiàn)單鏈表,需要的可以參考一下
    2022-05-05
  • C++ Boost Intrusive庫示例精講

    C++ Boost Intrusive庫示例精講

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • 詳解C語言結構體中的char數(shù)組如何賦值

    詳解C語言結構體中的char數(shù)組如何賦值

    這篇文章主要給大家介紹了關于C語言結構體中的char數(shù)組如何賦值的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-03-03
  • C語言漢諾塔的簡單了解

    C語言漢諾塔的簡單了解

    這篇文章主要給大家介紹了關于C語言漢諾塔的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • C++虛函數(shù)表與類的內存分布深入分析理解

    C++虛函數(shù)表與類的內存分布深入分析理解

    對C++ 了解的人都應該知道虛函數(shù)(Virtual Function)是通過一張?zhí)摵瘮?shù)表(Virtual Table)來實現(xiàn)的。簡稱為V-Table。本文就將詳細講講虛函數(shù)表的原理與使用,需要的可以參考一下
    2022-08-08
  • C++非遞歸建立二叉樹實例

    C++非遞歸建立二叉樹實例

    這篇文章主要介紹了C++非遞歸建立二叉樹的方法,實例分析了二叉樹的原理與C++實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • 詳解C++調用Python腳本中的函數(shù)的實例代碼

    詳解C++調用Python腳本中的函數(shù)的實例代碼

    這篇文章主要介紹了C++調用Python腳本中的函數(shù) ,需要的朋友可以參考下
    2018-11-11
  • C++實現(xiàn)數(shù)獨快速求解

    C++實現(xiàn)數(shù)獨快速求解

    這篇文章主要為大家詳細介紹了C++實現(xiàn)數(shù)獨快速求解的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論