1.P=NP?問題についての簡単な説明
・「改めてP=NP?って」では、P=NP?問題において専門的に知っておくべきごく簡単な事項の説明・解説をした後に、クラスPとクラスNPという問題において、クラスPの問題がクラスNPの問題に包含されるのは自明ですが、クラスNPがクラスPと等しいかどうかということを考えるときに、クラスNPの問題は、結局「NP完全」という定義をされている問題に置き換えられるということ、そして、この「NP完全」の問題が、クラスPの問題と同等であるかということが、問題の核心であるということを説明しています
2.参考文献
3.集合論的整数について簡単に
P=NP?問題を考えるにはあまり関係はないのですが、個人的に、どうしても、カントールの集合論を用いた整数についての考え方について触れておきたい、という個人的な考え方から書いた記事となります。ご参考までに
5.決定問題、チューリングマシン、クラスPについて
ここからは、いよいよP=NP?問題について、もう少し詳しく見ていくことになります。そこで、まず、クラスPに属する問題がどのような問題か、ということを説明するために、決定問題とチューリングマシンについて説明し、そのあとクラスPの定義を述べています。
そのあと、クラスPを定義して、TMが多項式時間つまりデータの長さnに対して、nの多項式で表せる式に比例した時間で処理できるような問題である、ということを説明しています
8.NP完全
NP完全について数学的に説明しています
最後に、「クラスNPに属するすべての言語L’が多項式時間でクラスNPに属するある言語Lに変換できる」ということを、第二の補題を使って証明した第三の補題を説明してこの記事は終わります
9.NP完全である「充足問題(SAT)」について
8.では、NP完全を定義し、P=NP?問題を考察するとき、クラスNPに属する問題についてはNP完全な問題だけを考察すれば良いということを説明しました
これからしばらくは、充足問題(以下SATと略す)というクラスNPに属する問題が、NP完全であるということを証明していきます。
まず、ここでは、充足問題(SAT)がどのような問題であるか、ということを説明します。次の10.におおいて、このSATがNP完全であるということを証明したCookの定理を解説していく、という手順になっています
・「充足問題 その1」では、ブール変数やリテラル、SATにおける節とはなにか、など、SATを扱う上で必要な知識の説明です
・「充足問題 その2」では、さらにSATを理解するために必要な「真理関数」と「充足」という概念を数学的に定義しています
・「充足問題 その3」では、いよいよSATについて定義しています。簡単にいえば、あるブール関数の有限集合が論理和(以下OR)と論理積(以下AND)で結合されている(これをSATでは節という)とき、この式を真(T)とするようなブール変数の値の組があるかどうかを求める問題、ということになるでしょう
10.Cookの定理ーSATがNP完全であることを証明する定理
上の9.で記述したSATがNP完全であることを証明したのがCookの定理です
・「Cookの定理 その1」では、まず、ピタゴラスの定理(三平方の定理)を例に挙げて、定理に名前が付くことが、どれくらい重要かということを説明したあと、これから証明する、SATがNP完全であることの証明のあらすじを、以下のように述べています
手順1. SATがクラスNPであると言うことを証明し、
手順2. NTMで完全にランダムな入力をTMで処理するという部分が
多項式時間内でSATに変換できることを証明する
このあと、「手順1.」について説明して、ここまでを終えています
・「Cookの定理 その2」以下その8まで、上記「手順2.」についてを説明しています。その2では、まず、大まかな証明の考え方と、処理回数、処理時間についての説明をしています
・「Cookの定理 その3」では、まず、TM(ここでは特にNTM)において、書き込まれたデータが処理時間と同等であるということを簡単に説明します。このような準備が終わったあと、以下、その8まで「手順2.」の実際にTMとしての処理が多項式時間内にSATに変換できることを説明していくことになります。その3では、まず、使用するブール変数についての定義を行っています。特にデータに関しては「すべてのデータに対して1対1で対応するブール変数があり、添え字がそのデータを示す」ということを引用して強調しておきたいと思います
・「Cookの定理 その4」では、まずNTMの状態を表すブール変数の定義を行っています。この他、このような定義下では、NTMが処理を行っている場合、状態を表すブール変数は、すべて真(これを真理値が与えられている、あるいは真理値をとる、という表現をします)となるということなどを説明しています。ここまでで、ようやく使用するブール関数についての定義が終り、実際にNTMをSATへ変換する為の手順について少し触れる、ということをしています
・「Cookの定理 その5」では、NTMの実際の処理における内部状態の遷移を例にとって、SATとして表現すること(以下SATへの変換と述べます)について説明しています。また、変換はG1~G6の6つで表せるということに少しだけ触れています
・「Cookの定理 その6」では、その5でも少し触れたNTMのSATへの変換G1~G6のうち、G1~G5について説明しています
マシンMLのi+1番目の状態は、
i番目の状態からチューリングマシンの状態遷移関数δ
によって決定される
について、SATへの変換を説明しています。これがかなりややこしいので、二回に分けています。その7では、NTMのヘッドにかかっていないテープのi+1番目の状態はi番目の状態と同じ、ということを説明し、その8では、ヘッドのある部分のテープのi+1番目の状態についてのSATへの変換ということについて説明しています。最後に、「最終的には節C=G1∪G2∪G3∪G4∪G5∪G6というSATがプログラムMLが入力xを受容する計算になっている」ということを述べ、これらが明らかに多項式時間で処理できるということについて触れて、以上のCookの定理についての説明を終わっています
11.ここからの進め方
ここまで、P=NP?問題を扱う上で、まず、この問題の概要を理解していただいた上で、クラスPとTM(チューリングマシン)が密接な関係にあること、同様にクラスNPがNTM(非決定チューリングマシン)と密接な関係にあるということを説明しました。その上で、クラスNPの問題を詳しく扱おうとするときに、NP完全な問題を扱えばよいということを述べ、Cookの定理によってSAT(充足問題)がNP完全であるというところまで説明しました
・「このブログを再開するに当たってのこれからの進め方」では、論理式が、サーキットと呼ばれるグラフ(節点・頂点と呼ばれるものを枝・辺などで結んだもの)として表現できることを述べ、このあと、グラフ理論を用いて解析していく過程を次のように端的に説明しています
1.一般的なサーキットがNP完全である事を証明する
1-1. サーキットがNP完全である事を証明するためにSATを変形した3SATがNP完全である事を証明する
1-2. 一般的なサーキットの問題のうちVC(頂点カバー)問題、独立セット問題、
クリーク(clique)の問題が本質的に同じ問題である事を示す
1-3. 上記の三つの問題のうちVC問題がNP完全ということ3SATを使って示す
2.一般的なサーキットの計算量を求める
2-1. 論理式がサーキットで表せる事を示す
2-2.サーキットの計算量の様々なクラスを考察する
2-3.ユニフォームという概念
3.モノトーン(否定のリテラルがない論理式)のサーキットが多項式時間以内で解けない問題である事を証明する
」
12.3SAT
上の11.でも説明したように、論理式からグラフ理論への展開のステップとして、まず、3SAT、すなわち、SATのうちすべての節が三つのブール変数で構成されているものについて
SAT∝3SAT
(NP完全であるSATが多項式時間以内に3SATに変換できるということ)
を示すことによって、3SATがNP完全であることを示していきます
・「3SAT その1」では、まず、3SATがNP完全であることの証明の方針として、上記のように SAT∝3SAT(NP完全であるSATが多項式時間以内に3SATに変換可能)であることを証明していくということに触れたあと、各節の要素(ブール変数)の数が3のときと1のときのSATが3SATに多項式時間以内で変換できるということを示しています
・「3SAT その2」では、SATから3SATへの変換を、変換元SATの節の数kによって分けて示しています。ただし、k>3のときに関しては、別途、次の「3SAT その3」で詳しく説明することにしています
・「3SAT その3」では、上記「3SAT その2」でも触れているように、SATの節の数が3より大きい場合の SAT∝3SAT について詳しく説明しています
・「サーキットというグラフ その1」では、グラフ理論についてごく簡単に説明し、一般的な論理式をグラフとして表現するサーキットというグラフについて定義しています
・「グラフ理論についての簡単なお話」では、グラフ理論の成り立ちや基本的な概念について簡単に説明しています
・「頂点カバー、独立セット、クリーク その1」では、グラフ理論におけるNP困難とされる頂点カバー、独立セット、クリークについての必要な知識やその定義、そのほか、これらがサーキットというグラフとの関連について簡単な説明をしています
頂点カバー、独立セット、クリークという問題が本質的に同じ問題であるということが示された後、頂点カバー問題をnp完全であるということを示すことで、これらすべての問題がNP完全であるということを示すことにします
・「頂点カバー問題がNP完全であるということ その1」では、頂点カバー問題がNP完全であるということをすでに証明された3SATに置き換えられる事でNP完全であるということを証明するという大まかな概要を述べています
・「頂点カバー問題がNP完全であるということ その2」では、3SATの問題を頂点カバー問題に翻訳するための方法をしてしています(注;2014/01/26 これについての証明はその3以降の予定です)
・「頂点カバー問題がNP完全であるということ その3」と
・「頂点カバー問題がNP完全であるということ その4」では
では、上記その2で、3SATの問題を頂点カバー問題に翻訳したものが、互いに同じ事であるかと言うことを証明することによって頂点カバー問題がNP完全であることを証明しています。
ここまで論理式をグラフに置き換えてP=NP?問題を扱う方法を考えてきました。ここからは、モノトーンと呼ばれる論理式についてグラフ理論を用いて計算する方法を説明していきます
・「サーキットというグラフの計算量 その1」では、ここまでの流れをまとめ、パリティとモノトーンという概念について定義を行っています
・「サーキットというグラフの計算量 その2」では、モノトーンのブール関数においてのmintermとmaxtermという言葉を定義したあと、min(f),Max(f)という集合の表記について説明します。また、モノトーンな論理式という事についても説明しています
・「サーキットというグラフの計算量 その3」では、これまで説明してきたパリティ関数の計算量について、リーフの数と深さを計算する方法を説明しています。その3はまず、その準備になります
・「サーキットというグラフの計算量 その4」では、その3につづき、証明の手続きに入ります。ここでは、まずKhrapchenkoの定理を証明しています
・「サーキットというグラフの計算量 その5」では、その4で証明したKhrapchenkoの定理を利用し、L(Parity(x1,x2,…,x2n))≧(nの2乗) という事を証明しています
・「サーキットというグラフの計算量 その6」では、パリティ関数の計算量について、リーフの数がL(Parity(x1,x2,…,x2n))=(nの2乗) という事を証明しています。ここでいったんサーキットの計算量についての説明は終わりになります。このあと、サーキットの計算量の様々なクラスを考察するんなどをし、その後、一般的なモノトーンサーキットの計算量について考察します。
・「サーキットの計算量の様々なクラス その1」では、ここから、ノードの入力の数(インデグリー)による計算量のクラスについて説明してきますが、その準備としていくつかの定義などを行っています。
・「サーキットの計算量の様々なクラス その2」では、NC^i、AC^iといった計算量のクラスの定義をしています。
・「サーキットの計算量の様々なクラス その3」では、その2で定義したユニフォームなクラスNC^i、AC^iといったクラスの計算量がクラスPであるということを述べています
「サーキットの計算量の様々なクラス 補足1」では、NC^i、AC^iといった計算量のクラスの定義を説明しましたが、数学基礎論的な補足説明を少し加えています。
・「サーキットの計算量の様々なクラス その4」 では、ノンユニフォームの場合を含めたNC^iやAC^iをここからしばらく検討していきます。今回は準備とこれまで説明してこなかった空間を計算量として見なす考え方についてもここではお話ししています。
・「サーキットの計算量の様々なクラス その5」では、ユニフォームの場合を含めたNC^iやAC^i、L、Pの包含関係や、NC^1の内容の検討が主な内容となります。
・「サーキットの計算量の様々なクラス その6」では、クラスPが多項式サイズのサーキットで表わされること、とれに伴う考察についてテキストの内容を紹介しています<
・「サーキットの計算量の様々なクラス その7」では、ここからノンユニフォームな多項式サイズのサーキットについて考察を始めるのですが、まずはいろいろな定義をしています。
・「サーキットの計算量の様々なクラス その8」では、P/Polyについての性質を定理として説明したものを取り上げています
・「サーキットの計算量の様々なクラス その9」では、最後に細く説明的な内容となりこの計算量のクラスの節を締めくくっています
モノトーンという条件の下にクラスPとクラスNPの派生クラスであるmPとmNPにおいてmP≠mNPという事に関してじっくりと検討していきます
・「 モノトーンそしてmP≠mNP その1」と
・「 モノトーンそしてmP≠mNP その2」では、まず検討に必要な定義をしています
・「 モノトーンそしてmP≠mNP その3」では、求める定理のを示し、その証明に関して必要な肯定的テストグラフ・否定的テストグラフや近似サーキットなど必要な事柄に関しての定義などを説明しています
・「 モノトーンそしてmP≠mNP その4」では、サーキットをリーフから部分サーキットに分けて近似サーキットに置き換えるやり方の節をしています。まずひまわりと花摘みについて説明しています
・「 モノトーンそしてmP≠mNP その5」では、サーキットを近似サーキットに置き換える際に行うひまわりの花つみについて、ひまわりが存在するかどうかの定理について説明をしています
・「 モノトーンそしてmP≠mNP その6」では、上「その5」で証明した定理を用い近似サーキットの定義を完成させ、また、置換の際の方法なども説明しています
・「 モノトーンそしてmP≠mNP その7」と、
・「 モノトーンそしてmP≠mNP その8」と、
・「 モノトーンそしてmP≠mNP その9」では、ここまでで説明した定義を使い、定理を証明するのに必要な三つの補題を説明しています。
・「 モノトーンそしてmP≠mNP その10」と、
・「 モノトーンそしてmP≠mNP その11」では、ここまで説明した三つの補題を用いて、二回に分けて定理の証明を行っています
・「 モノトーンそしてmP≠mNP その12」では、補足説明に加え、ノンモノトーンな命題において計算量が減る場合の竹内先生のアイディアを紹介させていただいています。
17.ノンモノトーン・否定のリラテルがあると計算量が減る場合について
ノンモノトーンの場合否定のリラテル(リーフ)がありますが、これがあった場合に計算量が減るということに着目した議論をしています。
・「ノンモノトーンで計算が減る場合 その1」では、ノンモノトーンな命題において計算量が減る場合の竹内先生のアイディアと定理およびその証明を説明させていただいています。
・「ノンモノトーンで計算が減る場合 その2」と ・「ノンモノトーンで計算が減る場合 その3」では、ノンモノトーンな命題において計算量を減らすアイディアとそのシミュレーション結果、およびシミュレーションプログラムの公開アドレスなどを示しています
長い時間掛かりましたが、なんとか完結することができました。これも温かく見守って頂いた皆様のおかげと思います。感謝に堪えません。本当にありがとうございました。
.png)
.png)
%E3%80%80%E3%80%80%E3%80%80%E3%81%9F%E3%81%A0%E3%81%97i%E2%89%A0j%E3%80%80%E3%80%80%E3%80%80(%EF%BC%8A).png)
)%2B%E3%80%80%E3%80%80%E3%80%80%E3%80%80%E3%80%80%E3%80%80%E3%80%80%E3%80%80%E3%80%80(i).png)
%E2%88%A7((%E2%88%A8(yi%E2%88%A8%EF%BF%A2zi))%E3%80%80%E3%80%80%E3%80%80%E3%80%80%E3%80%80%E3%80%80%E3%80%80%E3%80%80%E3%80%80(ii).png)
%E2%88%A7%EF%BF%A2zi).png)