貪心法之最小延遲調度問題


1.最小延遲調度問題描述

f(i) 表示某任務 開始的時間。

ti  表示 某任務 加工的時間

di  表示 某任務 要求完成的時間

延遲:  f(i)+ti-di

如果  實際完成的時間 小於 規定完成時間,那么,就沒有 延遲。延遲就是拖延,如果你在規定時間內(<=規定時間),那么,就說明沒有延遲,沒有拖延。

由於有很多用戶,所以,會有很多不同的拖延值,我們的目標是,求得所有拖延值中的最大值,並使得這個最大的拖延值 最小。Min(Max拖延值)

2.舉例理解調度問題

f1(1)為什么為0 ,因為 f(1)=0,t1=5,而 d=10,就是說,用戶一在規定時間內完成了任務,當然沒有延遲。

用戶二的延遲:13-12=1

用戶三的延遲: 17-15=2 

用戶四的延遲: 27-11=16

用戶五的延遲: 30-20=10

 所以,在這個調度的條件下,最大的延遲是 第四個用戶:16.

按照規定的截止時間安排,這里D的順序是: {10,11,12,15,20}

對應客戶需要加工的時間排序就變成了:{5,10,8,4,3}

 用戶一的延遲為: 因為 5<10,所以,延遲為0

 用戶二的延遲為: 23-12=11

 用戶三的延遲為: 27-15=12

 用戶四的延遲為: 15-11=4

 用戶五的延遲為: 30-20=10

 在這種情況下,最大的延遲是 12.

可見,不同的調度策略,得到的最小調度延遲值是不一樣的。

 

對於貪心算法,如果要驗證策略的正確性,可以通過舉反例的方式。

對於策略1,按照 加工時間的長短 安排,肯定是 用戶一 先安排,此時,用戶一的 需要1個時間單位完成,用戶二在 第11個時間單位  完成, 用戶一沒有時間延遲,用戶二的時間延遲為 1 。

但是,如果我們先加工第二個任務,任務二在 第10個時間單位結束, 規定結束時間為10 ,此時的延遲為0 。第一個任務的加工時間為1,結束時間是 11,此時, 11<100,延遲也為 0 。

對於策略 2: 根據 d-t 的大小,我們應該優先安排 用戶二,此時用戶一的時間延遲是  11-2=9. 用戶二的時間延遲為0。 但是,我們如果優先安排用戶一,此時用戶一的時間延遲是0,用戶二的時間延遲是1.  1<9

對於策略 3,是正確的,我們看看偽碼

 

 對於剛剛這個實例是正確的,那么,對於所有的實例是不是都正確呢,下面給出正確性證明:

 

參考:北大《算法設計與分析》公開課


免責聲明!

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



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