下面展開對line3條件判斷的討論,書中定理證明只要在D【i】(0<i<=n)非降序下能完成當且僅當J爲可行解,則可以通過考慮非降序情況代替整個集合J,
在這中把條件等價爲D(J(r)<=D(i))&&D(i)>r,這裏成功後是把i放在r+1,即r後面
前一個條件保證防止r位置上作業能調度,後一個保證i能正常調度,
line6爲根據D【i】的插入排序,D(J(r))!=r保證了i之後能正常調度
這種算法爲O(n^2)不是很好,於是又給出第二種
用並查集:
在這裏判斷條件等價爲
即i在Union中根j不能爲0,我認爲根就是空的時間片,當根爲0時就沒有時間片了
下面就使剛用過的時間片指向前一個的根(若前一個爲空時間片,則即爲根爲本身),時間爲O(n)。
疑惑:P(i)只是定義沒維護啊??
錯誤??沒有指向0的節點!
對於圓圈裏面:根顯示的是集合中元素的個數,節點裏顯示根。
另外Find函數進行了優化,查詢過程中會將查詢的放在第二層,加速下次查詢。
貪心---有限期排序到這了。。。