为什么 TSP NP-hard 而 Hamiltonian 路径 NP-complete?
Why is TSP NP-hard while the Hamiltonian path NP-complete?
为什么这两个问题 TSP and Hamiltonian path problem 都不是 NP 完全问题?
它们看起来一模一样。
NP-hardness 和 NP-completeness 的定义既相关又不同。具体来说,如果 NP 中的每个问题都在多项式时间内归结为 NP 问题,则该问题是 NP-hard 问题;如果问题既是 NP-hard 问题又是 NP 问题本身,则该问题是 NP-complete 问题。
class NP 由决策问题组成,即具有 yes/no 答案的问题。结果,TSP 不能在 NP 中,因为预期的答案是一个数字而不是是或否。因此,TSP可以是NP-hard的,但不能是NP-complete的。
另一方面,哈密顿路径问题要求yes/no答案,而且恰好是NP。因此,由于它也是 NP 难的,所以它是 NP 完全的。
现在,您可以通过将问题从 "what's the cheapest path?" 更改为 "is there a path that costs X or less?," 来获取 TSP 并将其转换为决策问题,并且后一个公式属于 NP 并且恰好是 NP-complete。
要使问题 X NP-complete,它必须满足:
- X在NP中,给定X的解,可以在多项式时间内验证解。
- X 在 NP-hard 中,也就是说,每个 NP 问题都可以在多项式时间内归约到它(你可以通过从已知的 NP-hard 问题归约来做到这一点(例如哈密顿路径))。
有两个版本的旅行商问题 (TSP):
- 优化版(可能就是你看的那个),即求TSP的最优解。这不是决策问题,因此不能在 NP 中,但是在 NP-hard 中可以通过 Hamiltonian Path reduction 证明。因此这不是一个NP完全问题。
- 决策版本 - 给定一个整数 K 是否有一条路径通过图中每个顶点的长度 < K?这是一个决策(yes/no)问题,一个解决方案可以在多项式时间内验证(只需遍历路径并查看它是否触及每个顶点)所以它在 NP 中,但它也在 NP-hard 中(通过与上述相同的证明)。由于它满足NP完全性的两个要求,因此它是一个NP完全问题。
为什么这两个问题 TSP and Hamiltonian path problem 都不是 NP 完全问题?
它们看起来一模一样。
NP-hardness 和 NP-completeness 的定义既相关又不同。具体来说,如果 NP 中的每个问题都在多项式时间内归结为 NP 问题,则该问题是 NP-hard 问题;如果问题既是 NP-hard 问题又是 NP 问题本身,则该问题是 NP-complete 问题。
class NP 由决策问题组成,即具有 yes/no 答案的问题。结果,TSP 不能在 NP 中,因为预期的答案是一个数字而不是是或否。因此,TSP可以是NP-hard的,但不能是NP-complete的。
另一方面,哈密顿路径问题要求yes/no答案,而且恰好是NP。因此,由于它也是 NP 难的,所以它是 NP 完全的。
现在,您可以通过将问题从 "what's the cheapest path?" 更改为 "is there a path that costs X or less?," 来获取 TSP 并将其转换为决策问题,并且后一个公式属于 NP 并且恰好是 NP-complete。
要使问题 X NP-complete,它必须满足:
- X在NP中,给定X的解,可以在多项式时间内验证解。
- X 在 NP-hard 中,也就是说,每个 NP 问题都可以在多项式时间内归约到它(你可以通过从已知的 NP-hard 问题归约来做到这一点(例如哈密顿路径))。
有两个版本的旅行商问题 (TSP):
- 优化版(可能就是你看的那个),即求TSP的最优解。这不是决策问题,因此不能在 NP 中,但是在 NP-hard 中可以通过 Hamiltonian Path reduction 证明。因此这不是一个NP完全问题。
- 决策版本 - 给定一个整数 K 是否有一条路径通过图中每个顶点的长度 < K?这是一个决策(yes/no)问题,一个解决方案可以在多项式时间内验证(只需遍历路径并查看它是否触及每个顶点)所以它在 NP 中,但它也在 NP-hard 中(通过与上述相同的证明)。由于它满足NP完全性的两个要求,因此它是一个NP完全问题。