チューリング・マシンとコンピュータ工学

69
チューリング・マシンと コンピュータ工学 コンピュータ工学 講義 担当者:辻 順平 2015/10/26 (月)

Upload: junpei-tsuji

Post on 06-Jan-2017

1.034 views

Category:

Education


4 download

TRANSCRIPT

Page 1: チューリング・マシンとコンピュータ工学

チューリング・マシンと コンピュータ工学

コンピュータ工学 講義 担当者:辻 順平

2015/10/26 (月)

Page 2: チューリング・マシンとコンピュータ工学

2

参考文献

•  チャールズ・ベゾルド著「チューリングを読む コンピュー

タサイエンスの金字塔を楽しもう」日経BP社

•  坂井久司 著「チューリングマシン 説明できますか?」カッ

トシステム

Page 3: チューリング・マシンとコンピュータ工学

本日のトピック •  チューリング・マシンとは

•  チューリング・マシンを使った計算

•  万能チューリング・マシン

•  ランダム・アクセス・マシン

3

Page 4: チューリング・マシンとコンピュータ工学

ノイマン型コンピュータ

ランダムアクセスマシン(RAM)

万能チューリング・マシン 4

抽象化 具体化

数学的に等価

Page 5: チューリング・マシンとコンピュータ工学

チューリング・マシン

5

アラン・チューリングが 「計算」によってできること を数学的に定義した =>コンピュータのモデル

Page 6: チューリング・マシンとコンピュータ工学

6

アラン・チューリング (1912 ‒ 1954)

•  チューリング・マシンによる決定問題の解決

•  チャーチ=チューリングのテーゼ

•  人工知能のチューリング・テスト

 (イミテーション・ゲーム)

•  チューリング・ボンベを用いたエニグマ解読

•  チューリング・パターンの発見

主な業績

Page 7: チューリング・マシンとコンピュータ工学

ヒルベルトの第10問題 ディオファントス方程式が整数解を持つか否かを

決定できるアルゴリズムを考案せよ

7

ディオファントス方程式:整数係数の多変数代数方程式のこと

x

2 - 5x+ 4 = 0

x

n + y

n = z

n など

Page 8: チューリング・マシンとコンピュータ工学

アルゴリズム •  有限ステップで終了する

•  明確に指定された有限個の機械的操作手順

8

Page 9: チューリング・マシンとコンピュータ工学

9

x

2 - 5x+ 4 = 0

() 1x

2 + (-5)x+ 4 = 0

係数の組: (1,-5, 4)

Page 10: チューリング・マシンとコンピュータ工学

10

(a, b, c) (1,-5, 4)

x =-b±

pb

2 - 4ac

2a

この数が“整数”であることを判定

変数への代入

割り算

掛け算

平方根 加減算

Page 11: チューリング・マシンとコンピュータ工学

11

x

n + y

n = z

n (n � 3)

整数解は存在するか? 問題提起:フェルマー(1665年ごろ)

解決:ワイルズ(1995年)

Page 12: チューリング・マシンとコンピュータ工学

機械的な操作手順とは?

12

•  代入操作? •  四則演算? •  べき乗根? •  大小比較?

Page 13: チューリング・マシンとコンピュータ工学

チューリングのアイデア •  一般的な「機械的な計算手順」を実行可能な仮想的な概念機械を考えよう

•  それは「チューリング・マシン」である

13

Page 14: チューリング・マシンとコンピュータ工学

チューリング・マシンの定義

14

Page 15: チューリング・マシンとコンピュータ工学

15

010001110111 111111111111 入力 出力

状態遷移ルール (機械的操作手順)

0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

Page 16: チューリング・マシンとコンピュータ工学

コンピュータの ブラックボックスモデル

16

出力 (ex. ディスプレイ)

コンピュータ (内部状態が変化する)

入力 (ex. キーボード)

比較

Page 17: チューリング・マシンとコンピュータ工学

17

テープ(無限に長い)

セル

ヘッド

0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

内部状態と遷移ルール

q0

Page 18: チューリング・マシンとコンピュータ工学

18

Q :

⌃ :

� :

� : Q⇥ � ! Q⇥ � ⇥ {L, R}

M の内部状態の集合

入力アルファベット(入力(空白を含まない)の文字の集合)

テープアルファベット(空白文字を含むテープに書かれる文字の集合)

チューリング・マシン

M = (Q, ⌃, �, �, q0)

状態遷移ルール

� : Q⇥ � ! Q⇥ � ⇥ {L,N, R}

Page 19: チューリング・マシンとコンピュータ工学

計算例 19

Page 20: チューリング・マシンとコンピュータ工学

20

例1: 0101010101010101… を出力する (turing1)

Q = {q0, q1, q2, q3} � = {0, 1, BLANK, NONE}

内部状態: テープアルファベット:

状態遷移ルール:

(q0, BLANK) 7! (q1, 0, R)(q1, BLANK) 7! (q2, NONE, R)(q2, BLANK) 7! (q3, 1, R)(q3, BLANK) 7! (q0, NONE, R)

Page 21: チューリング・マシンとコンピュータ工学

21

0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

Q = {q0, q1, q2, q3} � = {0, 1, BLANK, NONE}

内部状態: テープアルファベット:

例1: 0101010101010101… を出力する (turing1)

Page 22: チューリング・マシンとコンピュータ工学

22

現在のセルは “空欄”

現在の状態は q0 0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

Page 23: チューリング・マシンとコンピュータ工学

23

# 状態が q0 で テープが “空欄 (BLANK)” であれば,状態を q1 に変更,”0” を書き込み,右 (R) に移動

現在のセルは “空欄”

現在の状態は q0

(q0, BLANK) 7! (q1, 0, R)(q1, BLANK) 7! (q2, NONE, R)(q2, BLANK) 7! (q3, 1, R)(q3, BLANK) 7! (q0, NONE, R)

0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

Page 24: チューリング・マシンとコンピュータ工学

24

状態が q1 に変わる

テープが “0” に書きかわる ヘッド位置が右 (R) に移動

(q0, BLANK) 7! (q1, 0, R)(q1, BLANK) 7! (q2, NONE, R)(q2, BLANK) 7! (q3, 1, R)(q3, BLANK) 7! (q0, NONE, R)

0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

# 状態が q0 で テープが “空欄 (BLANK)” であれば,状態を q1 に変更,”0” を書き込み,右 (R) に移動

Page 25: チューリング・マシンとコンピュータ工学

25

# 状態が q1 で テープが “空欄 (BLANK)” であれば,状態を q2 に変更,右 (R) に移動

0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

(q0, BLANK) 7! (q1, 0, R)(q1, BLANK) 7! (q2, NONE, R)(q2, BLANK) 7! (q3, 1, R)(q3, BLANK) 7! (q0, NONE, R)現在のセルは “空欄”

現在の状態は q1

Page 26: チューリング・マシンとコンピュータ工学

26

状態が q2 に変わる

テープはそのまま

# 状態が q1 で テープが “空欄 (BLANK)” であれば,状態を q2 に変更,右 (R) に移動

ヘッド位置が右 (R) に移動

(q0, BLANK) 7! (q1, 0, R)(q1, BLANK) 7! (q2, NONE, R)(q2, BLANK) 7! (q3, 1, R)(q3, BLANK) 7! (q0, NONE, R)

0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

Page 27: チューリング・マシンとコンピュータ工学

27

# 状態が q2 で テープが “空欄 (BLANK)” であれば,状態を q3 に変更,”1” を書き込み,右 (R) に移動

(q0, BLANK) 7! (q1, 0, R)(q1, BLANK) 7! (q2, NONE, R)(q2, BLANK) 7! (q3, 1, R)(q3, BLANK) 7! (q0, NONE, R)現在のセルは “空欄”

現在の状態は q2 0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

Page 28: チューリング・マシンとコンピュータ工学

28

状態が q3 に変わる

テープはそのまま

# 状態が q2 で テープが “空欄 (BLANK)” であれば,状態を q3 に変更,”1” を書き込み,右 (R) に移動

ヘッド位置が右 (R) に移動

(q0, BLANK) 7! (q1, 0, R)(q1, BLANK) 7! (q2, NONE, R)(q2, BLANK) 7! (q3, 1, R)(q3, BLANK) 7! (q0, NONE, R)

0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

Page 29: チューリング・マシンとコンピュータ工学

29

# 状態が q3 で テープが “空欄 (BLANK)” であれば,状態を q0 に変更,右 (R) に移動

(q0, BLANK) 7! (q1, 0, R)(q1, BLANK) 7! (q2, NONE, R)(q2, BLANK) 7! (q3, 1, R)(q3, BLANK) 7! (q0, NONE, R)現在のセルは “空欄”

現在の状態は q3 0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

Page 30: チューリング・マシンとコンピュータ工学

30

# 状態が q3 で テープが “空欄 (BLANK)” であれば,状態を q0 に変更,右 (R) に移動

(q0, BLANK) 7! (q1, 0, R)(q1, BLANK) 7! (q2, NONE, R)(q2, BLANK) 7! (q3, 1, R)(q3, BLANK) 7! (q0, NONE, R)

0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

状態が q0 に変わる

テープはそのまま ヘッド位置が右 (R) に移動

Page 31: チューリング・マシンとコンピュータ工学

31

0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANK BLANK

BLANK BLANK

以下,繰り返し

Page 32: チューリング・マシンとコンピュータ工学

32

0 1 0 1 0 1 0 …

出力: 01010101010101010101010101…

Page 33: チューリング・マシンとコンピュータ工学

デモンストレーション

http://tsujimotter.info/works/turing/

33

turing1 を実行

Page 34: チューリング・マシンとコンピュータ工学

34

状態遷移ルール: (q0, BLANK) 7! (q1, 0, R)(q1, BLANK) 7! (q2, NONE, R)(q2, BLANK) 7! (q3, 1, R)(q3, BLANK) 7! (q0, NONE, R)

q_0, BLANK, q_1, 0, R q_1, BLANK, q_2, NONE, R

q_2, BLANK, q_3, 1, R q_3, BLANK, q_0, NONE, R

Page 35: チューリング・マシンとコンピュータ工学

35

q_0: 初期状態 q_acc: 受理状態 q_rej: 拒否状態 BLANK: 空白 ANY: BLANK 以外 NONE: 何も書き込まない R: ヘッドを右へ 1 セル移動 L: ヘッドを右へ 1 セル移動 N: ヘッドを移動させない

講義内のルール

Page 36: チューリング・マシンとコンピュータ工学

36

例2: 010110111011110… を出力する (turing2) 内部状態:

テープアルファベット:

状態遷移ルール(その1):

� = {0, 1, e, x, BLANK, NONE}

Q = {q0, q1, q2, q3, q4, q5, o1, o2, o3, o4, a0, a1, p0, p1, k0, k1, k2}

(q0, BLANK) 7! (q1, e, R)(q1, BLANK) 7! (q2, e, R)(q2, BLANK) 7! (q3, 0, R)(q3, BLANK) 7! (q4, NONE, R)(q4, BLANK) 7! (q5, 0, L)(q5, BLANK) 7! (o0, NONE, L)

Page 37: チューリング・マシンとコンピュータ工学

37

例2: 010110111011110… を出力する

状態遷移ルール(その2):

(o0, 1) 7! (o1, NONE, R)(o1, ANY) 7! (o2, x, L)

(o1, BLANK) 7! (o2, x, L)(o2, ANY) 7! (o3, NONE, L)

(o2, BLANK) 7! (o3, NONE, L)(o3, BLANK) 7! (o0, NONE, L)

(o0, 0) 7! (o0, NONE, N)

Page 38: チューリング・マシンとコンピュータ工学

38

例2: 010110111011110… を出力する

状態遷移ルール(その3):

(p0, x) 7! (a0, BLANK, R)(p0, e) 7! (k0, NONE, R)

(p0, BLANK) 7! (p1, NONE, L)(p1, ANY) 7! (p0, NONE, L)

(p1, BLANK) 7! (p0, NONE, L)

(a0, 0) 7! (a1, NONE, R)(a0, 1) 7! (a1, NONE, R)

(a1, ANY) 7! (a0, NONE, R)(o1, BLANK) 7! (a0, NONE, R)(a0, BLANK) 7! (p0, 1, L)

状態遷移ルール(その4):

Page 39: チューリング・マシンとコンピュータ工学

39

例2: 010110111011110… を出力する

状態遷移ルール(その5): (k0, ANY) 7! (k1, NONE, R)(k1, ANY) 7! (k0, NONE, R)

(k1, BLANK) 7! (k0, NONE, R)(k0, BLANK) 7! (k2, NONE, L)(k2, ANY) 7! (o0, NONE, L)

(k2, BLANK) 7! (o0, NONE, L)

Page 40: チューリング・マシンとコンピュータ工学

40

q0 q1 q2 q3 q4

o1o0

o2

p0

p1

q5

o3

k0 k2

BLANKe, R

BLANKe, R

BLANK0, R

BLANKNONE, R

BLANKNONE, L

BLANK0, L

1NONE, R

BLANK

x, L

ANY,BLANKNONE, L

BLANKNONE, L

ANYNONE, L

0NONE,N

0, 1NONE, R

ANY,BLANKNONE, R

BLANK1, L

x

BLANK, R

eNONE, R

BLANKNONE, L

ANY,BLANKNONE, L

ANYNONE, R

ANY,BLANKNONE, R

BLANK0, L

ANY,BLANKNONE, L

a0

a1

k1

Page 41: チューリング・マシンとコンピュータ工学

41

Page 42: チューリング・マシンとコンピュータ工学

参考:小数の二進法表現

42

= ( 0 . 0 1 0 1 0 1 0 …)2

0 1 0 1 0 1 0 …

1

3= 0⇥ 1

21+ 1⇥ 1

22+ 0⇥ 1

23+ 1⇥ 1

24+ 0⇥ 1

25+ 1⇥ 1

26+ 0⇥ 1

27+ · · ·

= 0⇥ 1

21+ 1⇥ 1

22+ 0⇥ 1

23+ 1⇥ 1

24+ 0⇥ 1

25+ 1⇥ 1

26+ 0⇥ 1

27+ · · ·

Page 43: チューリング・マシンとコンピュータ工学

参考:小数の二進法表現

43

(0.b1b2b3b4b5 · · · )2

= b1 ⇥1

21+ b2 ⇥

1

22+ b3 ⇥

1

23+ b4 ⇥

1

24+ b5 ⇥

1

25· · ·

=1X

n=1

bn ⇥ 1

2n

Page 44: チューリング・マシンとコンピュータ工学

命題「n は素数である ( isPrime(n) )」を表現する

44

01101010001010001… 2 3 5 7 11 13 17

素数のときに “1”が表示される

Page 45: チューリング・マシンとコンピュータ工学

例題 •  “0.01000000…” を出力するチューリング・マシン

•  “0.001001001…” ( 3 回に 1 回 “1”) を出力する

チューリング・マシン

•  その他,自由に考えてみましょう

45

Page 46: チューリング・マシンとコンピュータ工学

チューリング・マシンの拡張

46

Page 47: チューリング・マシンとコンピュータ工学

47

010001110111 accept/reject 入力 出力

状態遷移ルール(機械的操作手順)

0, R NONE, R

NONE, R 1, R

q0

q1

q2

q3

BLANKBLANK

BLANK BLANK

qacc

ANYNONE,N

“受理状態 (qacc)” または “拒否状態 (qrej)” に 到達するとマシンは停止する (ルール外の遷移はすべて  拒否状態 への遷移動作とみなす)

Page 48: チューリング・マシンとコンピュータ工学

48

Q :

⌃ :

� :

� : Q⇥ � ! Q⇥ � ⇥ {L, R}

M の内部状態の集合

入力アルファベット(入力(空白を含まない)の文字の集合)

テープアルファベット(空白文字を含むテープに書かれる文字の集合)

状態遷移ルール

� : Q⇥ � ! Q⇥ � ⇥ {L,N, R}

M = (Q, �, �, �, q0, qacc, qrej)

受理状態 拒否状態 (判定付き)チューリング・マシン ⌃ :

Page 49: チューリング・マシンとコンピュータ工学

49

q0

例3: 入力文字列に 0 が少なくとも 1 つ存在する (turing3)

qacc

0NONE,N

1NONE, R

内部状態:

テープアルファベット:

Q = {q0, qacc, qrej}

� = {0, 1, BLANK}

入力アルファベット: ⌃ = {0, 1}

Page 50: チューリング・マシンとコンピュータ工学

50

内部状態:

テープアルファベット:

例4: 入力文字列の「 3 の倍数」番目の文字がすべて “1” である

� = {0, 1, BLANK}

入力アルファベット: ⌃ = {0, 1}

q0

0NONE,N

qacc

qrej

q1

q2

BLANKNONE,N1

NONE, R

ANYNONE, R

ANYNONE, R

Q = {q0, q1, q2, qacc, qrej}

Page 51: チューリング・マシンとコンピュータ工学

チューリング・マシンの 計算能力

51

Page 52: チューリング・マシンとコンピュータ工学

計算モデル •  帰納的関数(クルト・ゲーデル, 1934年)

•  λ計算(アロンゾ・チャーチ, 1933年)

•  チューリング・マシン(アラン・チューリング, 1935年)

52

これらは数学的にすべて等価

Page 53: チューリング・マシンとコンピュータ工学

チャーチ=チューリングのテーゼ

アルゴリズム(機械的操作手順)とは,チューリング・マシンによって定義される計算過程である

53

Page 54: チューリング・マシンとコンピュータ工学

万能チューリング・マシン

54

Page 55: チューリング・マシンとコンピュータ工学

55

01010101010… 出力

M = (Q, �, �, �, q0)

チューリング・マシン

Page 56: チューリング・マシンとコンピュータ工学

56

01010101010… 出力

M = (Q, �, �, �, q0)

01010101010… 出力 入力

M = (Q, �, �, �, q0)

チューリング・マシン

万能チューリング・マシン

入力として与えた チューリング・マシンの出力を 再現できる (エミュレート)

Page 57: チューリング・マシンとコンピュータ工学

57

状態遷移ルール:

� = {BLANK, 0, 1}

(q0, BLANK) 7! (q1, 0, R)(q1, BLANK) 7! (q2, BLANK, R)(q2, BLANK) 7! (q3, 1, R)(q3, BLANK) 7! (q0, BLANK, R)

内部状態: テープアルファベット:

チューリング・マシンの符号化 (STEP 1/5)

Q = {q0, q1, q2, q3}

Page 58: チューリング・マシンとコンピュータ工学

58

Q = {q0, q1, q2, q3}

状態遷移ルール:

� = {S0, S1, S2}

q0 S0q1S1R;q1 S0q2S0R;q2 S0q3S2R;q3 S0q0S0R;

内部状態: テープアルファベット:

チューリング・マシンの符号化 (STEP 2/5)

Page 59: チューリング・マシンとコンピュータ工学

59

状態遷移ルール:

q0 S0S1R q1;q1 S0S0R q2;q2 S0S2R q3;q3 S0S0R q0;

Q = {q0, q1, q2, q3} � = {S0, S1, S2}内部状態: テープアルファベット:

チューリング・マシンの符号化 (STEP 3/5)

Page 60: チューリング・マシンとコンピュータ工学

60

状態遷移ルール: DADDCRDAA;DAADDRDAAA;

DAAADDCCRDAAAA;DAAAADDCCRDA;

内部状態: テープアルファベット: Q = {DA,DAA,DAAA,DAAAA}� = {D,DC,DCC}

Q = {DA,DAA,DAAA,DAAAA}

チューリング・マシンの符号化 (STEP 4/5)

Page 61: チューリング・マシンとコンピュータ工学

61

内部状態: テープアルファベット: Q = {DA,DAA,DAAA,DAAAA}� = {D,DC,DCC}

Q = {DA,DAA,DAAA,DAAAA}

チューリング・マシンの符号化 (STEP 5/5)

DADDCRDAA;DAADDRDAAA;DAAADDCCRDAAAA;DAAAADDCCRDA;

Page 62: チューリング・マシンとコンピュータ工学

62

DADDCRDAA;DAADDRDAAA;DAAADDCCRDAAAA;DAAAADDCCRDA;

0101010101010… 出力

M = (Q, �, �, �, q0)

チューリング・マシン

Page 63: チューリング・マシンとコンピュータ工学

63

01010101010… 出力

M = (Q, �, �, �, q0)

01010101010… 出力

入力

チューリング・マシン

万能チューリング・マシン

入力として与えた チューリング・マシンの出力を エミュレートできる

DADDCRDAA;DAADDRDAAA;DAAADDCCRDAAAA;DAAAADDCCRDA;

DADDCRDAA;DAADDRDAAA;DAAADDCCRDAAAA;DAAAADDCCRDA;

Page 64: チューリング・マシンとコンピュータ工学

ランダム・アクセス・マシン(RAM)

64

Page 65: チューリング・マシンとコンピュータ工学

計算機械 •  有限オートマトン(FA)

•  チューリング・マシン(TM)

•  多テープチューリング・マシン

•  ランダム・アクセス・マシン(RAM)

•  非決定性チューリング・マシン(NTM)

65

チューリング・マシン以下

万能チューリング・マシンと同等 (チューリング完全)

Page 66: チューリング・マシンとコンピュータ工学

66

ランダム・アクセス・マシン(RAM)

Page 67: チューリング・マシンとコンピュータ工学

ノイマン型コンピュータ

ランダムアクセスマシン(RAM)

万能チューリング・マシン 67

抽象化 具体化

数学的に等価

Page 68: チューリング・マシンとコンピュータ工学

ノイマン型コンピュータ

ランダムアクセスマシン(RAM)

万能チューリング・マシン 68

抽象化 具体化

数学的に等価

Page 69: チューリング・マシンとコンピュータ工学

まとめ 整数や命題の一般的な計算のための「機械的操作手順」を数学的に定めた => チューリング・マシン 整数の計算の例: 1/3 => (.0101010101…)2 命題の計算の例: isPrime(n) => 01101010001…

チューリング・マシンはノイマン型コンピュータの原型であり,その計算モデル (RAM) は万能チューリング・マシンと同等の計算能力を有する(チューリング完全)

69