Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
またね、サンタさん / Goodbye, Santa
Search
remeta
December 20, 2022
Science
0
200
またね、サンタさん / Goodbye, Santa
サンタさんがくれたチューリングマシンで遊んでみよう。
remeta
December 20, 2022
Tweet
Share
More Decks by remeta
See All by remeta
サンタさんからのすてきなプレゼント / Lovely Christmas Present from Santa
000meta
0
110
素朴に計算可能性を考える / An Introduction to Computability
000meta
0
360
Other Decks in Science
See All in Science
HAS Dark Site Orientation
astronomyhouston
0
5.1k
Snowflake上でRを使う: RStudioセットアップとShinyアプリケーションのデプロイ
ktatsuya
0
260
(Forkwell Library #48)『詳解 インシデントレスポンス』で学び倒すブルーチーム技術
scientia
2
1.2k
Endocannabinology 101
drbonci
PRO
0
300
A Theory of Scrum Team Effectiveness 〜『ゾンビスクラムサバイバルガイド』の裏側にある科学〜
bonotake
15
6.2k
Science of Scienceおよび科学計量学に関する研究論文の俯瞰可視化_LT版
hayataka88
0
710
Reaping the Benefits of Ritual and Routine
arthurdoler
PRO
0
130
Mastering Feature Engineering: Mining the Hidden Salary Formula with CakeResume
tlyu0419
0
210
最新のAI技術を使った材料シミュレーションで材料研究現場に変革を
matlantis
0
630
汎用原子シミュレータMatlantis のご紹介
matlantis
0
270
PRML Chapter 1 (1.3-1.6)
snkmr
1
170
解説!データ基盤の進化を後押しする手順とタイミング
shomaekawa
1
280
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
33
6.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.8k
BBQ
matthewcrist
82
9k
It's Worth the Effort
3n
181
27k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
13
430
A Modern Web Designer's Workflow
chriscoyier
689
190k
What the flash - Photography Introduction
edds
65
11k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
18
1.2k
Into the Great Unknown - MozCon
thekraken
20
1.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
17
1.5k
GraphQLの誤解/rethinking-graphql
sonatard
59
9.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
129
32k
Transcript
チューリングマシンで 計算ができるようになるスライド remeta これは RICORA Advent Calendar 2022 20 日目の記事です.
1
これまでのあらすじ 少年のもとに現れたサンタ.チューリングマシンの定義 を並べ立てると,無責任にもそのままその場を後にした. 少年「まじかよあの赤服野郎 · · · 」 果たして少年は 謎めいた計算機械で
計算ができるのか!? 前回のおはなし: 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
復習: チューリングマシンの機能 チューリングマシンは有限の長さの紙テープ,例えば 1B111B1111BB1111BB111 の上を動きながら,その文字を書き換えていく機械です. 紙テープ上にはヘッドと呼ばれる装置が置かれていて, 1 つずつ文字を読みながら左右に動いたり文字を書き換え たりします. 4
復習: 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
復習長いぞこの野郎! ごめんなさい. ここからはいろいろな関数が計算可能であることを見て いくよ.ぶっちゃけ全然おもしろくないよ. 12
さて,計算するか · · · 表記を簡単にするため,記号 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
果たして少年は 2023 年を乗り切れるのか!? つづく (?) 25
補足 ここまでの計算以外にも,掛け算,関数の合成,関数の 最小化を行うチューリングマシンが構成できます. このような演算を繰り返して構成される関数は帰納的な 関数と呼ばれ,チューリングマシンによって定義される計 算可能な関数と一致することが知られています. 26
参考文献 M. Davis. 計算の理論. 岩波書店, 1966. みんな,神保町には行ったかい? 行かないとサンタが襲い に来るよ! 27