Johnson算法是一種用于解決兩臺機器上的作業調度問題的算法,目標是使得完成所有作業的總時間最短。
Johnson算法的步驟如下:
將每個作業分為兩個操作,分別在兩臺機器上執行。給每個操作編號,例如,第一臺機器上的操作為1,2,3…,第二臺機器上的操作為4,5,6…。
根據每個操作在兩臺機器上的處理時間,計算第一臺機器上的作業完成時間和第二臺機器上的作業完成時間,分別記為TA和TB。
比較第一臺機器上的作業完成時間和第二臺機器上的作業完成時間。如果TA<TB,則選擇第一臺機器上的操作作為下一個執行的操作,并將其從待調度的作業列表中移除。如果TA>TB,則選擇第二臺機器上的操作作為下一個執行的操作,并將其從待調度的作業列表中移除。
重復步驟3,直到所有的操作都被執行完畢。
根據操作的執行順序計算作業的完成時間。
通過以上步驟,可以得到Johnson算法求解出的最優順序。