Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,471 views

Published on

「コンピュータ工学」という講義で使用した資料です。

Published in: Education
  • Be the first to comment

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

  1. 1. チューリング・マシンと コンピュータ工学 コンピュータ工学 講義 担当者:辻 順平 2015/10/26 (月)
  2. 2. 2 参考文献 •  チャールズ・ベゾルド著「チューリングを読む コンピュー タサイエンスの金字塔を楽しもう」日経BP社 •  坂井久司 著「チューリングマシン 説明できますか?」カッ トシステム
  3. 3. 本日のトピック •  チューリング・マシンとは •  チューリング・マシンを使った計算 •  万能チューリング・マシン •  ランダム・アクセス・マシン 3
  4. 4. ノイマン型コンピュータ ランダムアクセスマシン(RAM) 万能チューリング・マシン 4 抽象化具体化 数学的に等価
  5. 5. チューリング・マシン 5 アラン・チューリングが 「計算」によってできること を数学的に定義した =>コンピュータのモデル
  6. 6. 6 アラン・チューリング (1912 ‒ 1954) •  チューリング・マシンによる決定問題の解決 •  チャーチ=チューリングのテーゼ •  人工知能のチューリング・テスト  (イミテーション・ゲーム) •  チューリング・ボンベを用いたエニグマ解読 •  チューリング・パターンの発見 主な業績
  7. 7. ヒルベルトの第10問題 ディオファントス方程式が整数解を持つか否かを 決定できるアルゴリズムを考案せよ 7 ディオファントス方程式:整数係数の多変数代数方程式のこと x2 - 5x + 4 = 0 xn + yn = zn など
  8. 8. アルゴリズム •  有限ステップで終了する •  明確に指定された有限個の機械的操作手順 8
  9. 9. 9 x2 - 5x + 4 = 0 () 1x2 + (-5)x + 4 = 0 係数の組: (1, -5, 4)
  10. 10. 10 (a, b, c) (1, -5, 4) x = -b ± p b2 - 4ac 2a この数が “整数” であることを判定 変数への代入 割り算 掛け算 平方根 加減算
  11. 11. 11 xn + yn = zn (n 3) 整数解は存在するか? 問題提起:フェルマー(1665年ごろ) 解決:ワイルズ(1995年)
  12. 12. 機械的な操作手順とは? 12 •  代入操作? •  四則演算? •  べき乗根? •  大小比較?
  13. 13. チューリングのアイデア •  一般的な「機械的な計算手順」を実行可能な 仮想的な概念機械を考えよう •  それは「チューリング・マシン」である 13
  14. 14. チューリング・マシン の定義 14
  15. 15. 15 010001110111 111111111111 入力 出力 状態遷移ルール (機械的操作手順) 0, R NONE, R NONE, R 1, R q0 q1 q2 q3 BLANK BLANK BLANK BLANK
  16. 16. コンピュータの ブラックボックスモデル 16 出力 (ex. ディスプレイ) コンピュータ (内部状態が変化する) 入力 (ex. キーボード) 比較
  17. 17. 17 テープ(無限に長い) セル ヘッド 0, R NONE, R NONE, R 1, R q0 q1 q2 q3 BLANK BLANK BLANK BLANK 内部状態と遷移ルール q0
  18. 18. 18 Q : ⌃ : : : Q ⇥ ! Q ⇥ ⇥ {L, R} M の内部状態の集合 入力アルファベット (入力(空白を含まない)の文字の集合) テープアルファベット (空白文字を含むテープに書かれる文字の集合) チューリング・マシン M = (Q, ⌃, , , q0) 状態遷移ルール : Q ⇥ ! Q ⇥ ⇥ {L, N, R}
  19. 19. 計算例 19
  20. 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)
  21. 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)
  22. 22. 22 現在のセルは 空欄 現在の状態は q0 0, R NONE, R NONE, R 1, R q0 q1 q2 q3 BLANK BLANK BLANK BLANK
  23. 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
  24. 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) に移動
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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) に移動
  31. 31. 31 0, R NONE, R NONE, R 1, R q0 q1 q2 q3 BLANK BLANK BLANK BLANK 以下,繰り返し
  32. 32. 32 0 1 0 1 0 1 0 … 出力: 01010101010101010101010101…
  33. 33. デモンストレーション http://tsujimotter.info/works/turing/ 33 turing1 を実行
  34. 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
  35. 35. 35 q_0: 初期状態 q_acc: 受理状態 q_rej: 拒否状態 BLANK: 空白 ANY: BLANK 以外 NONE: 何も書き込まない R: ヘッドを右へ 1 セル移動 L: ヘッドを右へ 1 セル移動 N: ヘッドを移動させない 講義内のルール
  36. 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)
  37. 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)
  38. 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):
  39. 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)
  40. 40. 40 q0 q1 q2 q3 q4 o1o0 o2 p0 p1 q5 o3 k0 k2 BLANK e, R BLANK e, R BLANK 0, R BLANK NONE, R BLANK NONE, L BLANK 0, L 1 NONE, R BLANK x, L ANY, BLANK NONE, L BLANK NONE, L ANY NONE, L 0 NONE, N 0, 1 NONE, R ANY, BLANK NONE, R BLANK 1, L x BLANK, R e NONE, R BLANK NONE, L ANY, BLANK NONE, L ANY NONE, R ANY, BLANK NONE, R BLANK 0, L ANY, BLANK NONE, L a0 a1 k1
  41. 41. 41
  42. 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 22 + 0 ⇥ 1 23 + 1 ⇥ 1 24 + 0 ⇥ 1 25 + 1 ⇥ 1 26 + 0 ⇥ 1 27 + · · ·
  43. 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
  44. 44. 命題「n は素数である ( isPrime(n) )」を表現する 44 01101010001010001… 2 3 5 7 11 13 17 素数のときに “1” が表示される
  45. 45. 例題 •  0.01000000… を出力するチューリング・マシン •  0.001001001… ( 3 回に 1 回 1 ) を出力する チューリング・マシン •  その他,自由に考えてみましょう 45
  46. 46. チューリング・マシンの拡張 46
  47. 47. 47 010001110111 accept/reject 入力 出力 状態遷移ルール (機械的操作手順) 0, R NONE, R NONE, R 1, R q0 q1 q2 q3 BLANK BLANK BLANK BLANK qacc ANY NONE, N 受理状態 (qacc) または 拒否状態 (qrej) に 到達するとマシンは停止する (ルール外の遷移はすべて  拒否状態 への遷移動作とみなす)
  48. 48. 48 Q : ⌃ : : : Q ⇥ ! Q ⇥ ⇥ {L, R} M の内部状態の集合 入力アルファベット (入力(空白を含まない)の文字の集合) テープアルファベット (空白文字を含むテープに書かれる文字の集合) 状態遷移ルール : Q ⇥ ! Q ⇥ ⇥ {L, N, R} M = (Q, , , , q0, qacc, qrej) 受理状態 拒否状態 (判定付き)チューリング・マシン ⌃ :
  49. 49. 49 q0 例3: 入力文字列に 0 が少なくとも 1 つ存在する (turing3) qacc 0 NONE, N 1 NONE, R 内部状態: テープアルファベット: Q = {q0, qacc, qrej} = {0, 1, BLANK} 入力アルファベット: ⌃ = {0, 1}
  50. 50. 50 内部状態: テープアルファベット: 例4: 入力文字列の「 3 の倍数」番目の文字がすべて 1 である = {0, 1, BLANK} 入力アルファベット: ⌃ = {0, 1} q0 0 NONE, N qacc qrej q1 q2 BLANK NONE, N1 NONE, R ANY NONE, R ANY NONE, R Q = {q0, q1, q2, qacc, qrej}
  51. 51. チューリング・マシンの 計算能力 51
  52. 52. 計算モデル •  帰納的関数(クルト・ゲーデル, 1934年) •  λ計算(アロンゾ・チャーチ, 1933年) •  チューリング・マシン(アラン・チューリング, 1935年) 52 これらは数学的にすべて等価
  53. 53. チャーチ=チューリングのテーゼ アルゴリズム(機械的操作手順)とは, チューリング・マシンによって定義される 計算過程である 53
  54. 54. 万能チューリング・マシン 54
  55. 55. 55 01010101010… 出力 M = (Q, , , , q0) チューリング・マシン
  56. 56. 56 01010101010… 出力 M = (Q, , , , q0) 01010101010… 出力入力 M = (Q, , , , q0) チューリング・マシン 万能チューリング・マシン 入力として与えた チューリング・マシンの出力を 再現できる (エミュレート)
  57. 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}
  58. 58. 58 Q = {q0, q1, q2, q3} 状態遷移ルール: = {S0, S1, S2} q0 S0q1S1R; q1 S0q2S0R; q2 S0q3S2R; q3 S0q0S0R; 内部状態: テープアルファベット: チューリング・マシンの符号化 (STEP 2/5)
  59. 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)
  60. 60. 60 状態遷移ルール: DADDCRDAA; DAADDRDAAA; DAAADDCCRDAAAA; DAAAADDCCRDA; 内部状態: テープアルファベット: Q = {DA, DAA, DAAA, DAAAA}= {D, DC, DCC} {DA, DAA, DAAA, DAAAA} チューリング・マシンの符号化 (STEP 4/5)
  61. 61. 61 内部状態: テープアルファベット: Q = {DA, DAA, DAAA, DAAAA}= {D, DC, DCC} {DA, DAA, DAAA, DAAAA} チューリング・マシンの符号化 (STEP 5/5) DADDCRDAA; DAADDRDAAA; DAAADDCCRDAAAA; DAAAADDCCRDA;
  62. 62. 62 DADDCRDAA; DAADDRDAAA; DAAADDCCRDAAAA; DAAAADDCCRDA; 0101010101010… 出力 M = (Q, , , , q0) チューリング・マシン
  63. 63. 63 01010101010… 出力 M = (Q, , , , q0) 01010101010… 出力 入力 チューリング・マシン 万能チューリング・マシン 入力として与えた チューリング・マシンの出力を エミュレートできる DADDCRDAA; DAADDRDAAA; DAAADDCCRDAAAA; DAAAADDCCRDA; A; DAAADDCCRDAAAA; DAAAADDCCRDA;
  64. 64. ランダム・アクセス・マシン (RAM) 64
  65. 65. 計算機械 •  有限オートマトン(FA) •  チューリング・マシン(TM) •  多テープチューリング・マシン •  ランダム・アクセス・マシン(RAM) •  非決定性チューリング・マシン(NTM) 65 チューリング・マシン以下 万能チューリング・マシンと同等 (チューリング完全)
  66. 66. 66 ランダム・アクセス・マシン(RAM)
  67. 67. ノイマン型コンピュータ ランダムアクセスマシン(RAM) 万能チューリング・マシン 67 抽象化具体化 数学的に等価
  68. 68. ノイマン型コンピュータ ランダムアクセスマシン(RAM) 万能チューリング・マシン 68 抽象化具体化 数学的に等価
  69. 69. まとめ 整数や命題の一般的な計算のための「機械的操作手順」を数学的に定めた => チューリング・マシン 整数の計算の例: 1/3 => (.0101010101…)2 命題の計算の例: isPrime(n) => 01101010001… チューリング・マシンはノイマン型コンピュータの原型であり,その計算モデ ル (RAM) は万能チューリング・マシンと同等の計算能力を有する(チューリ ング完全) 69

×