1. はじめに
本記事は計算量理論において非常に重要なPCP定理と呼ばれる定理の紹介をします. 前提知識として「多項式時間アルゴリズム」「クラスNP」「NP完全」といった用語がなんとなくわかっていることを想定しています. 以下に書いたクラスNPのinformalな定義を読んで内容がなんとなくわかるならば大丈夫です:
クラスNP
判定問題は, 以下の性質を満たす決定的多項式時間アルゴリズムと多項式が存在するとき, クラスNPに属すといい, と表す:
- 任意のYesインスタンスに対してあるが存在して.
- 任意のNoインスタンスと任意のに対し, .
ここではインスタンスのサイズを表す.
Yesインスタンスに対して上記一つ目の条件を満たす文字列をNP証拠と呼び, アルゴリズムをNP検証者と呼ぶ.
本当はアルゴリズム(とその計算モデル), 計算時間, 判定問題などの用語を定義しないと上の定義は厳密にならないのですが, 一般に普通のC言語などのプログラムを考えてもらえればとりあえず大丈夫です.
直感的にいえば, クラスNPに属す問題は, YesインスタンスがYesたりうる多項式長の証拠を持つ問題といえます. 上記の定義で考えるアルゴリズムはインスタンスとであることの「証拠」を受け取ったとき, 本当にであるならばを出力, そうでないならばを出力するアルゴリズムです.
グラフの3彩色
有限な単純無向グラフに対し, 関数であって, 全ての辺に対しを満たすものをの彩色(-coloring)という. グラフは, 彩色が存在するならば彩色可能(-colorable)であるという.
「与えられたグラフが彩色可能であるか?」という判定問題を3彩色問題と呼ぶ. この問題はクラスNPに属する. 実際, 任意のYesインスタンス(=3彩色可能なグラフ)に対し, その3彩色を表現する文字列をとすれば, は高々ビットで表現できる. 検証者はグラフと関数を表す文字列を受け取り, がの3彩色かどうかを判定すれば良い. これは全ての辺の両端点の色を比較するだけなので, のサイズに関する多項式時間で計算できる.
なお, 3彩色の判定問題はNP完全であることが知られている.
充足可能性判定問題(SAT)
変数論理式に対し, となる割当を充足割当(satisfying assignment)という. 与えられた論理式が充足割当を持つかどうかを判定する問題を充足可能性判定問題(SAT; satisfiability problem)という. SATはクラスNPに属する. 実際, 与えられたYesインスタンスに対しその充足割当を証拠として持ってくればよい.
特に, 論理式が
の形で表せるとき, 3CNF形式であるといいます. ここでは適当な変数に対しを満たす論理式で, リテラルと呼ばれる.
与えられた3CNF形式に対する充足可能性判定問題は特に3CNFと呼ばれる. この問題はNP完全問題であることが知られている.
制約充足問題(CSP)
グラフの彩色問題とSAT問題の共通の一般化として制約充足問題(CSP; constraint satisfaction problem)というものが知られており, PCP定理の証明においても重要な役割を果たす. パラメータに対し, k-CSPと呼ばれる問題では, 有限集合(アルファベットと呼ばれる)上に値をとる個の変数上の個の関数が入力として与えられる. ただし各はのうち高々個の変数の値にのみ依存する関数であるとする. kCSPは, 全てのに対してを満たすようなが存在するかどうかを判定する問題として定義される. 要するに連立方程式の解が存在するかどうかを判定する問題である.
例えば3彩色問題はに対する2-CSPの特殊ケースになる. ここでは, 変数は頂点に割り当てられる色を表すとし, 各辺に対してをならば, そうでなければを返す関数と定義すれば2-CSPとして表現できる. 3CNFはに対する3CSPの特殊ケースである. 一般にk-CSPを議論する際はアルファベットサイズと引数の個数は入力長に依存しない定数とする.
1. PCP定理
PCPとはProbabilistic Checkable Proofの略で, 確率的検証可能な証拠のことを表します. 要するにとある良い性質を満たす証拠なのですが, そのような証拠を持つ問題のクラスをクラスPCPと呼びます. PCP定理とは, クラスがクラスNPに一致するということを主張する定理です.
1.1. informalな定義
分かり易さのために, まずinformalにクラスPCPを定義し, 次の節でちゃんとした定義を載せます.
PCP定理(informal)
判定問題を考える. 以下を満たす乱択検証アルゴリズムと多項式が存在するとき, はクラスPCPに属すといい, と表す:
- 任意のYesインスタンスに対し, あるが存在して,
- 任意のNoインスタンスと文字列に対して.
- 任意のインスタンスと文字列に対し, は文字列のうち, たかだか100文字しか見ない.
Yesインスタンスに対して上記の一つ目の条件を満たす文字列をPCPまたはPC証拠と呼び, 乱択アルゴリズムをPCP検証者と呼びます.
クラスNPの定義(定義1)と比較すると, 以下の二つの違いに気づきます:
- NP検証者は決定的(すなわちランダムネスを使わない)だったのに対し, PCP検証者はランダムネスを使え, Noインスタンスの拒否確率はであれば良い (従ってこの点においてはNP検証者よりも条件は弱い)
- PCP検証者は証明のうち, 100文字しか見ることができない (この点においてはNP検証者よりも非常に強い条件が課されている). なお, 100やという定数は分かり易さのため書いているだけであり意味はありません. 問題の入力サイズに依存しない定数であれば良いです.
PCP検証者は証明の中で見ることのできる文字数が制限されている. その代わりにサイコロをふることができる.
すなわち, ランダムネスの部分では条件を緩めている一方で証拠へのアクセス回数においては条件を厳しくしています. 一見するとアクセス制限がものすごく強そうな気がするのですが, PCP定理はNP=PCPを主張します.
3彩色問題の確率的検証
PCP定理の非自明さをさらに納得するために3彩色問題()について考えてみましょう. 3彩色問題とはグラフが与えられてそれが3彩色可能かどうかを判定する問題でした. この問題のNP証拠としては3彩色をもってくれば良いです. この関数が本当に彩色の条件を満たすかどうかを検証するには全頂点の色を見なければなりませんでした.
ここで, 一様ランダムに辺を選んでその両端点でならば受理し, そうでなければ拒否する乱択アルゴリズムを考えてみましょう. この検証者は確かに2頂点の色しか見ておらず, しかもが3彩色だった場合は確率1で受理します. 一方, が彩色でなかった場合はとなる辺が存在し, このような辺を引き当てた場合のみは拒否します. しかしそのような辺が1本のみだった場合, の拒否確率はとなってしまい, からは程遠い値となってしまいます.
では, ランダムに辺を本選んでその中で両端点が同じ色になるものが存在するかどうかによって判定するのはどうでしょうか? この場合, 見る頂点の個数は高々個であり, Noインスタンスを拒否する確率はとなり, やはり定数からは程遠いです (を増やすとこの確率は定数にできる一方で見る頂点の個数は増えてしまう).
PCP定理によるとなので, 実際にPCPを持ちます. 重要なのはPCPの存在性であり, それは先ほど考えたNP証拠の関数と同じであるとは限らないという点です.
1.2. 厳密な定義
ここでは厳密な定義を載せますが, 要するに2.1の内容をちゃんとした形で述べ直しただけなので, 読み飛ばしても大丈夫です.
オラクルアルゴリズム
文字列に対し, 計算途中での文字を参照する(すなわち, 何らかのインデックスに対してにアクセスする)ようなアルゴリズムを(オラクルを持つ)オラクルアルゴリズムといい, で表す. この参照をクエリ(query)と呼ぶ.
関数と入力を受け取るオラクルアルゴリズムを考えます. 任意のに対してのクエリ回数が高々回であるとき, のクエリ計算量は高々であるといいます.
乱択オラクルアルゴリズムのクエリ計算量は, ありうる全てのランダムネスの中で最も多いときのクエリ回数として定義します.
例えばクラスNPの定義における検証アルゴリズムは, をオラクルと見立たとき, オラクルアルゴリズムとみなすこともできます. の文字全てを見る可能性があるので, クエリ計算量は最悪ケースでです.
クラスPCP
二つの関数を考える. 判定問題は, 以下の性質を満たす多項式時間乱択オラクルアルゴリズムと多項式が存在するとき, に属すといい, と表す:
- 任意のYesインスタンスに対してあるが存在して.
- 任意のNoインスタンスと任意のに対して.
- のクエリ計算量は高々であり, が使うランダムビットは高々ビット.
は自明です. 実際, ビットのランダムネスを使いクエリ計算量のPCP検証者がいた場合, 全てのランダムビットを列挙してそれぞれでPCP検証者を決定的にシミュレーションして出力の多数決をとれば決定的な検証者が作れます. この検証者の計算時間はとなり確かに多項式時間です.
1.3. 応用
PCP定理を用いると, の仮定の下で, 多項式時間アルゴリズムによる近似率の限界を証明することができます. 詳しくは
こちらのページの4章
などを参照してください.
1.4. 背景
大雑把に言えば, 計算量理論の目標とは特定のタスクをこなすのに必要な計算資源の量(時間, メモリ量, 乱択や量子性の有無など)を明らかにすることです. その中でクラスNPのような 「答えがあっているかどうかを検証する」というタスクの計算量が注目を集めました. 例えば関数に対しての値を外部のスーパーコンピュータに計算してもらった時にという値が帰ってきたとして, ではそのスーパーコンピュータが信頼できるか(それが本当に正しくを満たすのか)を検証するにはどうすれば良いでしょうか?
一つの方法として対話証明という方法があります. これは検証者(=乱択アルゴリズム)のほかに証明者(例えば上記のスーパーコンピュータ)という登場人物が存在していて, 検証者は証明者に何度も(多項式回の)質問をすることができます. 検証者はその質問に対する返答と自身の持つランダムネスを使って解があっていれば確率1で受理, そうでなければ確率で拒否します. このような乱択検証が多項式時間でできるような判定問題のクラスをIP (interactive proof) といいます. 例えばクラスNPはNP証拠を出力する証明者を考えれば対話証明できるので, です.
ところがクラスIPはNPとは違ってランダムネスを使える上に証明者に何度も質問することができます. これによってクラスIPはどこまで広くなるでしょうか? 驚くべきことに1990年に Sha92LFKN92によってクラスIPはPSPACEと呼ばれるクラスと一致するという定理が示されました. PSPACEとは多項式ビットのメモリを用いて解ける判定問題のクラスで, NPよりもはるかに難しい(と予想されている)問題を含むとても広いクラスです. 要するにNP検証者に対話とランダムネスを付与すればその計算能力がものすごく向上することになります (は知られていますがこの包含関係が真かどうかは残念ながら未解決ですが...).
PCP定理とは, において, 左辺をに置き換えたときに右辺がどうなるか?という疑問からスタートして研究されてきました. IPにおける証明者とは質問を表す文字列を与えたときにまたはを返す関数とみなすことができます(注1). ここで, この関数をその真理値表(この文字列はビットの文字列になる)と同一視したとき, 検証者はという文字列に回アクセスして乱択を使って受理か拒否を判定することになります. これは, 長い証拠の高々文字だけをみて乱択で出力を決定するPCP検証者と非常に似た設定を考えていることになります.
(注1) 証明者の返答がビットあるような対話証明において, という質問をという質問を「に対する返答のビット目は何か?」という質問に置き換えれば返答を1ビットに制限したものに置き換えることができます.
なお, PCP定理はAroraらALMSS98によって証明されましたが, この証明は代数的な手法に基づく非常に複雑なものでした. 現在ではDinurDin07による比較的単純な証明が知られており, 本記事の証明も彼女の証明を紹介するというものになります. なお, この業績でDinurは2019年にゲーデル賞を受賞しています.
2. CSPとPCP
CSPのインスタンスと割り当てに対して,
とし, とします. つまりは割当によって充足されない制約の割合を意味し, その中で最悪な割当を持ってきた時の割合をとします. 明らかに,
が成り立ちます. 本記事で最終的に証明するのは次の定理です.
PCP定理の別の形
ある定数, 多項式, 有限集合と, 与えられた2-CSPのインスタンスを以下の性質を満たす別のk-CSPのインスタンスに変換する多公式時間アルゴリズムが存在する: 任意の2-CSPインスタンスに対し,
- の変数の個数をとすると, の変数の個数は高々.
- のアルファベットは.
定理3を用いた定理1の導出
3彩色問題がNP完全であるという事実を証明なしで使います. この事実により, 3彩色問題に対してPCP検証者を構成すれば定理1が証明されます. PCP検証者として以下のものを考えます. を入力とします.
- 定理3のアルゴリズムを用いてを変換して定理3の条件を満たす別の2-CSPインスタンスを得る.
- PCP検証者が受け取る証明はに対する割り当てとする.
- から一様ランダムに制約を選び, がを充足するならば1, そうでなければ0を出力する.
この検証者はPCP検証者となります. 実際, が見る文字数は高々であり, これは入力サイズに依存しない定数です. 次にこれがPCPの条件を満たすことを確認します:
- 元のインスタンスが充足可能ならば, も充足可能なので, をその充足割り当てとすれば確率1では1を出力します.
- 元のインスタンスが充足可能でないならば, です.
なお, PCPの定義では拒否確率がとなっていますが, これは上記のPCP検証者を回動かして1度でもを出力すればを出力するというようにすれば良いです.
定理3定理1の議論では, CSPに関する定理3を使ってPCP検証者を構成しましたが, 逆にPCP検証者を使ってCSPのインスタンスを構成することができます. クエリのPCP検証者を考えます. 実は厳密なPCP定理(定理1.2)よりPCP検証者はビットのランダムビットを使うため, ありうる通りのランダムシードを全て列挙してそれぞれのランダムシードにおいてこのPCP検証者をシミュレートすると, それぞれは証明のうち文字だけをみて受理か拒否を決定します. ですので, を変数とみなすと, 個の制約からなる-CSPのインスタンスが構成できたことになります.
この-CSPのインスタンスは, それが充足可能でないならば任意の割当に対して高々半分の制約しか満たされないという性質を持ちます.
このように見ると, あたかも純粋な計算量理論の結果に見える定理1,2は実はCSPという組合せ論っぽい側面を持っていることがわかります.
定理3のえらいところ
要するに定理3はCSPを別のCSPに変換できるということを主張していますが, 特に最後の条件「」という部分が難しいです. 一つでも充足されないの制約が存在すればその性質がの多くの制約に伝播することを意味します. このように, 局所的な性質が大域的に伝播する (local-to-global)という性質が非自明なポイントであり, これはある種のエクスパンダー性とみなすことができます.