哈密​​顿循环算法

时间:2013-11-10 18:20:07

标签: algorithm graph pseudocode hamiltonian-cycle

我正在寻找一些哈密尔顿循环算法,但我找不到任何实现,甚至没有一个伪代码!我甚至不需要输出循环,只需检查图表是否有一个循环。输入是具有V顶点和E边的图。此外,我想有一个算法来检查图形是否有哈密顿路径。我不需要输出路径,只需检查它是否有路径。两者都应该是多项式时间。

2 个答案:

答案 0 :(得分:1)

问题是NP-Complete问题之一。

强力算法只是创建所有排列并检查其中一个是否是可行的解决方案。

检查可行性:
让当前排列为v1,v2,...,vn:如果每个i在图表中都有边v_i -> v_(i+1),还有v_n->v1 - 则解决方案是可行的。


另一种方法是创建图G'=(V,E',w),其中新边E' = VxV(所有边)和权重函数为:

w(u,v) = 1 if there is an edge (u,v) in the original graph
         infinity otherwise.

现在你得到了Traveling-salesman problem,可以通过O(n^2*2^n)

中的动态编程来解决它

答案 1 :(得分:1)

除非P = NP,否则在多项式时间内不能确定一般图的汉密度。

http://fhcp.edu.au/slhweb/存在在线HCP启发式,您可以在其中上传图表并对其进行测试,但如果您需要自己的功能,则需要自己编写,或者拼接其他人的功能。 Andrew Chalaturnyk写了一个非常好的算法。