讓我們假設我們有n個時間表。每個時間表我有一個權重w(i),準備時間準備(i)和休息時間休息(i)。準備時間意味着如果我們選擇時間表i,我們不得不選擇時間表i - 準備(i),i - 準備(i)+ 1 ... i-1。部分重疊時間的加權活動選擇
休息時間,也就是說,如果我們選擇shedule我,我們有責任不要選擇shedules + 1,I + 2 ... 1 +休息(我)
我們的任務是選擇按照適當的時間表上述限制,以使W最大化。
注意:對於i = 1,我們忽略prep(i)。我們假設我們已經準備好了。對於i = n wh忽略rest(i)。
限制:一個計劃的準備時間可能會與另一個計劃的休息時間重疊。舉個例子,如果我們有休息(5)= 2,準備(8)= 2,我們可以選擇兩個時間表。休息(5)= 2意味着如果我們選擇5,我們不允許選擇6和7。 Prep(8)= 2意味着如果我們選擇8,我們不能選擇6和7。所以我們可以選擇5和8.
什麼是最適合這項任務的算法?
如果不是限制,我們可以說每個時間表都有開始時間i - prep(i)和結束時間i + rest(i)。我們會有一個加權的活動選擇問題,所以我們可以用貪婪算法得到最優的O(nlogn)。但限制破壞了我的計劃。