獨立任務最優排程(雙機排程)問題
阿新 • • 發佈:2019-01-16
用兩臺處理機和處理個作業。設和處理第個作業的時間分別為和。由於各個作業的特點和機器效能的關係,對某些作業,在上的處理時間長;而對另一些作業,在上的處理時間更長。一臺處理機在某個時刻只能處理一個作業,而且作業處理是不可中斷的,每個作業只能被處理一次。現在要找出一個最優排程方案,使得個作業被這兩臺處理機處理完畢的時間和最少。
本題是一個獨立任務最優排程問題,也被稱為雙機排程問題,可以利用動態規劃的思想解決。當完成個作業時,設機器花費了時間,機器花費時間的最小值肯定是的一個函式。設表示完成k個作業且機器花費時間的條件下機器所花費時間的最小值,那麼。其中表示第k個作業由機器B來處理,完成前個作業時機器所花費的時間還是。而表示第個作業由機器來處理,此時完成前個作業機器A花費的時間是。
根據的定義,我們知道表示完成個作業且機器花費時間的條件下機器所花費時間的最小值。顯然,,所以對於區間內的任一整數,總有一個與其對應,那麼就是最後的結果。由於要處理每個作業,並且處理每個作業的時候都要迴圈次,所以演算法的時間複雜度為。
考慮以下包含個作業的例子,其中,而。下面對前兩個作業進行簡單的分析。
作業1 | 作業2 | 作業3 | 作業4 | 作業5 | 作業6 | |
處理機A | 2 | 5 | 7 | 10 | 5 | 2 |
處理機B | 3 | 8 | 4 | 11 | 3 | 4 |
對於第一個作業,機器$A$所花費時間$x$的取值範圍是$0 \le x \le a_1$。當$x\lt0$時,設$F[1,x] = \infty$。$x=0$時,$F[1,0]=3$,此時$max(0,F[1,0])=3$,即機器$A$花費$0$時間,機器$B$花費$3$時間;$x=1$時,$F[1,1]=3$,$max(1,F[1,1])=3$;$x=2$時,$F[1,2]=0$,$max(2,F[1,2])=2$,此時作業$1$由機器$A$來處理,花費$2$時間,而機器$B$不處理作業。
對於第二個作業,的取值範圍是。當時,同樣設。
,,所以;
,,所以;
,,所以;
,,所以;
,,所以;
,,所以