計算量の理論 講義資料 ver.1 (2006.1.12) 教科書 オートマトン 言語理論 計算論 Ⅱ (第2版) J.ホップクロフト・R.モトワニ・J.ウルマン 講義資料 http://thales.philos.k.hosei.ac.jp/tm 機械モデルと言語の階層 • 有限オートマトン ⇔ 正則言語(正規表現) (1年:形式言語とオートマトン) • プッシュダウンオートマトン⇔文脈自由言語 (文脈自由文法) (3年:コンパイラ) • テューリングマシン⇔ 帰納的可算言語 Turing機械の能力と使いみち • 能力 – コンピュータで認識できる言語を認識 – 計算可能なものはすべて計算できる • 使いみち – 計算の限界 – 真偽を判定できるアルゴリズムの限界 – 計算量 Turing機械(TM)の概念図 B B X1 X2 Xi Xn B テープ 空白 セル 有限制御部 有限オートマトンとの違い • テープは左右無限に延びている。 • 入力記号以外にも記号がある。(全体でテープ 記号) • 空白を意味する記号B(テープ記号のひとつ)が ある。 • テープヘッドは左右どちらにも動ける。 数学的な定義 Turing機械Mは次の7つ組で定義される: M = (Q, Σ, Γ, δ, q0 , B, F) Q : 状態の有限集合 Σ : 入力記号 Γ : テープ記号の有限集合Γ ⊆Σ δ : δ (q, X)=(p,Y,D) (p:次状態, Y:書込む記号,D:ヘッドの動く向き) q0 : 初期状態(∈ Q ) B : 空白記号(∈Γ- Σ ) F : 終状態(または受理状態)の集合( ⊆ Q ) Turing機械の時点表示 (Instantaneous Description, ID) B B X1 X2 Xi Xn B テープ q X1X2 … Xi-1qXi … Xn テープヘッドが空白以外の記号の左端または右端を 超える場合はそこの空白文字をX1またはXnとする。 Turing機械の動作 B B X1 X2 Xi δ(q,Xi ) = (p, Y, L)のとき B B X1 X2 Xn B q Xi-1 Y Xn B p X1X2 … Xi-1qXi … Xn |- X1X2 … pXi-1Y … Xn 遷移の例外 B B X1 X2 q Xi Xn B δ(q,X1) = (p, Y, L)のとき δ(q,Xn) = (p, B, L)のとき 遷移グラフ X/Y→ q p δ(q,X1) = (p, Y, R) をあらわす有向辺 Turing機械が受理する言語 ID1 |- ID2 Turing機械がID1からID2まで1回の動作で到達する ID1 |-* ID2 Turing機械がID1からID2まで有限回(含0回)で到達 Turing機械M =(Q, Σ, Γ, δ, q0 , B, F)が 受理する言語L(M)は L(M)={w∈S* | ∃a,b ∈ G*, ∃p∈ F, q0w|-*apb} 言語を受理するTMの設計 L={0n1n| n≧1} B 0 0 0 1 1 q0 • 方針: 0と1を1個ずつ交互に消していく。 最後にどちらもなくなれば受理。 B 工程の概略 0: 0をXに変えて右に動いて goto 1 – Yだったら goto 3 /* 0はもう無かった*/ 1: 右にスキャンして1を探す – 1をみつけたらYに変えて左に goto 2 /*消した数同じ*/ – Bをみつけたら停止(拒否) /* 1はもう無かった */ – それ以外は読み飛ばす goto 1 2: 左にスキャンしてXを探す – Xをみつけたら 右に動いて goto 0 3: 右にスキャンして1が残ってないか探す – 1をみつけたら停止(拒否) /* 1の方が多かった */ – Bをみつけたら goto 4 (受理) /*どちらも残っていない*/ – それ以外は読み飛ばす q0 B 0 0/X → q1 0 0 1 1 B 0 0 1 1 B q0 B X q1 左端の0を「消す」 0/0→ Y/Y→ 開始 q0 0/X → 1/Y← X/X→ Y/Y→ X/X→ Y/Y→ q1 0/0← Y/Y← q3 B/B→ q4 q2 計算可能な言語 • TMで受理される言語は帰納的可算 (recursively enumerable)である、という。 • 帰納的可算な言語Lはw∈ L でない語にたい するTMの停止性は保障しない。実際L を受 理するどんなTMに対しても、TMが停止しな い語が存在する。 • 帰納的可算言語はある語がその言語の語か 否か(帰属判定)をTMができないような言語 も含む。 帰納的集合 • すべての入力に対して停止するTMで受理さ れる言語を帰納的である、という。またそのよ うな言語を帰納的集合(recursive set)という。 • 帰納的集合は帰属判定が可能 TMプログラミング技法:多重トラック B 0 0 0 1 B X 各セルには記号[X,Y]∈G が入る X ∈G1,Y∈G2ならば G=G1 ×G2のようにとる。 TMの拡張: 多テープTM B 0 0 B 1 0 B X 0 q1 0 1 0 1 B 1 B 1 B 多テープTMの能力 定理 多テープTMが受理する言語は帰納的可算 B 0 0 0 1 B 1 B 1 B X B 1 0 1 X B X 0 0 X 右に何個Xがあるかも覚える q1 制限されたTM X-1 X1 X2 X3 X1 X2 X3 Xn Xn * X-1 半無限テープTMによるTMの模倣 TMと同等のモデル B X1 X2 X3 X4 X5 X6 B TM q X3 X2 X1 B X1 X2 Y X4 X5 X6 B X4 X5 X6 p X4 Y X2 X1 q X5 X6 p 2スタック機械による模倣 コンピュータとTM コンピュータのモデル 1. 語(word)は任意長で番地(address)をもつ 2. プログラムはメモリー上に格納される 3. 命令は有限個の語から成り、語を書き換える 4. 命令は語を直接書き換える(レジスタなし) TMによるコンピュータの模倣 記憶テープ 命令カウンタ $0*w0#1*w1#10*w2#11*w3#100*w … #10011*10100 x 番地*中身# データとプログラム 10011 w 次に実行される命令が格納された番地 記憶番地 10100 $w 番地または中身の一時置き場 I/O 命令 ジャンプ データ 決定不能性 ~計算の限界~ 「問題」とは何か? 問題は、「未知の入力がある性質を持つか否か」を 問うもの。 与えられた特定のものに関する真偽判断を求める ものではない。 問題の例: 「与えられた言語が正則か否か?」 「与えられたCプログラムがHello Worldを出力する か?」(HelloWorld問題) 問題ではない例: 「{w|w中の0と1の個数が同じ}は正則か?」 問題の実例(instance) Hello World検査機は存在するか? Hello World検査機は 問題:「CプログラムPにデータIを入力したとき にPがHello Worldを印字するかどうか?」 に答える機械である。 I Yes Hello World 検査機 H P No Hello World検査機の改造 もしHelloWorld検査機が存在すれば… [改造1] H1はNoの代わりにHello Worldを出力 I Yes H1 P Hello World H1の改造 [改造2] H2はIの代わりにPを入力とし入力を1つに統合 P Yes H1 H2 P Hello World Yesは「PにPを入力するとHello Worldを出力する」ことを意味し Hello Worldは「PにPを入力するとHello Worldを出力しない」を意味する H2に自分を入力したらどうなるか? Yes H2 H2 Hello World Yesだとすると、「H2にH2を入力するとHello Worldを出力する」ことを意味する Hello Worldだとすると「H2にH2を入力するとHello Worldを出力しない」ことを意味する 決定可能性 問題が決定可能(decidable)であるとは、入力 が所望の性質を持つか否かを計算で判定 (検査)することができること。 決定可能でないとき決定不能(undecidable)と いう。 例 HelloWorld問題は決定不能 (HelloWorld問題を解く計算法は存在しない) 厳密な議論のために • H2はCで書けるのか? 2進列の番号付け w∈{0,1}* (2進列)をi=1w(2) (2進数)に対応させ, wはi番目の列である、などという。 i番目の列をwiとかく。 例 eは 1e=1 1(2) =1(10) 番 01は 101(2) =5(10)番 w5 =01 TMの符号化 Turing機械 M = (Q, Σ, Γ, δ, q0 , B, F) Q = {q1 , q2 , …, qr} Σ = {0,1}, Γ, δ, q0 , B, F Γ = {X1, X2, X3, X4, …, Xs} (X1 =0, X2=1, X3=B) L=D1, R=D2 を符号(2進列)に変換する方法: 遷移規則δ(qi , Xj) = (qk, Xl , Dm) 0i10j10k10l10m TM全体: C111 C2… Cn (Ciは遷移規則の符号) (M, w)の符号化 TM Mとそれへの入力語wの組はMの符号化を uとしてu111wと定義 (uの中に111は存在しないことに注意) 後に、 w∈L(M)⊆{0,1}*となる(M, w)の符号化 全体が決定不能であることを示す。 TMの数え上げ 符号化がi番目の語wiとなるようなTM をMiと書き、 i番目のTMと呼ぶ。 符号化とは逆にwiからMiを得ることを復号という。 wiがTMの符号化になっていないときは Miは右のようなTMであるものとする。 開始 (右のTMはいかなる記号を入力しても 直ちに拒否して停止するので 受理言語は空集合φである。) q 0 対角線言語Ld 言語Ldを次のように定義する。 Ld={wi|wi∈L(Mi)} 1 すなわち、Ldは自分自身を 2 復号して得られるTMに受 3 4 理されない語からなる集合。 i 5 L(Mi)の特徴ベクトル ↓ 6 LdとL(Mi)の特徴ベクトルは i番目要素が異なる Ldの特徴ベクトル 1 2 j→ 3 4 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 w 5 6 0 0 1 1 0 1 1 0 0 0 0 1 M wj∈L(Mi)のとき1 Ldが帰納的可算でないことの証明 Ldが帰納的可算であるとすると、 あるiが存在してLd=L(Mi) …(1) wi∈Ldか否か調べよう。 • wi∈Ldならば(1)によりwiはMiに受理される。 ところがこれはLdの要素の定義を満たさない。 • wi∈Ldならば(1)によりwiはMiに受理されない。 ところがこれはLdの要素の定義を満たす。 いずれにせよ矛盾。(終わり) 言語Ldの位置づけ 帰納的可算(RE)言語 REだが帰納的でない Ld REでない 帰納的言語 帰納的言語の性質(1) [定理] Lが帰納的言語ならばその補集合 Lも 帰納的 (証明) L を受理する必ず停止するTM M 受理 w M M 受理 非受理 非受理 帰納的言語の性質(2) [定理] Lとその補集合 LがともにREならば Lは帰納的 (証明) L を受理するTM M1, L を受理するTM M2 M M1 受理 受理 受理 非受理 w M2 万能言語Lu • 万能言語と呼ぶ言語LuはTM Mとそれで受理 される語wとの組(M, w)を符号化したもの全 体からなる言語である。 すなわち、組(M, w)の符号化をψ(M, w)と書くこ とにすると、 Lu ={ψ(M, w)∈{0,1}* | w ∈L(M )} Luは帰納的加算 (証明)Luを受理するTM Uの存在を示す。 (Universal Turing Machine) 入力 M Mのテープ 001001001010… Xiを0iで Mの状態 000 … 0BB … qiを0iで メモテープ w Luは帰納的でない (帰属問題が決定不能) (証明)Luが帰納的であるとする。 するとLuも 帰納的。 Luを受理するTMをMとしてLdを受理 するTMを構成する。 受理 w コピー w111w Luを受理するM 拒否 受理 拒否 言語LuはREであるが帰納的でない 帰納的可算(RE) REだが帰納的でない Lu 帰納的言語 Ld REでない 還元論法 受理 P1 変換機 ψ P2 M2 拒否 受理 拒否 M1 M2を仮定して、(存在しないことがわかっている) M1が構成で きれば、背理法によりM2は存在しないと結論できる。 M2があればM1もある⇔ P2が解ければP1も解ける ⇔ P1はP2より易しい 変換機ψは問題P1を問題P2に還元する、という。 還元論法の主張 P1がP2に還元できるとき、次が成り立つ。 • P1が決定不能ならP2も決定不能 • P1が非REならP2も非RE 理由: P1がP2に還元できるということは P1はP2より易しいということだから明らか 還元の条件 任意の入力に対してM1が正しく受理/拒否しなけ ればならない。 ψは、M1に受理されるはずの語w∈L1に対して M2に受理される語ψ(w)= u∈L2を出力する 拒否のときも同様 受理 P1 変換機 ψ P2 M2 拒否 M1 受理 拒否 ψの条件の図 w∈L1 ⇒ ψ(w) ∈L2 w∈L1 ⇒ ψ(w) ∈L2 ψ yes yes No No P1 P2 還元の例(LeとLne ) wiはTM Miの符号化である。 以下でMiとwiを同一視し、語の文脈でMiと書けば wiを意味するものとする。 (Lが言語のときM∈LはM=Miの符号wi∈Lの意) LeとLneを以下で定義する。 • Le={M|L(M)= φ} • Lne={M|L(M)≠φ} Leは受理言語が空であるTMの符号の集合 Lneは受理言語が空でないTMの符号の集合 (証明で使うので追加) 非決定性TM 決定性TM (deterministic TM, DTM) δ(q, X)=(p,Y,D) 非決定性TM (nondeterministic TM, NTM) δ(q, X)={(p1, Y1, D1), (p2, Y2, D2), …, (pn, Yn, Dn)} X/Y1D1 q p1 X/YnDn pn NTMはDTMで模倣できる NTM MN を模倣するDTM MD IDの キュー x ID1*ID2*ID3*ID4* …IDj *IDj+1 *ID3 … * *IDj+k ID3 テープ 1. 現在の状態と読み込み記号に対して遷移がk個あ るとき、xとマークされた現在のIDを読み取り、受 理状態なら終わり。そうでなければキューの後ろ にk個コピーする。 2. コピーしたk個のIDをそれぞれk個の遷移にした がって更新 3. xマークを次のIDに移す NTMは推測をする NTMによる受理はDTMによる幅優先探索 ID1 ID2 ID3 ID4 IDj+1 IDj+2 … IDj+k … 逆に、幅優先探索で見つかる解はNTMで受理さ れる。このことをNTMが解を推測する、という 推測の例1 入力語wに対してw= wiとなるiは存在するか? 推測 w exist i s.t. w=wi ? DTMによる探索 yes i w yes w=wi ? NTMによる推測 推測の例2 TM Mに対してw∈ L(M)となるwは存在するか? M exist w s.t. w∈ L(M)? DTMによる探索 yes 推測 w M yes w∈ L(M)? NTMによる推測 LneはRE 非決定版のU(Universal TM)を使って Lneを受理するTMを構成 bool U(M, w){return (w∈L(M)) } 推測 w Mi 受理 U M 受理 Lneは帰納的でない [証明] LuをLneに還元する。 M’ =ψ(M, w)とすると、 還元の条件: (M, w)∈Lu ⇒ M’ ∈Lne (M, w)∈Lu ⇒ M’ ∈Lne この条件を満たすアルゴリズムψが存在すれば OK U w M ψ M’ 受理 受理 拒否 拒否 Mne [証明(つづき)] ψの仕様: (M, w) から M’(下)を構成するアルゴリズムをψとする。 受理 w 受理 M x M’ ψが還元の条件を満たすこと: (M, w)∈Lu ⇒ w∈ L(M) ⇒ x∈L(M’) ⇒ M’∈Lne (M, w)∈Lu ⇒ w∈ L(M) ⇒ ∀x.x∈L(M’) ⇒ M’∈Lne [証明(つづき)] ψの存在: ψはM’ を次の手順で構成する。 xiは(M,w)の符号i番目の記号, n=|(M,w)の符号| */x0→ */x1→ q0 q1 q2 … */x → n-1 … qn B以外/B→ B/B← p0はUの開始状態 qn+1 B以外/ そのまま← B/B→ U p0 [証明おわり] LeはREでない [証明] LeがREであると仮定する。 Lne = LeはREであったから、 Lneは自身とその補集合がREであることになり 帰納的言語の性質(2)によりLne(およびLe )は 帰納的となる。これはLneが帰納的でないことに反 する。 RE言語の性質 RE言語の集合を(RE言語の)性質(property) という。(通常の意味での「性質」もつRE言語の集 合をその性質そのものと同一視。) 例:正則言語であるという性質は RE言語全体 正則言語全体の集合。空集合である という性質は{φ} (空集合1つだけ からなる集合)。 (RE言語の) RE言語の性質は空{} であるか 性質P RE全体であるとき自明(trivial)、 そうでないとき自明でない(non-trivial) 性質を特徴付ける言語 RE言語の性質を問題(TMへの入力)にするため、 P がRE言語の性質のとき、言語 LP ={M|L(M)∈P } を性質P を特徴付ける言語という。 以下では、 「RE言語Lが性質P を持つか否か」 という問題(の決定可能性)を、 Lを受理するTM M(の符号)を用いて、 「 MがLP に属するか否か」 という問題に置き換える。 (LはREだから常にM が存在 することに注意) 性質に関する決定問題 Riceの定理 RE言語の自明でない性質は決定不能である。 [証明]P を自明でない性質とする。まず、φ∈P と 仮定する。(そうでない場合は後で。) Pは自明でないのでφでない言語Lを要素として持 つ。 Lを受理するTMをMLとする。 以下でLU がLP に還元できることを示す。 還元をψ(M, w) = M’ として、 還元の条件: (M, w)∈Lu ⇒ M’∈LP (M, w)∈Lu ⇒ M’∈LP (証明つづき) w 受理 M 開始 x 受理 受理 ML M’ ψが還元の条件を満たすこと: (M, w)∈Luのとき M’はMLを模倣し、 Lを受理する。 L∈P であったからM’∈LP (M, w)∈Luのとき M’はどんなxも受理せず、したがって言 語φを受理する。 φ∈P であったからM’∈LP 還元ψのTMによる構成はLneのときと同様。 (証明つづき)φ∈P の場合 性質P の補集合P について先ほどと同じ議論をす ればP が決定不能であることがわかる。 ところで LP : P に属す言語を受理するTM(の符号)の集合 LP : P に属す言語を受理しないTMの集合 すべてのTMは何かを受理するのでこれらは等しい。 するともしLP が決定可能であるとするとLP = LP も決定可能となり上( P が決定不能)と矛盾 (証明おわり) Postの対応問題 いままでTMの受理言語に関する決定不能性をみ てきた。 TMとは関係ない普通の問題にも決定不能な問題 が存在する。 次に示すPostの対応問題 (Post’s Correspondence Problem, PCP)はこ のような決定不能問題の例。 Postの対応問題の実例 S上の記号列の同じ長さの二つのリストを A, Bとする。 A=w1, w2, …, wk B=x1, x2, …, xk とする。 このとき1個以上の数の並びi1, …, imが存在して wi1wi2…wim = xi1xi2…xim となるか? (Yes/No) ←というのが実例 注: 入力(A, B)に対して上を問うのがPCP 例 i 1 2 3 A wi 1 10111 10 B xi 111 10 0 w2w1w1w3 = x2x1x1x3 = 101111110 (2,1,1,3)をこの実例の解という。 解を持たない実例 i 1 2 3 A wi 10 011 101 B xi 101 11 011 i1 1 2 3 wi1 xi1 10 101 011 11 101 011 i2 1 2 3 wi2 10 011 101 1xi2 1101 111 1011 i3 1 2 3 wi3 1xi3 i1, …, ikは部分解 … PCPの決定不能性 Luを変形PCP(MPCP)に還元し, MPCPをPCP に還元する。 Luは決定不能であったから、MPCPもPCPも決 定不能である。 Mu MPCP yes (M,w) 還元ψ 還元φ PCP no 変形PCP Luを直接PCPに還元するよりも次の変形PCP (MPCP)を経由したほうが容易である。 変形PCP(の実例): 二つの語のリストA=w1, w2, …, wk B=x1, x2, …, xk に対して0個以上の数の並びi1, …, imが存在して w1wi1wi2…wim = x1xi1xi2…xim となるか否か? 注: PCPと異なる点 1. 先頭は1 2. 解は(先頭以外の)0個以上の並びi1, …, im MPCPをPCPに還元する MPCPの実例 A=w1, w2, …, wk B=x1, x2, …, xk をPCPの実例 C=y0, y1, y2, …, yk+1 D=z0, z1, z2, …, zk+1 に還元する。ここで 1≦i≦kで wi=a1a2…anならばyi= a1*a2*…*an* xi= b1b2…bmならばzi= *b1*b2*…*bm y0= *y1 , z0= z1 yk+1= $, zk+1 =*$ である。 MPCPの実例を還元 MPCPの実例(左)をPCPの実例(右)に還元 i 1 2 3 A wi B xi 1 111 10111 10 10 0 *, $ ∈ S i 0 1 2 3 4 C yi D zi *1* *1*1*1 1* *1*1*1 1*0*1*1*1* *1*0 1*0* *0 $ *$ 還元の条件を満たすこと [証明] i1, …, im をMPCPの解とする。 すなわち、w1wi1wi2…wim = x1xi1xi2…xim このとき *y1yi1yi2…yim = z1zi1zi2…zim* y0= *y1 , z0= z1であったから y0yi1yi2…yim = z0zi1zi2…zim* 末尾に$をつけると yk+1= $, zk+1 =*$であったから y0yi1yi2…yimyk+1 = z0zi1zi2…zizk+1 ゆえにi0,i1, …, im,ik+1 はPCPの解 (逆) 示せ LuをMPCPに還元する TM M = (Q, Σ, Γ, δ, q0 , B, F)と入力語wに対して次 のMPCPを構成する。 (以下でM は空白を書かず、初期ヘッド位置より左には移動しないと 仮定する。一般のMからこのようなMへの還元は容易) 1. 最初の対 A B i 1 2. (コピー用) A X # wi xi #q0w# # B X # X∈G 3. (遷移用)q∈Q-F A qX ZqX q# Zq# B Yp pZY Yp# pZY# d(q,X)=(p,Y,R) d(q,X)=(p,Y,L) d(q,B)=(p,Y,R) d(q,B)=(p,Y,L) 4. (記号消去用)q∈F A XqY Xq qY B q q q Z∈G Z∈G 5. (一致用)q∈F A q## B # 還元への入力例 w=10 開始 M 0/1R 1/0L B/1L q1 B/0R q2 0/0L 1/0R q3 規則 1 2 3 A # 0 1 B #q101# 0 1 還元された結果 規則 4 # q10 # 1q2 d(q1,0)=(q2,1,R) 0q11 q200 d(q1,1)=(q2,0,L) 1q11 0q1# 1q1# 0q20 q210 q201# q211# q300 同上 d(q1,B)=(q2,1,L) 1q20 q21 q2# q310 0q1 0q2# 同上 d(q2,1)=(q1,0,R) 同上 d(q2,0)=(q3,0,L) d(q2,B)=(q2,0,R) 5 A 0q30 B q3 0q31 1q30 1q31 0q3 q3 q3 q3 q3 1q3 q30 q31 q3 q3 q3 q3## # TMの模倣 A B # #q101# 1. A, Bの欄にそれぞれw1,x1を書く。これは部 分解。 2. 次を繰り返す。 A, B欄が一致するwi,xiをそれぞれA, B欄の末尾に 追加して終わる。 なければ部分解を延長するwi,xiをそれぞれA, B欄 の末尾に追加する。 受理する場合 A B …# 0…01q300…0 # …#0…01q300…0# 0…0 q3 0…0# …#q3## …#q3## 還元条件を満たすこと 受理されるとき、またそのときに限りMPCPは 解を持つことがわかる。 (受理状態でない限り、AはBに追いつかない。 受理状態なら前ページのように解を持つ。) 文法に関する決定問題 文脈自由文法(CFG)があいまいか否かは決 定不能 「文法があいまい」: 直観的な説明 その文法が定義する言語が、2種類(以上)の構成 方法をもつ文を含む。 文脈自由文法(教科書上巻5章参照) 文脈自由文法(context free grammar, CFG)Gは 4つ組 < V,T,P,S>で規定されるここで、 1. Vは変数(あるいは非終端記号)の集合: 変数は記号列の集合に対応する。(後述) 2. Tは終端記号の集合 定義される言語に現れる記号の集合 3. S∈Vは開始記号 4. Pは生成規則の集合 生成規則は変数A∈Vと記号(∈V∪T)の列X1X1…Xnの組で A→X1X1…Xn のように書く。 通例文法といえば文脈自由文法を指す。 文法の例 G=<{P}, {0,1}, A, P> Aの要素は次の5つ P → e P P P P → → → → 0 1 0P0 1P1 文法が生成する言語 文法G=< V,T,P,S>において 記号列aに現れる非終端記号A(∈V)1つをある規則 A→X1X1…Xnを用いてX1X1…Xnに置き換えてbを得 る操作を導出とよびa ⇒bと書く。 aから始めて、導出を繰り返してbが得られるとき a ⇒*bと書く。(0回含む) Sから始めて導出を繰り返して得られる終端記号の列 w全体の集合を文法Gが生成する言語といい、L(G) で表す。すなわち L(G)={w∈T*|S ⇒*w} 必ずしも終端記号だけではない記号の列aについて S⇒*a のとき、aを文形式という。 文法が生成する言語の例 前述の文法G=<{P}, {0,1}, A, P>で P⇒0P0⇒01P10⇒010P010⇒0100010 により 0100010∈L(G) L(G)は{0,1}上の回文全体 文法の略記法 規則の左辺(→記号の左側)が同じ規則が複数 ある場合、たとえば、giを記号列として A → g1 A → g2 … A → gn がある場合これらをまとめて A → g1 | g 2 | … | gn のように書く。 問 回文の文法を上の略記法で書け。 最左(右)導出 • 導出の各書き換えステップで一番左(右) の非終端記号の書き換えのみをおこなう 導出を最左(右)導出という。 • 最左導出でa1からのa2の導出ができると き a1 ⇒*lm a2 などとかく。 • S ⇒* lm aなるaを左文形式という。aは非終 端記号を含んでもよい。 最左導出の例 1桁の数 0, 1と2種類の変数x, yのみの和および 積でつくる式全体は次の文法で生成される。 E → I | E+E| E*E | (E) I→x|y|0|1 E ⇒lm E+E⇒lm E*E+E ⇒lm I*E+E ⇒lm x*E+E ⇒lm x*I+E ⇒lm x*y+E ⇒lm x*y+I ⇒lm x*y+1 構文木 • 導出を、どの非終端記号を書き換えるかの順序 を捨象して木であらわしたものを構文木という。 • 構文木の各節点は非終端記号、葉は終端記号 または非終端記号、根は開始記号。 • 各節点の子の並びはその節の非終端記号の書 き換えにもちいた生成規則の右辺。 E E E I x E E * I + y I 1 曖昧さ 2つ以上の構文木をもつ文を生成する文法は 曖昧であるという。 注 文が構文木を2つ持つことは最左(右)導 出が2つあることと同じ。 問 前述の式の文法でx*y+1の構文木をもう1 つ作れ。 CFGの曖昧さに関する決定不能性(1) PCPをCFGの曖昧性問題に還元する。 PCPの実例で与えられるリストを A=w1, w2, …, wk B=x1, x2, …, xk とする。これらの語に使われるアルファベットをSとする。 アルファベットSとは別に添え字記号の集合 L={a1, a2, …, ak}を用意する。 文法GA=<{A}, S L, P, A> P: A→w1Aa1 | w2Aa2 | … | wkAak | w1a1 | w2a2 | … | wkak GAが生成する言語をLA書き、リストAの言語と呼ぶ。 LAの要素の一般形はwi1wi2…winain…ai2ai1 添え字記号列に対して導出の列がただ1つ決まるの で、GAは曖昧でない。 CFGの曖昧さに関する決定不能性(2) GAと同様に GB=<{B}, S L, Q, B> Q: B→x1Ba1 | x2Ba2 | … | xkBak | x1a1 | x2a2 | … | xkak GBが生成する言語をLB 次にこれらの文法を組み合わせた文法GAB を次のように定義する。 GAB=<{A, B,S}, SL, P∪Q∪{S→A | B}, S> このとき次が成り立つ。 PCPの実例(A, B)が解をもつ⇔GABが曖昧 すなわちPCPが文法の曖昧性問題に還元される。 CFGの曖昧さに関する決定不能性(3) (十分性)i1, …, imがPCPの解であるとする。このとき S⇒A⇒wi1Aai1⇒wi1wi2Aai2ai1⇒…⇒wi1…wimai1…aim S⇒B⇒xi1Bai1⇒xi1xi2Bai2ai1⇒…⇒xi1…ximai1…aim wi1…wim=xi1…ximにより、上は同じ語の導出。 これらは最左導出であるからGABは曖昧。 (必要性)GAおよびGBは曖昧ではないので、 GABがある語の2つの導出を持つならば、それらは S⇒A⇒wiAai⇒…⇒ga (gS, aL) S⇒B⇒xjBaj⇒…⇒cb (cS, bL) S L=Φだからa=b, g=c そこでa=aim…ai1(=b)とすると g=wi1…wim, c=xi1…xim すなわち i1, …, imはPCPの解。 (証明終わり) PDA Pushdown Automaton(PDA) P=<Q,S,G,d,q0,Z0,F>: Q: 状態の集合 S: 入力記号の集合 G: スタック記号の集合 d : Q×S {e}×GQ×G* 遷移関数 (p, g∈d(q, a, Xの意味 状態はpに遷移し、スタックの上端の記号Xをgに置 き換えてよい。g=YZならZがYの下。 q0: 開始状態∈Q Z0: 開始記号(底記号) F: 受理状態の集合⊆Q PDAとCFGは等価 定理 任意のPDAはCFGを受理する。 逆に任意のCFGはPDAに受理される。 証明 (教科書上巻 p.265~参照) リスト言語の補集合 定理 リストAの言語LAの補集合はCFL (証明)LAの補集合を受理するPDA Pの動作を次のように 定義する。 1. Sを読んでいる間はそれをpush . Lを読んだらaiとwiの照合を開始。(テープからaiを読 んだらpopしてwiRか否かをチェック) a. 否なら受理状態に入り以後そのまま進む b. 是で次が底記号でなければ受理状態に入り2を繰り返す。 c. 是で次が底記号ならいったん非受理状態に入り、さらに入 力があれば受理状態に遷移する。 3. 2の後にSを読んだら受理状態のまま進む。 CFLに関する決定不能性(1) 定理 G1, G2をCFG, Rを正則表現とするとき、 a. L(G1)∩L(G2)=φか。 b. L(G1)=L(G2)か。 c. L(G1)=L(R)か。 d. あるアルファベットTに対してL(G1)=T*か。 e. L(G1)⊆L(G2)か。 f. L(R)=L(G2)か。 CFLに関する決定不能性(2) (証明) a. 還元: L(G1)=LA, L(G2)=LBとする。 還元の条件: PCP(A, B)が解を持つ ⇔LA∩LB≠φ⇔L(G1)∩L(G2)≠φ b. 還元: L(G1)=LAC∪LBC, L(G2)=(S∪L)*とする。 還元の条件:PCP(A, B)が解を持つ ⇔LA∩LB≠φ⇔(S∪L)*ー(LA∩LB)C ≠φ ⇔(S∪L)*ー(LAC∪LBC) ≠φ ⇔L(G1)≠L(G2) 残り (示せ) 実行可能性 入力のサイズに関する多項式で表される程度 の時間で停止するTMで解けるか? 決定可能性における諸概念を下記のように置 き換えることで実行可能性の議論を進める。 決定可能性 「実行可能性」 TM 停止 多項式時間で停止 論法 還元 多項式時間還元 出発点 Lu SAT 伝わる性質 決定不能性 NP完全性 時間計算量 入力wに対するTM Mの計算時間とは停止するま でのステップ数。(停止しないとき無限大) TM Mは長さnの任意の語に対する計算時間が 高々T(n)であるとき、Mの時間計算量(time complexity)はT(n)であるという。 多項式時間で解ける問題 重みつきグラフに対して、重みの和が最小とな る極大木(minimum-weight spanning tree, MWST)を求めよ。 12 1 15 10 3 2 20 18 4 Kruskalのアルゴリズム 1. はじめは各頂点にべつべつの連結成分が 割り当てられる。 2. まだ取り上げていない辺に対して、 1. 両端が異なる連結成分に属すとき、ふたつの連 結成分を合併する。(片方に属する頂点に割り 当てた連結成分をもう片方のものに書き換え る。) 2. 両端が同じ連結成分に属すとき、なにもしない。 3. 処理済の辺が頂点の数より1つ少ないか、 すべての辺を処理すれば終わり。 アルゴリズムの適用例 12 1 15 10 3 2 20 18 4 MWSTの時間計算量 1. 各端点にははじめ別々の連結成分が割り当 てられているものとする。 2. 各辺eについて次を繰り返す(O(e)) 1. 未処理のeのうち重み最小のものを選ぶ(O(e)) 2. 選んだ辺の両端点が属する連結成分を見つける。 (O(m)) 3. 両端点の連結成分が異なるとき、一方の連結成 分に属すノードについて所属する連結成分をもう 一方の連結成分に書き換える。(O(m)) 以上を合わせるとO(e(e+m)) MWSTと決定問題 • MWSTは木を答えとして要求するが決定問 題に対するTMはyes/noしか返さない。 • MWSTを改変して決定問題にする。 – 限界量Wを定め、答えの木の重みがW以下であ るときyes、W以上であるときnoとする。 上の決定問題は元のMWSTよりもやさしい。 実行可能性の理論の主張の多くは、ある問題 が「難しいこと」を示すものなので、上のような 改変の結果やさしくなったものがなおも難しい ことを示せば十分。 MWSTの符号化の例 記号: 0,1,(,),コンマ 1. 各頂点に整数1~mを割り当てる。 2. コードの先頭にmと重み制限Wの2進数表示 をコンマで分けて書く。 3. 頂点i,jを結ぶ重みwの辺(いずれも2進数表 示)を(i,j,w)と書く。 1 2 問題 前述のグラフ(再掲→) 15 12 のコードを求めよ。 10 20 3 18 4 クラスP 決定性TMで多項式時間で解ける問題のクラスを P(polinomial)と書く。 (より形式的には、) 言語LがPに属すとは、 Lを受理する決定性TM Mと多項式T(n)が存在し て、Mは長さnの任意の入力に対して高々T(n) ステップで停止することをいう。 問題PはPに属すとき、実行可能であるといい、そ うでないとき実行不能であるという。 NP 非決定性TMで多項式時間で解ける問題のクラス をNP (nondeterministic polynomial)と書く。 (より形式的には、) 言語LがNPに属すとは、 Lを受理する非決定性TM Mと多項式T(n)が存在 して、Mは長さnの任意の入力に対して動作系列 の長さがT(n)を越えないことをいう。 クラスNPは明らかにクラスPを含むが、Pに含ま れないNPの要素が存在するか否か、すなわち、 P≠NPか否か、は未解決。 非決定性多項式時間で解ける問題 巡回セールスマン問題(traveling salesman problem, TSP) 重みつきのグラフについて、 重みの和がW以下のハミルトン閉路が存在す るか? 12 1 15 10 3 2 20 18 4 TSPの計算量 頂点がm個とするとき、 • 決定性 – すべての順列(m!)にわたって検査する以外にな さそう。(任意の定数cについて、m!>2cm) • 非決定性 – 非決定性多テープTMを用いると、順列をO(m2)で 推測することができる。限界値の検査も同程度。 1テープで模倣するとO(m4) 多項式還元 P2がPに属さないこと(実行不能性)をいうには、 P2を受理するTM M2を仮定すれば、多項式時 間では解けないはずの問題P1(の実例)をP2 に多項式時間で変換(多項式時間還元)する ことでP1を多項式時間で解くTM M1が構成で きること(矛盾)を示せばよい。 P1 多項式時間 変換機 ψ P2 M1 受理 M2 拒否 受理 拒否 NP完全問題 言語(問題)Lは次を満たすときNP完全(NPcomplete)であるという。 1. LはNPに属す。 2. NPに属す任意のL’に対しL’からLへの多項 式時間還元が存在する。 2を満たす場合NP困難(NP-hard)という。 注意:P≠NPは未解決なのでNP完全であるこ とが必ずしも実行不能である(多項式時間で 解けない)ことを意味しないが、仮説として実 行不能であるとする文脈も。 NP完全問題の性質 定理 もしNP完全問題がどれか1つでもPに属すこと がわかったら、P=NP …. すべての問題 …. NPに属す NP完全問題 多項式時間還元 多項式時間還元は推移的 定理 P1はNPに属すとする。P1がNP完全でP1か らP2への多項式時間還元が存在するとき、P2も NP完全である。 (証明)任意の言語Lについて多項式時間還元 ψ:L→P1が存在して長さnの語wをψ(w)に変換する。 ψの時間計算量をp(n)とすると|ψ(w)|<p(n)。 P1からP2への多項式時間還元φの時間計算量を q(m)とすると、ψ(w)を変換するのに要する時間は q(|ψ(w)|)<q(p(n))。したがってψとφの合成の計算量は p(n)+q(p(n)) ψ φ L P1 p(n) P2 q(m) NP完全問題の役割 • NP完全問題が1つみつかれば、それからほかの問 題への多項式時間還元をみつけることでそれらの 問題のNP完全性がいえる。 (決定不能性におけるLuの役割と同じ) TSP …. 多項式時間還元 …. SAT いろいろな問題 ブール式と充足可能性 ブール式(boolean expression)は次のものからなる 1. 2. 3. 4. 変数。変数の値は0(false)と1(true) 2項演算∧と∨。それぞれ論理積と論理和。 1項演算¬。否定。 括弧(、)。 例 x∧¬(y∨z)はブール式 ブール式に対する真理値割り当て(truth assignment)と はEの各変数に値を割り当てること。割り当てTのもと での式Eの値をE(T)と書く。 真理値割り当てTが充足ブール式Eを充足するとは、 E(T)=1となること。 ブール式Eを充足する真理値割り当てが存在するとき、E は充足可能であるという。 充足可能性問題(SAT) 充足可能性問題(satisfiability problem, SAT)とは、 与えられたブール式に関して充足可能か否かを判 定する問題 SATの入力例の表現: 充足可能性は変数の名前にはよらないので、ま ずx1, x2, …, xnに置き換える。 xiを(有限個の記号で表現するため)xj(i)とする。 ここでj(i)はiの2進数表示。変数以外はそのまま。 例 x∧¬(y∨z)の入力符号はx1∧¬(x10∨x11) SATのNP完全性(1) (Cookの定理)SATはNP完全 [証明]NPに属すこと (1)NTMで真理値割り当てTを推測。Eの長さをn としてO(n)で可能。 (2)Tに対してブール式Eを評価し、E(T)=1なら受 理。多テープNTMでO(n2)(式用テープ、真理 値割り当て用テープ) SATのNP完全性(2) 任意のL∈NPに対してLからSATへの多項式時間還 元が存在すること。 1テープNTM MでL(M)=Lであって多項式p(n)の時間 で必ず停止するが存在する。 すると、Mが長さnの入力wを受理するとき次の条件を 満たす動作列a0⇒…⇒akが存在。 1. a0はwに対する初期ID 2. k≦p(n) 3. akは受理状態を持つID 4. 各aiは末尾を除き空白以外の列。 SATのNP完全性(3) wに対するMの受理動作列が存在することを ブール式EM,wの充足可能性で表現する。 (還元の条件:wが受理される⇔Eが充足可能) 各IDaiを記号の列Xi0Xi1…Xi,p(n)であらわす。ど れかは状態。 テープ記号または状態Aに対して、Xij=Aをあら わす変数をyijAとする。Xij=A⇔yijA=1 動作列がwの受理を表すことをyijAのブール式 で表現すればよい。 SATのNP完全性(4) wの受理であるためには、 0. 記号は場所あたり1つ。 1. はじめがq0w 2. 遷移がd に従う 3. 受理状態に到達する 以下これらをブール式で表現する。 SATのNP完全性(5) ブール式で表しやすいようにaiに便宜上の調整 (変更)を施す。 1. 末尾の空白部分をIDの長さp(n)+1まで含め る。(すべてのIDの長さを同じに。) 2. p(n)回目以前の動作で受理状態に到達した らそのままp(n)回目までその受理状態のま ま動作を続ける。(常にp(n)回動作。) SATのNP完全性(6) … … ID 0 1 a0 a1 X00 X01 X0,p(n) X10 X11 X1,p(n) ai ai+1 ap(n) Xp(n),0 Xp(n),1 Xi,j-1 Xi,j p(n) Xi,j+1 Xi+1,j-1 Xi+1,j Xi+1,j+1 Xp(n),p(n) SATのNP完全性(7) 0. 記号は場所あたり1つ U=∧ij[∨A yijA ∧¬(∨A≠C(yijA∧yijC))] 1. はじめがq0w S=y00q0∧y01a1∧y02a2∧…∧y0nan ∧y0,n+1,B∧y0,n+2,B∧…∧y0,p(n),B SATのNP完全性(8) 2. 遷移がd に従う。 • Ni :ID ai の次にID ai+1がこれる。 • fij(W,X,Y,Z)=1 ⇔Xi,j-1=W, Xi,j=X, Xi,j+1=Y, Xi+1,j=Z となりうる。 Ni=∧j(∨f(W,X,Y,Z)=1 yi,j-1W∧yijX∧yi,j+1Y∧yi+1,j,Z) N=∧iNi SATのNP完全性(9) 3. 受理状態に到達する。 Xp(n), j (j=1,…,p(n)) のいずれかが受理状態であ ればよい。 Fj: Xp(n), j が受理状態∈{a0,…,ak}=受理状態集合 Fj=yp(n), j, a0∨…∨yp(n), j, ak F=F1∨…∨Fp(n) SATのNP完全性(10) 以上をまとめて、 EM,w=U∧S∧N∧F 多テープ決定性TMでO(n2) (証明終わり) 制限された形の充足可能性問題 • CSAT : 乗法標準形、CNF • 3SAT : 3-乗法標準形(項の長さ3) • kSAT : k-乗法標準形 いずれもNP完全 乗法標準形 • 変数または否定を施した変数をリテラル(literal)とい う。 • 1つのリテラルまたは2つ以上のリテラルをORで結ん だものを項(clause)という。 • 乗法標準形(CNF, conjunctive normal form, 和積標 準形とも)であるとは、項をANDで結んだ形をしている ことをいう。(項が1つだけの場合も。) • k-乗法標準形(k-CNF)は項がちょうどk個のリテラル。 以下∨を和(+)、∧を積として書く場合もある。(短縮形) 結合は(論理)積のほうが強い。 乗法標準形の例 • (x∨¬y)∧(¬x∨z)∧(¬z∨y)を短縮形で書くと、 (x+¬y)(¬x+z)(¬z+y) 2-CNF • xyzは1-CNF ブール式のCNFへの変換 • 論理式としての同値性を保存したままの変換 では多項式時間を越える場合も。 • 充足可能性は同値性よりも弱い!(充足可能 性を保存するだけなら多項式時間で可能) SATからCNFへの還元 次の2ステップからなる。 1. ¬を変数につくものだけにする。 1. ¬(E∧F) ⇒ ¬(E)∨¬(F) 2. ¬(E∨F) ⇒ ¬(E)∧¬(F) 3. ¬(¬(E)) ⇒ E 2. リテラルの積の和をCNFに変換(あとで) 第1ステップの計算量 与えられるブール式Eに含まれる演算子の個数 nに関する帰納法で次を示す。 1. 得られるブール式Fに含まれる演算子の 個数は2n-1を超えない 基礎:演算子が1つのとき。 ¬x, x∧y, x∨yはいずれもそのままでOK。2n-1=1 帰納:演算子の個数n-1以下のブール式につい ては成り立つと仮定する。E=E1∨E2または E=E1∧E2の場合(一番外側の演算子が¬で ないとき)、E1,E2の演算子数がa,bとし、E1が F1, E2がF2に変換されるとすると、それぞれ F1∨F2または(F1)∧(F2)とする。 これらの演算子数は2a+2b-1<2(a+b+1)-1 E=¬E1 1. E1=¬E2のときE=¬(¬E2)=E2 2. E1=E2∨E3のときE=¬(E2∨E3)=¬(E2)∧¬(E3)。 ここで¬(E2)、¬(E3)に含まれる演算子数はE の演算子数よりも少ないので、それぞれリテ ラルだけに¬がつくブール式F2、F3に変換で きる。このとき、F2∧F3とすればよい。E2, E3に 含まれる変数の数をそれぞれa,bとすると、F に含まれる変数の数は2(a+1)-1+2(b+1)1+1=2(a+b+2)-1 3. E1=E2∧E3のとき、2と同様。 第2ステップ Eは(1ステップで得られた)変数以外には¬がつかな いブール式であるとする。Eの長さに関する帰納法 で次を示す。 ある定数cが存在して、長さnの任意のEに対して、次 のFが存在する。 1. FはCNF 2. FはEから高々c|E|2で構成できる。 3. Eに対する真理値割り当てTがEを真にするための 必要十分条件はTの拡張SでFを真にするものが 存在することである。 3により還元で充足可能性が保存されることを確かめ よ。 真理値割り当ての拡張 Eの変数の集合をV,TをEの真理値割り当てとする。 S:W→{0,1}がTの拡張(extension)であるとは、V⊆Wで あって、 S(v)=T(v) (v∈V) を満たすことをいう。 (同じことをTはSの制限であるといい、S|V=Tと書く。) Eの変数の集合をVar(E)と書くと、Var(E)⊆Var(F)のと きFの真理値割り当てSのVar(E)への制限S|Var(E)のこ とを我々は簡単にS|Eと書く。 CNFの構成 基礎: Eがリテラル → F=E 帰納: E1, E2はそれぞれ F1=g1∧g2∧…∧gp F2=h1∧h2∧…∧hq に変換されるとする(帰納法の仮定)。ただし、F1,F2 に現れる変数はEに表れるものを除いて異なる ものとする。このとき E=E1∧E2 ⇒ F=F1∧F2 E=E1∨E2 ⇒ F=(y+g1)(y+g2)…(y+gp) ∧(¬y+h1)(¬y+h2)…(¬y+hq) 第2ステップの3の証明(1/3) TがEを充足⇔Fを充足するS(Tの拡張)が存在 を|E|に関する帰納法で示す。 基礎:|E|,=1または2のとき。F=Eであるから明らか。 帰納: 場合1: E=E1∧E2 (⇒)TがEを充足すると仮定する。T1=T|E1,T2=T|E2とする。T1はE1、 T2はE2を充足する。帰納法の仮定から、T1の拡張S1でF1を充足 するもの、T2の拡張S2でF2を充足するものが存在する。S1∪S2(S1 とS2それぞれの定義域の和集合上で定義され、S1の定義域上で S1と、S2の定義域上でS2と一致する関数。定義からF1とF2が共通 に持つ変数はEのものに限るので定義域が重なる部分ではTに 一致する。)をFの真理値割り当てSとする。SはF1とF2を充足す るのでF=F1∧F2を充足する。 (<=)Tの拡張SがFを充足すると仮定する。S1=S|F1,S2=S|F2とする。 F=F1∧F2であるからS1はF1を、S2はF2を充足する。S1はT1の拡張で ありS2はT2の拡張ゆえ、帰納法の仮定により、T1はE1、T2はE2を 充足する。よってTはEを充足する。 第2ステップの3の証明(2/3) 場合2: E=E1∨E2 (⇒)TがEを充足すると仮定する。TはE1を充足するか、ま たはE2を充足する。E1を充足する場合、帰納法の仮 定からT1の拡張S1でF1を充足するものが存在する。T の拡張Sを次のように構成する。 1. x∈Var(F1)に対してS(x)=S1(x) (これによりF1=1) 2. S(y)=0 3. x∈Var(F1)-Var(F2)に対しては1でも0でもよい。 F=(0+g1)(0+g2)…(0+gp)(1+h1)(1+h2)…(1+hq) =g1∧g2∧…∧gp=F1=1 ゆえにSはFを充足する。E2を充足する場合も同様。 (S(y)=1) 第2ステップの3の証明(3/3) (<=)Tの拡張SがFを充足すると仮定する。 S(y)=0または1である。 S(y)=0の場合はF=g1∧g2∧…∧gp=F1ゆえSはF1を 充足する。S1=S|F1と書くと、S1はF1を充足す る。したがって帰納法の仮定によりT1=T|E1 はE1を充足する。 E=E1∨E2であるからTはEを充足する。 S(y)=1の場合も同様。 (3の証明おわり) 第2ステップの2の証明 場合1および2のいずれにおいても、EからE1, E2をつくる手間とF1, F2からFをつくる手間は線型の時間。長さnのEからFを構成す るのに要する時間T(n)は次の漸化式に従う。 T(1)=T(2)≦e e:定数 T(n)≦dn + max(T(i) + T(n-i-1)) T(i)はE1からF1, T(n-i-1)はE2からF2 帰納法で∃c∀n.T(n)≦cn2を示す。 基礎:n=1,2のときc≧eのようにcを選ぶ。 帰納:n≧3のとき,帰納法の仮定から T(i)≦ci2,T(n-i-1)≦c(n-i-1)2ゆえ、 T(i)+T(n-i-1)≦c(n2-2i(n-i)-2(n-i)+1) n≧3, 0<i<nから、2i(n-i)>n, 2(n-i)>2となる。 このとき、 T(i)+T(n-i-1)≦c(n2-n-2+1)<c(n2-n) T(n)≦dn + c(n2-n)=cn2+(d-c)n d≦cのようにcをえらべばT(n)≦cn2となる。(証明おわり) 3SATはNP完全 [証明]SATがNPに属すゆえ3SATもNPに属す。 CSATから3SATへの還元を次で定義する。 CSATの式E=e1∧e2∧…∧ekが与えられたとき、 各eiに対して下で定義する置き換えを行うことでF を構成する。各々の場合について、Eに対する 真理値割り当てがEを充足するための必要十分 条件がその割り当ての拡張でFを充足するもの が存在することであることを示す。 1. eiが一つのリテラルのとき。たとえば(x)の場合。二 つの変数u,vを導入して、 (x+u+v)(x+u+¬v)(x+¬u+v)(x+¬u+¬v)に置き換える。 これを充足するにはxが真であることが必要十分。 したがって、Eを充足する真理値割り当てはFを充 足する拡張を持つ。また逆も成り立つ。 3SATのNP完全性の証明(つづき) 2. eiが二つのリテラルのとき。たとえば(x+y)の場合。一 つの変数zを導入して、(x+y+z)(x+y+¬z)で置き換え る。これを充足するにはx+yが真であることが必要十 分。 3. eiが三つのリテラルのとき。すでに3-CNFなのでその まま。 4. m≧4に対して、ei=(x1+x2+…+xm)のとき、y1,y2,…, ym-3 を導入して、(x1+x2+y1)(x3+¬y1+y2)(x4+¬y2+y3)… …(xm-2+¬ym-4+ym-3)(xm-1+xm+¬ym-3) で置き換える。Eを充足する真理値割り当てTがxjを充足 するとする。このとき、y1,y2,…, yj-1をすべて真、 yj,yj+1,…, ym-3をすべて偽にすれば、置き換えた項は 充足される。Tがすべてのxiを偽にするとき、置き換え た項は充足できない。 変換に要する時間は明らかに線型。(証明おわり) 3SATから判るNP完全問題 • • • • • 独立集合問題(IS) 頂点被覆問題(NC) 有向ハミルトン閉路問題(DHC) (無向)ハミルトン閉路問題(HC) 巡回セールスマン問題(TSP) 独立集合問題(IS) 定義: 無向グラフGの頂点集合の部分集合IはIに属すど の2点もGの辺で結ばれないとき独立集合という 問題:与えられた無向グラフGがサイズkの独立集 合を持つか? 還元のもとになる問題:3SAT 3SATをISに還元 E = e1∧e2∧…∧em を3-CNFとし、ei=(ai1+ai2+ai3)とする。 これを下図のような無向グラフGに還元する。 図で列は項に、列中の頂点はリテラルに対応する。 列中の頂点はすべて互いにつなぎ、同じ変数からなる リテラルで正と負のものはつなぐ。(m2程度で可) [1,1] [j,1] [i,1] [m,1] aj1=¬xp [1,2] [i,2] [1,3] [i,3] [m,2] ai2=xp [m,3] Gが頂点数mの独立集合をもつ ⇒Eが充足可能 IをGの独立集合としその頂点数がmであるとする。 Eに対する真理値割り当てTを次のように定める。 T(x)=1 ([i,j]∈I, aij=x) T(x)=0 ([i,j]∈I, aij=¬x) T(x)=なんでも ([i,j]∈I) このとき、Iの要素は各列に高々1個(同じ列の頂点は つながっているから。)したがってm個を選ぶにはす べての列に少なくとも1個なければならない。 Tは矛盾することはない。(aij=x かつakl=¬x ならば辺 ([i,j],[k,l])により、[i,j]と[k,l]の両方がIに属すことは ない。) Eが充足可能 ⇒Gが頂点数mの独立集合をもつ Eを充足する真理値割り当てをTとする。Eの各 項からTで真になるリテラルを1つずつ選び、 それらに対応するm頂点を集めたものをIとす る。 Iは独立集合。辺([i,j],[k,l])が存在すると仮定す る。[i,j],[k,l]に対応するリテラルはx,¬x(順不 同)。真になるリテラルだけを集めたことに反 する。 頂点被覆問題(NC) 定義: 無向グラフGの頂点の集合で任意の辺の端点の少な くとも1つを含むものを頂点被覆という 問題:与えられた無向グラフGがサイズkの頂点被覆を 持つか? 還元のもとになる問題:IS 独立集合と頂点被覆 グラフG=(N,E)の頂点集合の部分集合をIとす る。Iの補集合N-IをCとする。このとき、 Iが独立集合⇔C頂点被覆 示せ 有向ハミルトン閉路問題(DHC) 問題: 有向グラフGのすべての頂点をただ一回だけ 通る閉路が存在するか? 還元のもとになる問題: 3SAT 3SATをDHCに還元 F = e1∧e2∧…∧ek を3-CNFとする。 ej = (aj1+aj2+aj3) (j=1,…,k) ajlはリテラル xi (i=1,…,n) Fに出現する変数 xi (i=1,…,n) に対して、 H1 ai Hi bi0 ci0 bi1 ci1 Hi cimi di miはxiの個数(出現回数) と¬xiの個数の多い方 … … bimi H2 Hn ej (j=1,…,k) に対して、グラフIjを構成 rj sj tj uj vj wj Ij Ij ej = (aj1+aj2+aj3) aj1が負 aj1が正 bik cik+1 … bip+1 cip … bip cik rj sj tj rj sj tj uj vj wj uj vj wj Hg 変数の添字がiならHiに接続 … ej = (aj1+aj2+aj3) aj1= ¬xi aj2= ¬xg aj3= xh Hh rj sj tj … uj vj wj Hi Hg Hh すべてのIjを接続 … … I1 Ij … Hi Ik G F 充足可能⇒閉路存在 ai ai H1 bi0 ci0 bi1 ci1 bi1 ci1 cimi bimi di H2 … bimi … ci0 … bi0 cimi di Hn Ijの性質 • rjに入る道は6つの頂点を1回ずつ通ってujか ら出る。sj,tjも同様。 rj sj tj Ij uj vj wj F 充足可能⇒閉路存在 bip … bip+1 cip rj uj sj vj tj wj すべてのjについて aj1,aj2,aj3のいずれかは真。変数 への真理値割り当てが1でリテ ラルが正であるか真理値割り 当てが0で負のリテラルである。 これは真になるリテラルの変数 をxiとすると、Hiが赤でIjとの結 合も赤であるか、Hiが青でIjと の結合も青であることを意味す る。 このとき、辺cip→bip+1のかわり にcipからrjに行き、ujから bip+1にもどる道を通ってよい。 H1 I1 … H2 Ij … … Ik Hn 接続先は同じ色 閉路存在⇒F 充足可能 ハミルトン閉路が存在すると仮定する。 Ij のすべての頂点 を訪れることから ci → rj → bi+1 または bi → rj → ci+1 が存在。 ci → rj → bi+1 の場合 ciから出るためには bi → ci (そうでないとbiが到達不 能)ゆえに Hpは赤すなわち、 ∀i. bi → ci いま T(xp)=1とする。まず、ci → rj としたのはaj1=xpが正のリテラルであったからであった. よってaj1=1 すなわちei=1 すべてのIj について同じことが言える。よって F=e1∧...∧ep=1 無向ハミルトン閉路問題(HC) 問題: 無向グラフGのすべての頂点をただ一回だけ 通る閉路が存在するか? 還元のもとになる問題: DHC DHCをHCに還元 有向グラフGdを無向グラフGuに変換する。 v v(0) w(0) v(1) w(1) v(2) w(2) w Gdに閉路があればGuに閉路があることは自明。 逆にGuの閉路の添字は012012…の順かその逆。 一方を選んで20の辺を有向辺とすればよい。 巡回セールスマン問題(TSP) 問題: 辺に整数の重みをもつ無向グラフGが重みの 和がk以下であるようなハミルトン閉路を持つ か? 還元の元になる問題: HC 証明: (容易) 取り上げなかった話題 • 領域計算量 (11章) • 帰納関数論 – 渡辺治,米崎直樹 「計算論入門―計算の基本原 理理解のために」(日本評論社) • λ計算 – 高橋正子 「計算論―計算可能性とラムダ計算」 (近代科学社) これから勉強すべきこと • 数理論理学 – 述語論理 (標準化定理, Gödelの完全性定理, Gödelの不完全性定理) • 人工知能(特に推論システム) – 融合法(resolution) • プログラミング言語 – Lisp, Prolog, ML 理論計算機科学の分野 • • • • • • 型理論 (type theory) プログラム意味論 (model theory) プログラム検証 (program verification) プログラム自動生成 (program synthesis) 計算機代数 (computer algebra) 定理自動証明 (automated reasoning) 理論計算機科学の応用 • • • • • • • • • コンパイラ設計(型理論の応用) 言語設計(計算モデル、意味論) 認証技術、電子商取引(推論システム) セキュアコンピューティング(推論、計算論) プログラム/システム検証 ハードウエア検証(モデル検査) CADシステム(計算機代数、定理自動証明) 自動化技術(推論システム) ゲームプログラム(人工知能) (おまけ)推進中の研究 • • • • • • • 幾何定理自動証明 幾何学的プログラミング言語設計 記号的代数計算の高速化 プログラム仕様抽出の自動化 プログラム検索 計算幾何アルゴリズム検証 将棋の新手発見
© Copyright 2024 ExpyDoc