【发布时间】:2013-08-15 12:11:10
【问题描述】:
在传统的加权区间调度问题中,我们有一个权重为 w_j 的区间列表 {i_1, ..., i_n}。解决加权区间调度问题的算法是here,是一个基本的动态规划问题。但是,如果在调度中,选定间隔的权重取决于它之前的间隔的权重(反过来,权重取决于顺序),会发生什么?一个例子是w_j' = w_j'*(w_(j-1)' + 1),其中已启动的变量是内在权重,未启动的权重是考虑到顺序的“实际”权重,即您实际用于目标函数的权重。这个问题是NP难的吗?听起来确实如此。
编辑:为了使这更容易(也更现实),让我们假设离散的单位时间。
【问题讨论】:
-
仔细研究这个问题,我想知道为什么我们不能只使用 DP 以便子问题是“我们可以在时间 t 之前完成什么并以工作 j 结束”而不仅仅是“在时间 t 之前我们能完成什么”
-
@DennisMeng 因此,您的建议是迭代开始/结束时间,例如,查看结束时间为
t的所有作业,然后尝试使用以前的计算将它们放入计划中通知链的其余部分,然后转到t+1? -
如果通过“使用以前的计算来通知链的其余部分”,你的意思是“使用以前的计算来找出我从一开始就可以做的最好的事情
t”,那么我认为你有正确的想法。我的建议与原始问题中所做的主要区别在于,当我们查看以前的计算时,我们不仅关心我们计算到什么时间,还关心上次使用的工作是什么那个计算。 -
@DennisMeng 好的,谢谢。最后一件事:如果我理解你在说什么,你的建议是默认计算重量所涉及的函数都在增加。例如,如果其中一个函数是
f(x) = 1/(|x| + 1),并且我们打算将前面间隔的权重总和提供给它,那么我们希望这些权重的总和尽可能接近于零。这通常会破坏算法。 -
嗯,我想这是真的。感谢您清理那部分。
标签: algorithm scheduling intervals