【发布时间】:2018-12-03 21:03:03
【问题描述】:
我了解如何证明停止问题是不可判定的。但是,我对为什么它是 NP-hard 感到困惑。一个不可判定的问题是否等同于说它是 NP-hard 问题?
【问题讨论】:
标签: np-hard
我了解如何证明停止问题是不可判定的。但是,我对为什么它是 NP-hard 感到困惑。一个不可判定的问题是否等同于说它是 NP-hard 问题?
【问题讨论】:
标签: np-hard
如果从每个 NP 问题到该问题都存在多时间缩减,则称该问题为“NP 难”。
停机问题确实是 NP-hard,原因如下:
令 L 是一个 NP 问题,因为 L 在 NP 中,所以它是可判定的——因此有一个确定性的图灵机来判定 L,记为 M。现在我们可以创建 M',它模拟 M 并停止 i.f.f M接受 x(其中 x 是输入)。输入 x 的归约结果为 (M', x)。
将归约表示为 R 并且确实 x 在 L i.f.f R(x) 在 H 中。
(M(x) = 1 => M'(x) 停止 => (M', x) 在 H.
M(x) = 0 => M'(x) 不会停止 => (M', x) 不在 H)
为什么是约简多项式? M 的描述的大小可能非常大,但它是固定的。因此创建 M' 需要恒定的时间(可以将其视为 M' 在 R 中“硬编码”),因此减少是线性的,因此是多项式的。
由于归约的传递性(即,如果存在从 L1 到 L2 以及从 L2 到 L3 的(多项式/计算)归约(必须是相同的归约类型!),则存在从 L1 到 L3 的归约)足以证明从已知的 NP-hard 问题到新问题的简化,以证明新问题是 NP-hard,这是这样做的常用方法。在这个例子中,直接从定义中证明是很方便的。
对于您的另一个问题,答案是否定的。存在一个不可判定的问题,它不是 NP 难的。 你可以在这里看到一个证明: https://math.stackexchange.com/questions/642726/are-all-undecidable-problems-np-hard
请注意,如果 P=NP,则每个问题(平凡集除外)都是 NP 难的。所以证明假设 P != NP。
【讨论】: