給定n個作業的集合j= 。每乙個作業ji都有兩項任務分別在兩台機器上完成。每個作業必須先由機器1處理,然後由機器2處理。作業ji需要機器j的處理時間為tji,其實i=1, 2, …,n,j=1, 2。對於乙個確定的作業排程,設fji是 作業i在 機器j上完成處理的時間。所有作業在機器2上完成處理的時間之和n個作業,制定最佳作業排程方案,使其完成時間和達到最小。
全排列,剪枝
#include int book[8];
int path[8];
int work[2][8];
int time_all;
/*** n:作業個數
* cnt:當前所完成作業個數
* time:到目前為止所完成作業的總時間
* path:最優次序
* book: 標記作業是否完成 也記錄著作業完成次序
* work:作業資訊
* time_all:完成所有作業所需時間
* machine_a :機器a完成機器上的作業所需時間
* machine_b:機器b完成機器上的作業所需時間
* work-index:作業下標
****作業要在b機器完成需先在a機器完成,且b機器無作業
*/void fun(int machine_a, int machine_b, int time, int work_index, int cnt, int n)while(k!=-1);
time_all = time;
}return;
}for( int i = 1; i <= n; i++ )
else
// printf("%d %d*\n", temp_a,temp_b);
int tttt = temp_b; /// tttt為此次作業的完成時間
fun(temp_a, temp_b, time+tttt, i, cnt+1, n);
book[i] = 0; ///深搜完成,標記此次作業為未完成}}
}int main()
time_all = 0x3f3f3f3f;
fun(0,0,0,-1,0,n);
printf("case %d: %d\n", i, time_all);
for(int k = n-1; k >0; k--)
printf("%d\n", path[0]);
}return 0;}/*
131 10 2
3 0*****
2 1 3
9*****13
2 13 1
2 3*****
1 3 2
18*****
*/
回溯法 批處理作業排程 回溯演算法 批處理作業排程
成為該作業排程的完成時間和。批處理作業排程問題要求對於給定的 n個作業 制定乙個最佳的作業排程方案 使其完成時間和達到最小。批處理作業排程問題的乙個常見例子是在計算機系統中完成一批 n個作業,每個作業都要完成先計算,然 後將計算機結果列印輸出這兩項任務 計算任務由計算機的 處理器完成 列印輸出任務由...
回溯法 批處理作業排程 回溯法 批處理作業排程
問題描述 給定n個作業的集合j j1,j2,jn 每乙個作業ji都有兩項任務分別在2臺機器上完成。每個作業必須先有機器1處理,然後再由機器2處理。作業ji需要機器j的處理時間為tji。對於乙個確定的作業排程,設fji是作業i在機器j上完成處理時間。則所有作業在機器2上完成處理時間和f f2i,稱為該...
批處理作業排程(回溯)
一 題目描述 給定n個作業的集合j j1,j2,jn 每個作業j都有兩項任務分別在兩台機器上完成。每個作業必須先由機器1處理,再由機器2處理。作業i需要機器j的處理時間為tji i 1,2,n j 1,2 對於乙個確定的作業排程,設fji是作業i在機器j上完成處理的時間,則所有作業在機器2上完成處理...