在树中查找k个顶点以覆盖最大边数

时间:2015-11-23 01:07:21

标签: algorithm dynamic-programming graph-algorithm greedy

我的想法是贪婪的。

我将E [i]保持为与顶点i连接的边数。

Repeat following k times:

    Every time I extract largest E[k] and add vertex k to the result set, and I decrease E[t] by 1 for every vertex t adjacent to k.

    Set E[k] = 0;

然而,我不知道我的想法是否对..我不知道如何证明。

如果没有,解决这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

这种贪婪的方法是不正确的

让我们考虑要求您计算出 下图中有4个节点可以覆盖(k = 4):

enter image description here

您的算法将选择节点1 ,然后从{2,3,4,5} 中选择 3个节点。

通过此选择,您将覆盖 7条边线,相反,您可以选择节点2、3、4和5并覆盖所有8条边线!