2011年3月16日水曜日

Cookの定理 その1


では、Cookの定理を説明しましょう。 

ピタゴラスの定理は知ってますか?

Cookの定理じゃなかったの?と思いになったあなたは正解です。しかし、まず、定理に名前がつくということを説明したいのです。

ピタゴラスの定理は、別名三平方の定理とも言って、直角三角形においては、

(長辺の長さの二乗)=(短辺の長さの二乗)+(もう一つの短辺の長さの二乗)

ということでした。

ピタゴラスはWikipedia(http://ja.wikipedia.org/wiki/ピタゴラス)によると、生没年は、紀元前582年 - 紀元前496年ですから、約2500年ぐらい前にこの定理を発見したわけですね。それが現代にまで受け継がれ、これからずっとおそらく人類の文明が続く限りピタゴラスの名前は定理として残るわけです。

つまり、それくらい定理に名前がつくというのはすごいことなんですね。

Cookの定理も、Cook先生(Wikipedia:http://ja.wikipedia.org/wiki/スティーブン・クック)が発見した定理で、これも人類が続く限り永遠に受け継がれていくことでしょう。

では、Cookの定理です

【Cookの定理】

  SAT(充足問題)はNP完全である。


[証明のあらすじ]

まず、証明のあらすじを述べます。


NP完全であるという定義は、 

  1.LNP (言語LがクラスNPに属する)
  2.すべてのクラスNPに属する言語L’について
     L’


そこでまず、

手順1. SATがクラスNPである

と言うことを証明します。つぎに、


手順2. NTM完全にランダムな入力をTMで処理するという部分が
     多項式時間内でSATに変換できる

ということを証明します。


おっほん。 

では証明に入りますが、その前に、簡単に手順を説明します。証明は数回に分けて説明しますが、今回は、手順1 を説明します。後の、手順2 は、ほぼ機械的な作業です。例によって例のごとく数学ですから厳密にきちんと説明します。やれやれですね(笑い)


手順1SATがクラスNPであることは、意外と簡単ですので、自分で考えてみようという方は、今回の証明の部分を見ないようにして下さいね。




[証明]

手順1.SATがクラスNPである


SATがクラスNPであることは以下のように考えるとわかります。 

まず、m個のブール変数集合U上の節集合CがありCr個の節を持っているとします。 

節集合Cを充足する、という問題をここではSATとしましょう。 

ところで、節集合Cを充足するためのリテラルの組を探すためのプログラムMTM上の計算時間はどれくらいでしょう。 

ブール変数の取りうる値はT,F2値。これがm個あるので2m個掛け合わせた数、つまり、O2m)の時間が最大で時間がかかります。解がない、つまりSATnoの場合もあるから、最悪の場合、総当たりの必要があるのです。 

しかし、このSATyesとするリテラルの組がたまたま入力されていたとすると、TMで節集合Cを充足することがわかるためにかかる時間は最大でリテラルの数すなわち集合Uのブール変数の数m2倍に、節集合Cの節の数rをかけた数、オーダーで言えばOmr)ですから多項式時間で解けることがわかります。 

したがって、SATはクラスNPであるということが示されました。

(手順1終わり)



次回は、いよいよ本格的にCookの定理を説明し、そのことで、SATNP完全であるということ示します。敢然に完全に(となればいいなぁ。とほほ )!

0 件のコメント:

コメントを投稿

Etsuro.Honda@futarisizuka.org