【问题标题】:weighted interval problem with dynamic programming动态规划的加权区间问题
【发布时间】:2018-10-04 03:55:47
【问题描述】:

我正在处理加权区间问题。在传统的公式中,我们有一个权重为 w_j 的工作列表 {i_1, ..., i_n}。我从 Kleinberg 和 Tardos 的“算法设计”一书中找到了一种非常简单的方法,其中动态编程基于最初按完成时间排序间隔 (https://www.cs.princeton.edu/courses/archive/spr05/cos423/lectures/06dynamic-programming.pdf)。该算法利用了概念 p_j(前身),它是与作业 j 不冲突的最大作业 i。然而,在我的具体情况下,我正在处理一个问题,即有几个工作具有相同的完成时间,所以我会有几个 p_js。因此,我不确定这种 DP 方法对于我的问题有多直接或合适。你有什么建议吗?

【问题讨论】:

    标签: algorithm scheduling intervals


    【解决方案1】:

    请注意,您需要使用 <= 而不是 < 运算符来订购作业:

    对于这个公式,您是否有多个工作具有相同的结束时间并不重要。

    p(j)是相同完成时间的作业中索引最大的一个。

    【讨论】:

    • 感谢您的回复。我知道 p(j) 是具有相同完成时间的作业中索引最大的一个。所以这意味着如果我有,假设有 10 个工作具有相同的完成时间,我将不得不为所有 10 个工作计算 OPT(p(j))?如果是这样,在我看来,DP算法正在失去的是“权力”。如果我遗漏了什么,请告诉我。
    • @Michele 不完全是。 OPT(j-1) 会处理它,无论如何它都会检查所有其他具有相同完成时间的工作。如果你使用记忆化,那么你不需要再次重新计算相同的OPT(k),这就是增益。
    猜你喜欢
    • 2020-06-20
    • 2011-09-23
    • 2011-10-17
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    相关资源
    最近更新 更多