【发布时间】:2019-07-02 05:37:58
【问题描述】:
我正在尝试使用动态编程来理解树分解中的最大独立集问题。但是,我无法在建议的算法中获得“分隔符”的概念。有人可以让我清楚这一点。提前致谢。
【问题讨论】:
标签: tree dynamic-programming graph-theory graph-algorithm
我正在尝试使用动态编程来理解树分解中的最大独立集问题。但是,我无法在建议的算法中获得“分隔符”的概念。有人可以让我清楚这一点。提前致谢。
【问题讨论】:
标签: tree dynamic-programming graph-theory graph-algorithm
分隔符 是顶点的子集,移除后会留下具有多个连通分量的图。如果每个连接的组件的顶点数少于原始图的一半,则分隔符是平衡的。
低树宽的图有一个小的平衡分隔符。更准确地说,树宽为 k 的图具有最多 k+1 个顶点的平衡分隔符。
算法利用这一点如下:
从图中移除一个小的平衡分隔符
递归地找到连通分量的最优解
再次添加分隔符(可能逐个顶点),并使用连通分量的解来找到整个图的最优解。
要使上述方案高效,需要满足几个要求:
第一步中的分隔符很小(即大小不变)
第二步中的连通分量比原始图的顶点数要少得多(即一个常数分数,例如 1/2)。
以上属性被继承到诱导子图(否则无法高效递归)
连通分量的部分最优解可以有效地组合成整个图的最优解
低树宽的图满足了这些要求 - 除了最后一个:这个是针对每个优化问题的,这就是算法设计者撰写研究论文的内容。
(图片来自vertex separator 上的维基百科文章。)
【讨论】: