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
250
またね、サンタさん / Goodbye, Santa
サンタさんがくれたチューリングマシンで遊んでみよう。
remeta
December 20, 2022
Tweet
Share
More Decks by remeta
See All by remeta
サンタさんからのすてきなプレゼント / Lovely Christmas Present from Santa
000meta
0
130
素朴に計算可能性を考える / An Introduction to Computability
000meta
0
420
Other Decks in Science
See All in Science
ICRA2024 速報
rpc
3
5.9k
3次元点群を利用した植物の葉の自動セグメンテーションについて
kentaitakura
2
880
化学におけるAI・シミュレーション活用のトレンドと 汎用原子レベルシミュレーター: Matlantisを使った素材開発
matlantis
0
430
解説!データ基盤の進化を後押しする手順とタイミング
shomaekawa
1
390
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
130
Reconciling Accuracy, Cost, and Latency of Inference Serving Systems
pjamshidi
0
120
Coqで選択公理を形式化してみた
soukouki
0
280
WeMeet Group - 採用資料
wemeet
0
4.4k
局所保存性・相似変換対称性を満たす機械学習モデルによる数値流体力学
yellowshippo
1
160
サイゼミ用因果推論
lw
1
2.7k
The thin line between reconstruction, classification, and hallucination in brain decoding
ykamit
1
1.2k
Spectral Sparsification of Hypergraphs
tasusu
0
250
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
GitHub's CSS Performance
jonrohan
1030
460k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
A Tale of Four Properties
chriscoyier
158
23k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
What's in a price? How to price your products and services
michaelherold
244
12k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Gamification - CAS2011
davidbonilla
80
5.1k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Code Reviewing Like a Champion
maltzj
521
39k
A Philosophy of Restraint
colly
203
16k
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