[英]Weighted interval scheduling with variable weights
在傳統的加權間隔調度問題中,我們有一個權重為w_j
的間隔列表{i_1, ..., i_n}
。 這里給出了解決加權區間調度問題的算法,它是一個基本的動態規划問題。 但是,如果在時間表中選定間隔的權重取決於其之前的間隔的權重(進而取決於順序),那么會發生什么情況呢? 一個示例是w_j' = w_j'*(w_(j-1)' + 1)
,其中素數變量是w_j' = w_j'*(w_(j-1)' + 1)
重,未素數權重是考慮順序的“實際”權重,即您實際用於的權重目標函數。 NP這個問題難嗎? 聽起來確實像。
編輯:為了使此操作更容易(也很現實),讓我們假設離散的單位時間。
好吧,我知道了。 該算法是(如果我錯了,請糾正我):
for t in times:
if is_first(t):
best_candidate = None
else:
best_candidate = best(t - 1)
for interval in intervals if interval.end_time is t:
value_i = f(best(interval.start_time) + interval)
value_candidate = f(best_candidate)
if value_i > value_candidate:
best_candidate = best(interval.start_time) + interval
best(t) = best_candidate
return best(times[-1])
其中收集times, intervals
是時間times, intervals
的潛在時間停止以及時間間隔本身,而f
是目標函數。
迭代之間的常數為:在完成時間t
的迭代之后, best(t)
是以t
結尾的最佳調度。 注意,由於初始化步驟的緣故, best(t) == best(t - 1)
是可能的。 還要注意,正如我的評論所述,這僅在f
為單調遞增的情況下才有效,因為f
打算基於其之前的間隔應用於每個單獨的間隔。 我在這里以速記方式使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.