【发布时间】: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