我有一个项目,如果它存在,我必须找到一个带有两种不同算法的无向未加权图中的哈密顿路径。我已经使用回溯实现了一个启发式算法,但我一直在寻找另一个,我似乎无法找到它。
所以我的问题是,除了使用回溯之外,您知道哪种算法可以找到汉密尔顿路径?
编辑:在查看其他几篇文章之后,我发现我们可以通过使用最长路径算法找到哈密尔顿路径,并检查路径的长度是否等于顶点数 - 1.我想知道这是否是真是假。提前致谢。
答案 0 :(得分:2)
由于哈密顿路径是NP完全的,你可能最终会遇到某种形式的回溯。无论您使用堆栈还是详尽的枚举来实现指数式爆炸,都取决于您。
如果您寻找配方,您可以查看各种TSP算法(我不太了解哈密尔顿路径技术)。考虑到利用三角不等式的任何东西都不适用,因为你的权重都是1和无穷大(边缘不存在)。
寻找不需要三角不等式的分支和切割TSP的配方。分支和切割似乎是最可靠的TSP解决方案的最先进技术。
使用最小生成树进行分支和绑定可能很好(它易于实现),并且您可以以迭代方式(在分支之间)使用节点权重来扩充最小生成树,作为一种破解方式<度数的节点> 2进入2级节点而不改变结果的正确性。我无法记住技术名称(而且我在工作,所以我无法查找)。但是你对MST的新距离指标是:
cost [i,j] =(exists(i,j)?1:infinity)+ node_augmentation [i] + node_augmentation [j]。
改变适当收敛的增强的规则稍微复杂一些(如果度[i]> 2则增加,如果度[i] <2则减少,但再次,我不能记住该论文(我想它可能是Held-Karp,但我可能会离开)。
不好意思得到一个糟糕的答案,我希望这可以帮助你寻找方法。由于我不太了解TSP技术如何应用于哈密尔顿路径技术,我可能没有帮助。