给定一个具有无向边的树,其中顶点的权重是其度,找到最小权重的顶点覆盖。
这就是我的想法:
由于顶点覆盖需要包含足够的顶点来覆盖所有边,这意味着无论覆盖中的顶点如何,所有顶点的权重之和都将相同(等于边数) 。因此,我们不需要任何特殊的算法来找到答案,我们只需要找到最小尺寸的顶点覆盖(覆盖最小顶点)。
这是正确的,还是我错过了一些明显的东西?
答案 0 :(得分:3)
这是正确的,还是我错过了一些明显的东西?
两个具有相同边缘的顶点;如,...
A -- B -- C
Weights:
B = 2;
A = 1;
C = 1
{ A, C }
和{ B }
都是您定义的加权最小顶点覆盖。
只有{ B }
是标准的最小顶点覆盖。
编辑: ...显示不同原因的更好示例:
A -- B -- C -- D
Weights:
B = 2;
C = 2;
A = 1;
D = 1
{ A, C }
,{ B, D }
,{ B, C }
都是标准的最小顶点封面。
根据您的定义,只有{ A, C }
和{ B, D }
是加权最小顶点覆盖。直观地说,这是因为{ B, C }
顶点覆盖率会使B -- C
边缘计算两次。
第一个反例示例反驳所有加权MVC(根据您的定义)是标准MVC。第二个反例证明所有标准MVC都是加权MVC。
经过一番思考......你是正确的,因为树的加权MVC是任何VC,其成本等于边数。
找到加权MVC实际上非常简单。如果你将树绘制出来,并从每一个级别中选择所有顶点(如果从第一级或第二级开始都无关紧要),你最终会得到一个有效的加权MVC(由于所有边都被覆盖,没有边缘被计算两次)。
...更一般地说,所有加权MVC的集合是不包含邻居的所有VC的集合。例如,在没有子节点的父树中,叶节点集也是有效的加权MVC。