簡體   English   中英

可變權重的加權間隔調度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM