27
Turing Machine for Programming 日曜数学者 辻 順平 (@tsujimotter)

Turing machine for programming #日曜数学会

Embed Size (px)

Citation preview

Turing Machine for Programming

日曜数学者 辻 順平 (@tsujimotter)

みんなで遊べる チューリング・マシン を作ったった!

2

今日お話ししたいこと

Turing Machine http://bit.ly/turing-machine

にて公開中

3

(@tsujimoter のツイートでも紹介しています)

“計算” とは? 4

アラン・チューリング

5

“計算” =

6

def

チューリング・マシン によってできること

なにそれきになる

7

というわけで

8

チューリング・マシン つくってみた

じゃじゃーん

9

チューリング・マシンの構成要素

10

テープ(無限に長い)

セル ヘッド

左右に移動できる(「移動しない」も可)

ヘッド位置にあるセルを読み書きできる

11

qaccq2

q0

q1

内部状態:

(q_0,1)->(1,R,q_1)

(q_1,1)->(1,R,q_2)

(q_2,1)->(1,R,q_0)

(q_0,BLANK)->(BLANK,N,q_acc)

遷移ルール:

1

1

1 BLANK

q0

12

(q_0,1)->(1,R,q_1)

(q_1,1)->(1,R,q_2)

(q_2,1)->(1,R,q_0)

(q_0,BLANK)->(BLANK,N,q_acc)

qaccq2

q0

q1

内部状態: 遷移ルール:

BLANK

1

1

1

内部状態:q0

テープ:1

q0

13

(q_0,1)->(1,R,q_1)

(q_1,1)->(1,R,q_2)

(q_2,1)->(1,R,q_0)

(q_0,BLANK)->(BLANK,N,q_acc)

qaccq2

q0

q1

内部状態: 遷移ルール:

1

1

1

内部状態:q0

テープ:BLANK

BLANK

q0

(q_0,1)->(1,R,q_1)

(q_1,1)->(1,R,q_2)

(q_2,1)->(1,R,q_0)

(q_0,BLANK)->(BLANK,N,q_acc)

qaccq2

q0

q1

内部状態: 遷移ルール:

1

1

1

受理状態(ACCEPT)

BLANK

qacc

14

(q_0,1)->(1,R,q_1)

(q_1,1)->(1,R,q_2)

(q_2,1)->(1,R,q_0)

(q_0,BLANK)->(BLANK,N,q_acc)

qaccq2

q0

q1

内部状態: 遷移ルール:

1

1

1 BLANK

q0

X

どれにも該当しない場合,拒否状態(REJECT)となって停止

15

16

遷移ルールは,

まさにプログラムそのもの

プログラム言語を作ってみた #内部状態q_0,現在のテープが“0”のとき,

#テープに“1”を書き込み,右方向(R)へと移動

#内部状態をq_1に変更

(q_0,0)->(1,R,q_1)

チューリング・マシン記述言語 (.tm)

17

q_0,0,1,R,q_1

nabeatsu.tm

#テープにあらかじめ書き込んだ文字列(入力)#の“1”の本数が

#“3の倍数”のとき,accept(アホ)

q_0,1,1,R,q_1q_1,1,1,R,q_2

q_2,1,1,R,q_0

q_0,BLANK,BLANK,N,q_acc

#上記以外の状態のとき,q_rejへ

18

accept111111

入力 出力

19

reject11111

入力 出力 nabeatsu.tm

Movie 20

21h"p://bit.ly/turing-machine

acceptor

reject12x35=123

入力 出力

22

与えられた質問に対し yes/no を応答する機械

沸き起こる全能感

23

素数判定とか イケるんじゃね?w

24

Demo 25

26h"p://bit.ly/turing-machine

Turing Machine http://bit.ly/turing-machine

にて公開中

27

(@tsujimoter のツイートでも紹介しています)