獨立任務最優調度問題


一.問題描述

  用2 台處理機A 和B 處理n個作業。設第i 個作業交給機器A 處理時需要時間ai,若由機器B來處理,則需要時間bi。由於各作業的特點和機器的性能關系,很可能對於某些i,有ai>=bi,而對於某些j,j≠i,有aj<bj,既不能將一個作業分開由2 台機器處理,也沒有一台機器能同時處理2 個作業。設計一個動態規划算法,使得這2 台機器處理完這n個作業的時間最短(從任何一台機器開工到最后一台機器停工的總時間)。

  input   6              

  2 5 7 10 5 2 

  3 8 4 11 3 4 

  output  15

 

二.問題分析

  下面是錯誤算法

 1 /*
 2 算法采用二進制枚舉,但是這樣不對
 3 因為同時有兩個處理器 
 4 */
 5 #include <iostream>
 6 #include <cstring>
 7 using namespace std;
 8 
 9 int a[100],b[100];
10 
11 int main()
12 {
13     int i,j,k;
14     int num;
15     while(cin>>num)
16     {
17         int min = 0x7fffffff;//INT_MAX
18         memset(a,0,sizeof(a));
19         memset(b,0,sizeof(b));
20         for(i=0; i<num; i++)
21             cin>>a[i];
22         for(i=0; i<num; i++)
23             cin>>b[i];
24         int s = 1<<num - 1;
25         for(i=0;i<s; i++)//沒有等於,想等差數列和 
26         {
27             int sum = 0;
28             for(j=0; j<num; j++)
29             {
30                 if(i&(1<<j))//1的話采用a處理機 
31                     sum += a[j];
32                 else
33                     sum += b[j];  
34             }
35             if(sum<min)
36                 min = sum;             
37         }
38         cout<<min<<endl;
39         
40     }
41     return 0;
42 } 

明天繼續寫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM