日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

基础算法 —— 调度问题 —— 多机并行调度问题

發(fā)布時間:2025/3/17 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基础算法 —— 调度问题 —— 多机并行调度问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【概述】

多機調(diào)度問題可表達(dá)為:n 個工件由 k 個可并行工作的機器加工,完成任務(wù) i 需要的時間為 ti,調(diào)度目標(biāo)是確定這 n 個工件完成的最佳加工順序,使得完成全部任務(wù)的時間最早,其可利用 回溯法 來求解

【問題分析】

問題實質(zhì)是要從 n 個作業(yè)中找出有最小完成時間和的作業(yè)調(diào)度,因此批處理作業(yè)調(diào)度問題的解空間是一棵排列樹

開始時,所給的 t[n] 為 n 個作業(yè)的完成時間,則相應(yīng)的排列樹由 t[1:n] 的所有排列構(gòu)成

用數(shù)組 len[n] 存儲一組空間解,getTime() 計算一個完整調(diào)度的完成時間,res 記錄當(dāng)前最佳調(diào)度的完成時間

在進(jìn)行搜索時,從第一個任務(wù)開始,對樹的深度進(jìn)行遞歸:

  • 當(dāng) deep=n 時,搜索至葉結(jié)點,得到一個新的作業(yè)調(diào)度方案,此時更新最優(yōu)值與相應(yīng)的最佳調(diào)度
  • 當(dāng) deep<n 時,若當(dāng)前擴展結(jié)點位于排列樹的第 n-1 層,說明需要對下一個要安排的作業(yè)進(jìn)行搜索,并向第 n-2 層回溯,從而對相應(yīng)子樹進(jìn)行搜索

【實現(xiàn)】

int n,k; int t[N]; int len[N]; int res=INF; int getTime() {int temp=0;for(int i=0; i<k; i++)temp=max(len[i],temp);return temp; } void dfs(int deep) {if(deep==n) {int temp=getTime();res=min(res,temp);return;}for(int i=0; i<k; i++) {len[i]+=t[deep];if(len[i]<res)dfs(deep+1);len[i]-=t[deep];} } int main() {scanf("%d%d",&n,&k);for(int i=0; i<n; i++)scanf("%d",&t[i]);dfs(0);printf("%d\n",res);return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的基础算法 —— 调度问题 —— 多机并行调度问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。