Algorithm 对于这个问题,多项式时间算法是可行的还是NP难问题?如果是,有人能帮我吗?

Algorithm 对于这个问题,多项式时间算法是可行的还是NP难问题?如果是,有人能帮我吗?,algorithm,data-structures,dynamic-programming,greedy,divide-and-conquer,Algorithm,Data Structures,Dynamic Programming,Greedy,Divide And Conquer,我们已经得到了树,比如说T和顶点集V,现在尝试给出一个算法来找到顶点W的最小值基数子集。给定集合V中的每个顶点都有一条边,集合W中至少有一个顶点。这可以通过递归算法在线性时间内解决。首先为树选择一个根,并为每个顶点构建一个子节点列表。如果子树中的每个顶点(可能除了子树的根)都在集合中或与集合的一个成员相邻,那么我们说一组顶点“覆盖”了一个子树 该算法将该树中的一个顶点v作为输入,并返回一个由三个数字组成的元组,这三个数字是覆盖v子树的子集的最小基数,这些子树分别(a)包括顶点v,(b)不包括v,

我们已经得到了树,比如说T和顶点集V,现在尝试给出一个算法来找到顶点W的最小值基数子集。给定集合V中的每个顶点都有一条边,集合W中至少有一个顶点。

这可以通过递归算法在线性时间内解决。首先为树选择一个根,并为每个顶点构建一个子节点列表。如果子树中的每个顶点(可能除了子树的根)都在集合中或与集合的一个成员相邻,那么我们说一组顶点“覆盖”了一个子树

该算法将该树中的一个顶点
v
作为输入,并返回一个由三个数字组成的元组,这三个数字是覆盖
v
子树的子集的最小基数,这些子树分别(a)包括顶点
v
,(b)不包括
v
,但至少包括
v
的一个子树,以及(c)既不包括
v
也不包括
v
的任何子项

该算法的基本情况是,当输入
v
为叶节点时,返回元组
(1,0,0)
。在递归的情况下,元组
(a,b,c)
可以根据递归调用
v
的子级的算法的结果来计算。我不会为你解决整个问题,而是让你自己去想办法

最后的答案是
min(a,b,c+1)
其中
a,b,c
是在根节点上调用算法的结果