MathLabs
定理証明済み

1つのNP完全問題が易しければPとNPは崩壊する

内容

BB がNP完全であり、かつ B∈PB \in P であるならば、P=NPP = NP である。

なぜ正しいのか?

BB がNP完全であることは、すべてのNP問題が多項式時間で BB のインスタンスとして書き換えられることを意味する。もし BB 自身が多項式時間で解けるなら、書き換えのステップと解くステップを連結することで、元のNP問題も多項式時間で解けることになる — したがって、扱いやすいNP完全問題がたった1つあれば、すべてのNP問題を道連れにしてPまで引きずり下ろす。

証明の概略

BB がNP完全であり、BB を時間 O(nk1)O(n^{k_1}) で解くアルゴリズムがあるとする。任意の A∈NPA \in NP を取る;BB のNP完全性より A≤pBA \le_p B であり、これは AA のインスタンスを BB のインスタンスに写し、イエス/ノーの答えを保つ、時間 O(nk2)O(n^{k_2}) で計算可能な帰着関数 ff が存在することを意味する。

AA に対する長さ nn の入力 xx について、まず f(x)f(x) を計算する:これには時間 O(nk2)O(n^{k_2}) かかり、特に出力 f(x)f(x) の長さは高々 O(nk2)O(n^{k_2}) である(多項式時間アルゴリズムは実行時間より多くの出力を書き出せない)。次に f(x)f(x) に対して BB の多項式時間アルゴリズムを実行する:∣f(x)∣=O(nk2)|f(x)| = O(n^{k_2}) なので、これには時間 O((nk2)k1)=O(nk1k2)O\big((n^{k_2})^{k_1}\big) = O(n^{k_1 k_2}) かかる。

全体の実行時間は O(nk2)+O(nk1k2)=O(nk1k2)O(n^{k_2}) + O(n^{k_1 k_2}) = O(n^{k_1 k_2}) であり、依然として nn に関する多項式である(2つの多項式の合成は多項式である)。帰着の正しさより、xx が AA の「はい」インスタンスであることと f(x)f(x) が BB の「はい」インスタンスであることは同値なので、この組み合わせた手続きは AA を多項式時間で正しく判定する。

A∈NPA \in NP は任意だったので、すべてのNP問題は多項式時間アルゴリズムを持つ、すなわち NP⊆PNP \subseteq P である。常に成り立つ包含 P⊆NPP \subseteq NP と合わせて、P=NPP = NP が得られる。

この定理を使うトピック

ステップごとの証明

この定理のステップごとの証明はまだありません。

参考文献

  1. Stephen A. Cook (1971). The Complexity of Theorem-Proving Procedures · DOI:10.1145/800157.805047
  2. Michael Sipser (2012). Introduction to the Theory of Computation
  3. Michael R. Garey, David S. Johnson (1979). Computers and Intractability: A Guide to the Theory of NP-Completeness
  4. Clay Mathematics Institute (2000). P vs NP Problem