【问题标题】:Maximum-weight independent set problem for a path graph路径图的最大权重独立集问题
【发布时间】:2019-05-23 21:56:35
【问题描述】:

在学习Algorithms: Design and Analysis II 课程时,其中一个问题是关于路径图的最大权重独立集问题。下图是问题陈述的(模糊)截图,YouTube上有相应的讲座视频:

https://www.youtube.com/watch?v=0awkct8SkxA

https://www.youtube.com/watch?v=pLOkbHGRsv0

https://www.youtube.com/watch?v=Im_zjFkZDCY

这个问题可以通过动态编程优雅地解决,只需要一行代码。

a[i] = max(a[i - 1], a[i - 2] + w[i])

问题如下:

以下哪项适用于我们的动态规划算法 用于计算路径图的最大权重独立集? (假设没有关系。)

  • 只要输入图至少有两个顶点,算法就永远不会选择最小权重的顶点。
  • 算法总是选择最大权重的顶点。
  • 如果一个顶点被排除在两个连续子问题的最优解之外,那么它就被排除在所有的最优解之外 更大的子问题。
  • 如果一个顶点被排除在子问题的最优解之外,那么它就会被排除在所有更大的最优解之外 子问题。

事实证明,正确答案是#3,这有点直观,因为子问题的最优解仅取决于前两个子问题的解。但我不清楚为什么选项 1 和 2 不正确。由于该算法会查看所有顶点,因此这两个选项似乎也应该是正确的。

【问题讨论】:

  • 如果要修改问题以找到具有 n 个顶点的循环 C 中的最大 IS,那么方程/解决方案将是什么 v1。 . . vn(对于每个 i
  • @RedApple 提出一个新问题,不要劫持这个问题。

标签: algorithm dynamic-programming graph-theory


【解决方案1】:
the algorithm never selects the minimum-weight vertex.

考虑:**3-100-4-1-5-100-6 选择最小值 1 是有意义的,因为我们要选择两个 100

The algorithm always selects the maximum-weight vertex.

考虑:5-99-100-99-7

排除最大值以支持到 99 是有意义的

对于这两个示例,请尝试了解该算法会做什么以及为什么会起作用。

推理这类问题的一个好方法是尝试 (0,0,0,1,1,1,2,2,2,3,3,3,99,99,99,100,100,100) 的所有排列它应该为您提供大部分可能性。

【讨论】:

  • 你的反例有关系,这是问题所不允许的。 a 的前三个条目将是 02max(2, 0 + 2) - 最后一个是不允许的。
  • 一旦我更好地理解了选择逻辑,我就能想出自己的反例。 10-2-1-4 选择 min 时,1-3-10-9 未选择 max 时。我会接受你的回答,因为它能让我更好地理解。
【解决方案2】:

这里的操作:为了完整起见,这是一个完整的答案,灵感来自@robert-king 的答案。

考虑路径10-2-1-4。算法选择的顶点是10, 1,其中1,最小值,被选中。因此,选项 1 不正确。

考虑路径1-3-10-9。算法选择的顶点是3, 9,其中最大的10没有被选择。因此,选项 2 不正确。

考虑路径1-9-7-1-5。算法选择的顶点是1, 7, 5。但是,7 并未包含在子问题1-9-7 的最优解中。注意,7 也没有包含在子问题1-9-7-1 的最优解中,因为它的前一个顶点“更重”,并且由于所有权重都是正的,所以下一个权重和更重的顶点之和肯定是大于7。因此,选项 4 不正确。

选项 3 是正确的。这源于归纳,因为子问题的最优解仅取决于前两个子问题的解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多