加權區間調度問題是這樣的:給定一組加權區間,選擇一組非加權區間,使得總權重最大。加權間隔x可由三元組表示,其中 s = x的開始時間,f = x的結束時間,v = x的權重或值。這些加權間隔可以用三元組 (0,3,3)(1,4,2)(0,5,4)(3,6,1)(4,7,2)(3,9,5)( 5,10,2)(8,10,1) 編寫一個程序來計算加權區間調度問題的解決方案。 這裏是圖的一個圖: http://imgur.com/vZn04xn在java中使用遞歸的加權區間調度
程序應該打印出最佳 溶液的總重量的值和所選擇的時間間隔的索引。在上述情況下,輸出 會是類似的(此輸出不正確) 最佳值:7 間隔序列:2 5 程序務必使用遞歸。
用於計算的最佳值的算法爲: 輸入:N,S1,...,SN,F1,...,FN,V1,...,VN通過結束時間
排序作業所以f1> f2> ...> fn。 (1),p(2),...,p(n) 其中p(j)=最大索引i < j使得作業i與j兼容。
for j = 1 to n
M[j] = empty <-- solution table
M[j] = 0
M-Compute-Opt(j) {
if (M[j] is empty)
M[j] = max(wj + M-Compute-Opt(p(j)), M-Compute-Opt(j-1))
return M[j]
}
我創建了一個具有3個整數的類:開始,結束和重量。 我有一個類型的作業數組,每個大小爲8的數組中的每個不同的間隔。 問題: 如何爲每個作業間隔計算p?