这个问题是不是可以使用多项式时间算法,还是 NP-hard 问题?如果是,有人可以帮我吗?

Posted

技术标签:

【中文标题】这个问题是不是可以使用多项式时间算法,还是 NP-hard 问题?如果是,有人可以帮我吗?【英文标题】:Is a polynomial time algorithm possible for this question or is it a NP-hard problem? If yes, can someone help me with it?这个问题是否可以使用多项式时间算法,还是 NP-hard 问题?如果是,有人可以帮我吗? 【发布时间】:2021-06-10 07:16:59 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

该算法将这棵树中的顶点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是在根节点上调用算法的结果。

【讨论】:

以上是关于这个问题是不是可以使用多项式时间算法,还是 NP-hard 问题?如果是,有人可以帮我吗?的主要内容,如果未能解决你的问题,请参考以下文章

算分-NP COMPLETENESS

我需要解决一个 NP 难题。有希望吗?

NP-Hard问题和NP-Complete问题

算法时间复杂度和NP问题简介

机器学习周志华p=np是啥意思

算法课笔记系列——近似算法(Part1)