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
230
またね、サンタさん / Goodbye, Santa
サンタさんがくれたチューリングマシンで遊んでみよう。
remeta
December 20, 2022
Tweet
Share
More Decks by remeta
See All by remeta
サンタさんからのすてきなプレゼント / Lovely Christmas Present from Santa
000meta
0
120
素朴に計算可能性を考える / An Introduction to Computability
000meta
0
410
Other Decks in Science
See All in Science
位相的データ解析とその応用例
brainpadpr
1
780
統計学入門講座 第1回スライド
techmathproject
0
170
20分で分かる Human-in-the-Loop 機械学習におけるアノテーションとヒューマンコンピューターインタラクションの真髄
hurutoriya
5
2.6k
ABEMAの効果検証事例〜効果の異質性を考える〜
s1ok69oo
4
2.2k
メール送信サーバの集約における透過型SMTP プロキシの定量評価 / Quantitative Evaluation of Transparent SMTP Proxy in Email Sending Server Aggregation
linyows
0
530
(2024) Livres, Femmes et Math
mansuy
0
120
Factorized Diffusion: Perceptual Illusions by Noise Decomposition
tomoaki0705
0
280
WCS-LA-2024
lcolladotor
0
160
ACL読み会2024@名大 REANO: Optimising Retrieval-Augmented Reader Models through Knowledge Graph Generation
takuma_matsubara
0
110
白金鉱業Meetup Vol.16_【初学者向け発表】 数理最適化のはじめの一歩 〜身近な問題で学ぶ最適化の面白さ〜
brainpadpr
10
1.8k
WeMeet Group - 採用資料
wemeet
0
3.9k
第61回コンピュータビジョン勉強会「BioCLIP: A Vision Foundation Model for the Tree of Life」
x_ttyszk
1
1.6k
Featured
See All Featured
Code Review Best Practice
trishagee
65
17k
Documentation Writing (for coders)
carmenintech
67
4.5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Navigating Team Friction
lara
183
15k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
550
Testing 201, or: Great Expectations
jmmastey
41
7.2k
Agile that works and the tools we love
rasmusluckow
328
21k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
BBQ
matthewcrist
85
9.4k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
490
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.1k
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