Aritalab:Lecture/Algorithm/CooksTheorem

From Metabolomics.JP
< Aritalab:Lecture | Algorithm
Revision as of 22:23, 30 October 2010 by Adm (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

クックの定理

クックは1971年に論理式の充足可能性問題がNP完全であることを証明しました。

参考文献 
Garey MR, Johnson DS "Computers and Intractability" WH Freeman & Co. 1979

論理式の充足可能性問題

ブール変数の集合 U = { u1, u2 ... um } に対する真偽の割り当て t: U → {T, F} を考えます。変数が m 個あれば、割り当てパターンは 2m 通りあります。 U に含まれる複数個のブール変数 u またはその否定 ¬u を ∨ (or) でつないだものを節といいます。 節が真になるとき、その節は充足されたといいます。 例えば{ u1, ¬u3, u8 } という節は、 u1 = F かつ u3 = T かつ u8 = F でない限り充足されます。(充足する真偽の割り当ては7パターンあります。)

節の集合 C が充足可能であるとは、C に含まれる節を全て充足するようなブール変数の集合 U に対する真偽の割り当て t が存在することをいいます。この定義を用いて、充足可能性問題 (SAT: Satisfiability Problem) は以下のように書けます。

「変数の集合 U 上の節集合 C に対して、それを充足する真偽の割り当てが存在するか?」

例えばU = { u1, u2 } において

C = { {¬u1, u2}, {u1, ¬u2} } は充足可能 ( u1 = u2 = T のとき)
C = { {¬u1, u2}, {u1, ¬u2}, {¬u1} } は充足不可能

となります。充足可能性を判定するには、2m 通りに近い真偽パターンを試す以外に方法が無いと考えられています。

Cookの定理

充足可能性問題 (SAT) はNP完全である

SATがNPに入ることは明らかです。正解となる論理変数の割り当てを知っていれば、節が充足されることを検証するのは簡単です(線形時間しか要しません)。 SATがNP完全であることを示すには、NPに属するあらゆる問題が、SATの一例とみなせることを示さなくてはなりません。

あらゆるNP問題を全て逐一、SATに変換していては埒が明きません。 そのかわり、非決定性チューリング機械 (NDTM) の全動作パターンを、SATで特定できることを示します。 入力文字列を x 、計算が終わるまでに必要な多項式時間ステップを p(n) (n = |X|) とします (受理状態も含めます)。 この時間内で、NDTMはテープ位置 -p(n) から p(n) + 1 の内側しか処理できません。

NDTMのパラメータ
状態数: |Q| = r (YES, NOに対応する受理状態も含みます)
記号数: |Γ| = v
利用可能なテープ位置: -p(n) から p(n) + 1 の間

時間ステップもテープ位置も有限ですから、これらに関する処理を有限個の変数で記述することが可能です。そのため、以下の変数を用意します。

 変数 意味 変数の個数
Qi,k 時間 i においてNDTMが状態 qkにある時に限り T 0 ≤ i ≤ p(n)
0 ≤ k ≤ r
Hi,j 時間 i においてNDTMのヘッドがテープ位置 j にある時に限り T 0 ≤ i ≤ p(n)
-p(n) ≤ j ≤ p(n) + 1
Si,j,k 時間 i においてテープ位置 j に記号 sk が書かれている時に限り T 0 ≤ i ≤ p(n)
-p(n) ≤ j ≤ p(n) + 1
0 ≤ k ≤ v
Personal tools
Namespaces

Variants
Actions
Navigation
metabolites
Toolbox