给定k,一个正整数和一个连通图G =(V,E),E的每个e具有权重w(e),谁能提出一种算法来确定G是否具有一个重量k?
答案 0 :(得分:3)
您的问题很难解决。我们可以通过简化the subset sum problem的公式来证明这一点:
给出[…]自然数 w 1 ,…, w n ,它们的任何子集的总和是否恰好是 W ?
假设我们有一种可以解决您的问题的算法。然后,我们可以通过创建包含以下内容的图 G 来解决子集和的问题(在上面的公式中):
当且仅当您的算法为图 G 和 k = < em> W 。
了解原因:
当然,NP硬度并不意味着您无法做到。这只是意味着,对于所有可能的输入,没有一种正确的有效算法。
一种低效算法将生成所有可能的生成树,并查看其中是否有正确的权重。
您还可以更有效地检查一些可能的情况;特别是,您可以使用Kruskal's algorithm查找最小生成树,并(稍作修改)使用查找最大生成树。这样,您便可以快速消除可能的生成树权重范围之外的任何 k 。
消除 k 的许多值的另一种可能方法是使用一些算法解决子集和问题(在我上面链接的Wikipedia文章上),以确定图是否具有任何权重为 k 的子图。