找到具有特定权重的某个节点的循环路径

时间:2012-08-13 14:00:15

标签: java algorithm graph-theory

我正在尝试构建导航应用。我试图想一个算法来找到一个包含某个节点的循环路径并总结到一定的权重。 算法的输入将是节点和权重。

示例:algo(a,30) - 算法将返回一个路径,该路径可以从节点A开始并在节点A中完成,其总和为30。

额外信息:对于所有w:权重w> 0,图表是方向性的(如街道所示)。

谢谢你 伽

2 个答案:

答案 0 :(得分:1)

这个问题比Hamiltonian Cycle Problem更强(更难)。因为如果我们已经有了这个问题的解决方案algo(a,b),对于任何汉密尔顿循环问题 P ,我们可以设计一个权重= 1的新图形,用于< strong> P ,0表示边缘不是,然后使用algo(1,n)查找哈密顿循环,其中n是图中的节点数。所以我们在这里遇到NP完全问题。

对于小n的应用程序,具有某些“修剪”的强力搜索应该足够快。

答案 1 :(得分:1)

一般问题是NP-Hard,并且可以从longest path problem减少,因此是NP-Hard,并且没有已知的多项式解决这个问题(并且一般假设是这样的解决方案吗?不存在)。

最长的路径问题是:给定权重函数G的图w和一对顶点uv - 找到{{{}的最长路径1}}到u

<强>证明:
假设你的问题有一个多项式算法 - 人们可以建立一个最长路径问题的算法,二进制搜索(指数增加所需权重,直到没有解,然后 - 二分搜索)。每个步骤都是多项式的,并且有v个步骤。由于O(log|PATH|)是输入中的多项式(假设是简单的pathes),因此算法是多项式的。

它也与Hamiltonian Path ProblemTraveling Salesman Problem

密切相关