貪心--有限期排序--算法實現

下面展開對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函數進行了優化,查詢過程中會將查詢的放在第二層,加速下次查詢。

貪心---有限期排序到這了。。。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章