Share
Embed
Transcript
27 slides
-
これまでのあらすじ 少年のもとに現れたサンタ.チューリングマシンの定義 を並べ立てると,無責任にもそのままその場を後にした. 少年「まじかよあの赤服野郎 · · · 」 果たして少年は 謎めいた計算機械で
計算ができるのか!? 前回のおはなし: https://speakerdeck.com/000meta/lovely-christmas-present-from-santa 2 -
復習: 記号 チューリングマシンの定義では,次の記号を用います. S0 , S1 , S2 , .
. . , SN ; q1 , q2 , . . . , qM ; R, L これらの記号の有限列を表現といい,S0 , . . . , SN をアル ファベット,q1 , . . . , qM を内部状態といいます.特に,S0 は B,S1 は 1 と書き,それぞれ空白と数字の 1 を表すこ とにします. 3 -
復習: 4 項系列 次のいずれかの形をした 4 つの記号から成る表現を 4 項 系列といいます. qi
Sj Sk ql qi Sj Rql qi Sj Lql チューリングマシンとは, 「4 項系列の集合 Z で,その中 のどの 2 つの 4 項系列に対しても最初の 2 文字が一致する ことのないもの」のことです.4 項系列はヘッドに対する 司令を表していました. 5 -
復習: 時点表示 ただ 1 つ内部状態を含み,それ以外が全てアルファベッ トであるような表現を時点表示といいました. 1q3 B111B1 記号 qi
は内部状態とともに,チューリングマシンのヘッ ドのテープ上の位置を表しています. qi はすぐ右の文字を見て,4 項系列にしたがって移動・ テープ上の文字の書き換えを行います. 6 -
復習: 文字の書き換え 4 項系列の最初の 2 文字がその司令を実行する条件を,3 文字目がヘッドに与える司令,4 文字目が司令の実行後の 内部状態です.例えば q3
1Bq4 という 4 項系列は, 「内部状態 q3,ヘッドが読んでいる文 字が 1 なら,1 を B に書き換え,内部状態 q4 に移行せよ」 という意味の司令です. 7 -
復習: ヘッドの移動, あと終点表示 3 文字目が R または L のときは,これらはそれぞれ 「ヘッドを右
/ 左へ移動せよ」という意味の司令です. また,チューリングマシン Z に含まれるどのような 4 項 系列に対しても実行できる司令がないような時点表示を, 終点表示といいました. 8 -
復習: 数字の表し方 n を,1 を n + 1 個並べて書いた表現 11
· · · 1 とし,(n1 , . . . , nk ) を ni を B を挟んで並べた表現 n1 Bn2 B · · · Bnk とします. また,時点表示 α に現れる 1 の個数を α とします. n = n + 1 です. 9 -
復習: 計算可能な関数 k 変数関数 f : Nk → N が計算可能であるとは,ある
チューリングマシン Z が存在して,任意の (n1 , . . . , nk ) ∈ Nk に対して,時点表示 q1 (n1 , . . . , nk ) が有限のステップで終 点表示 α に移行し, α = f(n1 , . . . , nk ) となることをい いました. 部分的に計算可能(後述)と区別して,全域的に計算可能ともいいます. 10 -
部分的に計算可能な関数 前回の記事では触れませんでしたが,関数 f が部分的に 計算可能であるとは,あるチューリングマシン Z が存在し て,ある D ⊂
Nk と時点表示 q1 (n1 , . . . , nk ) に対して次が 成り立つことをいいます. 1. (n1 , . . . , nk ) ∈ D のとき,Z はやがて終点表示 α に 移行し, α = f(n1 , . . . , nk ) となる. 2. (n1 , . . . , nk ) / ∈ D で Z は停止しない. 11 -
さて,計算するか · · · 表記を簡単にするため,記号 S が n 個連なった表現を Sn
と表すことにします.例えば n は 1n+1 になります. まずは 1 を足す後者関数 S(x) = x+1 を計算するチュー リングマシンを構成してみましょう. 13 -
後者関数 S(x) = x + 1 時点表示 α = q1
1m1+1 から始まって,終点表示に含ま れる 1 が m + 1 個になればいいですね.って,最初の時点 で α = m + 1 になってるじゃん! そうです.だから 4 項系列の集合 ZS として ZS = {q1 BBq1 } とおけば,α はそのまま終点表示 β になります.めでたく β = m です.なんだか計算した気がしませんね. 14 -
足し算 f(x, y) = x + y 次は f(x, y)
= x+y を計算するチューリングマシンを構 成してみましょう.時点表示 q1 m1 Bm2 = q1 11m1B11m2 から始まって,終点表示 β について, β = m1 + m2 個に なればいいですね.1 を 2 つ除去するチューリングマシン を構成しましょう. Z+ を,次の 4 項系列からなる集合とします. Z+ = {q1 1B11 , q1 BRq2 , q2 1Rq2 , q2 BRq3 , q3 1Bq3 } 15 -
足し算の実行 このチューリングマシン Z+ は次のように動きます. q1 11m1B11m2 → q1 B1m1B11m2 →
Bq2 1m1B11m2 · · · → B1m1q2 B11m2 → B1m1Bq3 11m2 → B1m1Bq3 B1m2 q3 B で始まる 4 項系列は Z+ に含まれないので,これが終 点表示 β です.見事, β = m1 + m2 になりました. 16 -
引き算 f(x, y) = x − y ここまで,なんだか文字を消すばかりであまりおもしろ い操作がありませんでした.でも減算は結構面倒です. 動作が少し複雑なので,各
4 項系列の意味に相当するも のを書き加えておきます. 17 -
チューリングマシン Z− を次で定義します. Z− = {q1 1Bq1 , q1 BRq2
, (左端の 1 を消せ) q2 1Rq2 , q2 BRq3 , (まんなかの B を探せ) q3 1Rq3 , q3 BLq4 , (右端へ行け) q4 1Bq4 , q4 BLq5 , (右端の 1 を消せ) q5 1Lq6 , (m2 が残っていれば続行せよ) q6 1Lq6 , q6 BLq7 , (まんなかの B を探せ) q7 1Lq8 , q7 BRq9 , (m1 の有無を調べよ) q8 1Lq8 , q8 BRq1 , (左端に行き q1 に戻れ) q9 BRq9 , q9 1Lq9 (無限に同じことを繰り返せ) } 18 -
お,おえ · · · ざっくり動作を言うと,こんな感じ. 1. 左端からスタート.まずは左端の 1 を消す. 2.
真ん中を飛び越え,右端へ.右端の 1 を消す. 3. 真ん中を飛び越え,左端へ.左端の 1 を消す. 4. これを繰り返すうちに,m1 か m2 のどちらかが無 くなる.m1 が無くなっていたら,q9 に飛んで無限 ループ.m2 がなくなればそこで終了. 19 -
これ,全域的に計算可能じゃない m1 ≥ m2 のときはうまくいきますが,m1 < m2 のとき は q9
に飛んで無限ループに陥ります.不適切な入力に対し て Z− は停止しないのです. そこで,q9 のところに適当な 4 項系列を追加して, f(x, y) = x − y (x ≥ y) 0 (x < y) としてみましょう. 20 -
減算・改 先程の Z− に含まれていた q9 BRq9 , q9 1Lq9 (無限に同じことを繰り返せ)
を取り除いて,代わりに q9 BRq10 , q10 1Bq9 を追加します.すると,m1 < m2 のとき全ての 1 が消去さ れて停止し,終点表示 β では β = 0 が実現します.やっ たね. 21 -
射影 (x1 , . . . , xn ) →
xi 続いて,n 個の変数の入力に対して,i 番目の変数をその まま返す射影関数 f(x1 , . . . , xn ) = xi を計算するチューリングマシンを構成してみましょう. 22 -
次のように Zpn i を定義すると,Zpn i は,i 番目の 1 のブ ロック以外,全て空白に置き換えるように動作します.
Zpn i = {qj 1Bq2n+j , qj BRqj+1 , q2n+j BRqj , (1 のブロックを消し,次の番号へ) qi 1Bqi , qi BRq2n+i , q2n+i 1Rq2n+i , q2n+i BRqi+1 (先頭以外の 1 を残し,次の番号へ) | 1 ≤ j ≤ k ∧ j = i} 23 -
つかれた · · · あれ,サンタさん? ホーッホッホッ,心配だから様子を見に来たわい.なに, まだ掛け算も関数の合成も定義できておらんのか.哀れ じゃのう.来年のプレゼントは M. Davis
の「計算の理論」 にしてやろう.ま,しばらくは自力で頑張りたまえ. シャンシャンシャン.... ちょ,おいサンターーー! 24