1

在 Tim RoughGarden 在 Coursera 上的 Algorithms-II 课程中,在解释 0-1 背包问题时,他提到了以下内容,我引用了

“通过从背包容量中取出 Wn,在我们查看剩余子问题之前,我们实际上为项目 N 保​​留了一个缓冲区,如果我们需要它,这就是我们知道当我们把 N 保留回来时我们是可行的到这个解决方案 S* 中。这类似于删除路径的倒数第二个顶点,再次作为缓冲区,以确保当我们将第 N 个顶点包含回独立集问题时的可行性。

请解释一下背包问题和最大独立集问题之间的比较。它们是如何相互关联的。尽管我搜索过

http://en.wikipedia.org/wiki/Independent_set_(graph_theory)

但找不到两者之间的任何关系。

4

1 回答 1

2

我理解这个片段的方式,作者试图解释如何从当前问题中获得更小的子问题。

在背包的情况下,他的意思是,例如给定重量{5, 3, 7, 1, 4}和大小为 的背包15,您可以通过选择第一项并查看剩余空间来创建子问题。也就是说,剩下的问题是解决背包问题{3, 7, 1, 4}和背包大小10(注意这只是解决方案的一部分)。

在独立集合中,您有类似的东西。给定 vertices{A, B, C, D, E}和 edges ,您可以通过选择第一个顶点 ( ) 并查看剩余的图{(A, B), (A, D), (B, C), (C, D), (C, E), (D, E)}来创建子问题。A的所有邻居都A需要被删除,所以剩下的问题是找到一个独立的顶点{C, E}和边集{(C, E)}

不过,我必须说,这种相似性有点牵强。

于 2013-08-06T11:52:41.430 回答