使用oracle机器在多项式时间内找到Hamilton路径

时间:2017-04-15 20:52:42

标签: algorithm hamiltonian-cycle

假设您有一个oracle可以确定(在多项式时间内)某个图中是否存在Hamilton路径。 (提醒:汉密尔顿路径问题在NPC中)。

在多项式时间内描述如何使用oracle在图中找到 Hamilton路径。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

汉密尔顿路径只访问每个顶点一次。

如果你有一个oracle,你可以依次测试删除每个边缘。如果oracle说仍然有路径,那么保持边缘被删除,否则恢复边缘并尝试下一个边缘。

一旦你经历了所有边缘,剩下的就是汉密尔顿路径。

答案 1 :(得分:1)

如果图中有n - 1条边,我们就完成了(它必须是一条链。否则,就没有哈密顿路径)。

否则,我们可以删除一些边缘。让我们遍历所有边缘。如果图形中没有固定边缘的路径,我们可以删除它并继续前进。

此解决方案需要O(m ^ 2)个oracle查询,因​​此它在多项式时间内工作。