Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lets learn Turing Machine

36e1fb3501914495b3d3366729d7a787?s=47 payanotty
May 12, 2022
220

Lets learn Turing Machine

2022/05/12に開催したオンラインセミナーの資料です。

https://studyco.connpass.com/event/245540/

36e1fb3501914495b3d3366729d7a787?s=128

payanotty

May 12, 2022
Tweet

Transcript

  1. チューリングマシンを学ぼう ~コンピュータサイエンス入門~ 早野康太


  2. 自己紹介
 • 名前
 ◦ 早野 康太
 • お仕事
 ◦ 自然言語モデルの改善


    • 趣味
 ◦ 猫、犬
 ◦ ゲーム
 ▪ ELDEN RING
 ▪ 遊戯王MD
 ▪ ウマ娘
 ◦ アニメ
 ▪ パリピ孔明
 ▪ まちカド2期

  3. 今日のお話
 • コンピュータ = 計算機
 ◦ 半導体を使ってそろばんをはじいているようなもの
 ◦ コンピュータ動作の原理の裏には計算モデルという概念がある


  4. 今日のお話
 • 今日は計算モデルの話を中心にします
 ◦ 計算モデル
 ▪ 計算機の動作を抽象化した数理モデル
 ◦ チューリングマシン
 ▪

    コンピュータで実行できる計算をすべて実行可能なモデル
 ◦ 簡単な計算モデルから始めて
 チューリングマシンの原理をざっくり理解することを目指します
 ▪ 有限オートマトン
 ▪ プッシュダウンオートマトン
 ▪ チューリングマシン
 

  5. アジェンダ
 • 「計算する」 の定義
 • 簡単な計算モデルについて
 ◦ 有限オートマトン
 ◦ プッシュダウンオートマトン


    • チューリングマシンについて
 ◦ 定義
 ◦ 万能チューリングマシン
 ◦ 停止問題から見る機械的計算の限界

  6. 計算:ある規則に基づいて機械的に実行される手続き ・ 計算を行うのにひつようなもの 1. 計算の経過のとりうる状態 2. 記号 3. 計算規則 4.

    計算の初期状態 (開始状態) 5. 計算の終了状態 (受理状態) → 有限オートマトン プッシュダウンオートマトン (線形拘束オートマトン) チューリングマシン 計算モデル 計算理論は, 形式的な計算モデルを通して 「計算すること」の本質を解き明かす
  7. 有限オートマトン q 0 b q 1 a a b a

    開始状態 受理状態 b ・aを偶数個含む文字列を受理する オートマトンの現在の状態によって , 入力文字に対する遷移先が変わる → 状態遷移関数 q 2
  8. 制御部 a b a b b 系列 q 0 q

    0 b q 1 a a b a 開始状態 受理状態 b q 2 読み取り ヘッド 状態 遷移図
  9. a b a b b 系列 q 1 q 0

    b q 1 a a b a 開始状態 受理状態 b q 2 状態 遷移図
  10. a b a b b 系列 q 1 状態 遷移図

    q 0 b q 1 a a b a 開始状態 受理状態 b q 2
  11. a b a b b 系列 q 1 状態 遷移図

    q 0 b q 1 a a b a 開始状態 受理状態 b q 2
  12. a b a b b 系列 q 2 状態 遷移図

    q 0 b q 1 a a b a 開始状態 受理状態 b q 2
  13. a b a b b 系列 q 2 状態 遷移図

    q 0 b q 1 a a b a 開始状態 受理状態 b q 2
  14. a b a b b 系列 q 2 受理 状態

    遷移図 q 0 b q 1 a a b a 開始状態 受理状態 b q 2
  15. 有限オートマトン 有限オートマトンが行っている計算の意味 → 任意の文字列に対して、 その文字列を一定の規則に従って、 受理する か 受理しない かを決定する

  16. いくつかの用語の定義 アルファベット:有限の記号の集合. 例, {0, 1}, {a, b,...,z}, {!, ?, #}など

    ギリシャ文字Σで表されるのが一般的. 系列: いくつかのアルファベットの要素を連ねた記号列. 例, 001, 010, 011など 言語: 一定の規則 (文法) によって生成される系列の集合 ε : 何も文字がない系列.空系列.
  17. 有限オートマトンの形式的定義 決定性有限オートマトンは, 以下に示す5項組(Q, Σ, δ, q 0 , F)である 1.

    Qは状態の有限集合 2. Σは有限のアルファベット (ただし空系列εを含まない) 3. δ: Q×Σ → Q は状態遷移関数 4. q 0 ∈ Qは開始状態 5. F ⊆ Qは受理状態の集合
  18. 有限オートマトンの形式的定義 決定性有限オートマトンは, 以下に示す5項組(Q, Σ, δ, q 0 , F)である 1.

    Q = {q 0 , q 1 , q 2 } 2. Σ = {a, b} 3. δは右の表 4. q 0 ∈ Qは開始状態 5. q 2 は受理状態 a b q 0 q 1 q 0 q 1 q 2 q 1 q 2 q 1 q 2 q 0 b q 1 a a b a 開始状態 受理状態 b q 2
  19. 正規表現 a + b: 系列aまたはbからなる集合{a, b} a・b: 系列abからなる集合{ab} a*: aを0個以上並べた系列からなる集合.

    {ε, a, aa, aaa,...} ある1つ正規表現は, 系列の集合を一意に表現する 例: b*(ab*a)*b* aを偶数個含む系列の正規表現
  20. 正規言語と有限オートマトンの関連性 ・正規言語: 正規表現で表現される系列の集合 次の2つの命題は同値である ・言語Lは正規言語である ・Lを受理する(決定性or非決定性)有限オートマトンが  少なくとも1つ存在する → 正規表現で表せない系列は, 有限オートマトンでは受理できない(計算能力の限界)

  21. 正規言語でない例: 正しいカッコの系列 ()()()()(), (()())()(), ((((()())()))), などなど → 正しいカッコの系列は有限オートマトンでは受理できない → 任意のカッコの系列が正しいかどうかを有限オートマトンでは判定できない

  22. 反復補題 Lを正規言語とする.Lを受理する有限オートマトンの状態の総数がnであるとき, Lに属する長さn以上の系列wに対して, 以下が成り立つ. x, y, zをそれぞれ系列としたとき, 1. w は1個のx,

    zおよび0個以上のyを用いて, xyyyyy...yyzと表せる. 2. 系列xyの長さはn以下である. 3. yの長さは1以上である.
  23. 反復補題の証明 (概略) w i w j q i q 1

    q i 開始状態 受理状態 q n n以上の長さの系列に対して, q i = q j となるi, j (i < j ≦ n) が 少なくとも1組存在する 鳩の巣原理 q j → 系列wの中で, w 1 ~w i をx w i+1 ~w j をy w j+1 以降をzとする q j
  24. 反復補題の証明 (概略) w = xyzが受理される → xの後にyを任意の回数繰り返した系列 w’ = xyyy...yzも受理される

    (状態遷移がq i ~q j でループするため) この系列w’は反復補題のwそのものである. w i w j q i q 1 q i 開始状態 受理状態 q n q j q j
  25. 有限オートマトンで 正しいカッコの系列が受理できないことの証明 • 正しいカッコの系列の1つをw = ((((....()...)))とする(左カッコと右カッコをn回ずつ繰り返した 系列). • wを受理する有限オートマトンの1つをMとすると, wはxyy….yzと書ける

    (反復補題). • xyの長さはn以下なので, x = “(“をn - t回, y = “(“をt回と表せるはずである. • 反復補題により, Mはwからyを取り除いた系列xzも受理するはずである. ところが, xz = “(“をn - t回, “)”をn回なので, これは正しいカッコの系列ではない. • したがって, Mは正しいカッコの系列も正しくないカッコの系列も受理することになり,矛盾が 生じる.
  26. プッシュダウンオートマトン (PDA) ・有限オートマトンに記憶領域 (有限) を追加した計算モデル ・有限オートマトンよりも計算能力が高い (正しいカッコの系列を受理するPDAが存在する) → PDAで受理される言語は, 文脈自由言語である.

    q i
  27. PDAの形式的定義 PDAは以下に示す6項組(Q, Σ, Γ, δ, q 0 , F)である. 1.

    Qは状態の有限集合 2. Σは入力アルファベット(入力テープに書き込める記号) 3. Γはスタックアルファベット (記憶領域に書き込める記号) 4. δ: Q×Σ×Γ → Q×Γ*は状態遷移関数 (δ (q, a, b) = (q’, u)のように書く) 5. q 0 ∈ Qは開始状態 6. F⊆Qは受理状態の集合
  28. a q b 記憶領域 入力系列 状態遷移関数 δ (q, a, b)

    = (q’, u) 記憶領域
  29. a q’ x y 記憶領域 入力系列 u 状態遷移関数 δ (q,

    a, b) = (q’, u)
  30. PDAの計算能力の限界 ・PDAが受理する言語は文脈自由言語 (正しいカッコの系列など, 文脈に依存しない言語) である.  → PDAは文脈依存言語を受理できない. ・PDAで原理的に受理できない言語の例.  回文(ababbabaなど), 繰り返し文 (abcdeabcdeなど)

  31. チューリングマシン (TM) ・いままで見てきた計算モデルは何かしら計算能力に限界があった. ・TMはこれまでの計算モデルの欠点を補い, 最も計算能力が高い計算モデルである. → 知られているあらゆる計算手順は, TMで模倣することができる チューリングの提言: 「計算」とは,

    TMで実行可能な手順のことである.
  32. TMの構成要素 1 1 q 無限に長い記述領域 1 0 入力系列 1. 記述領域を書き換えられる(入力系

    列が記されているところを書き換え てもOK) 2. 制御ヘッドがいまみている記号を 書き換えたあと(書き換えなくても OK), 左右どちらかに移動し, 内部 状態が遷移する. 3. ヘッドの移動と書き換えを繰り返し, 受理状態か非受理状態になれば計 算終了. いままでの計算モデルと大きく 異なるところ 空白
  33. TMの形式的定義 TMは, 以下に示す7項組(Q , Σ, Γ, δ, q 0 ,

    q r , q a )である. 1. Qは状態の有限集合 2. Σは入力アルファベットかつ, スペース” ”を含まない. 3. Γは記述アルファベットで, Σ ⊆ Γかつ, スペース” ” を含まない      (記述領域 に空白を書き込むことはない) 4. δ: (Q - {q a , q r })×Γ→Q× Γ×{L, R}は状態遷移関数(Lは左移動,Rは右移動に対応) →ヘッドがa∈Γをみているとき, これをa’に書き換えて右か左に移動する.内 部状態 はqからq’に遷移する. これをδ (q, a) = (q’, a’, R),または(q, a, q’, a’, R)などと書く. 5. q 0 ∈ Qは開始状態 6. q a ∈ Qは受理状態 7. q r ∈Qは非受理状態かつ, q r ≠ q a
  34. TMの符号化 TMは, 7項組(Q , Σ, Γ, δ, q 0 ,

    q r , q a )で表現される. → 状態やアルファベットを0と1に符号化すれば, 任意のTMを系列として表現できる (Q , Σ, Γ, δ, q 0 , q r , q a ) → 1111011001100011… • 符号化の例: ◦ 状態Q = {l 1 , l 2 ,...} → 10l1110l21… ◦ アルファベットΣ = {m 1 , m 2 ,...} → 10m1110m21… • 符号化されたTM ∈ {0, 1}* はそれ自体が数であり 別のTMへの入力として扱うことができる
  35. 万能チューリングマシン いま, 任意のTMをMとする.Mを符号化した系列を[M]とするとき, [M, w] (系列wが入力されたMを符号化した系列) を入力として, Mの動きを模倣することができるTMを,万能チューリングマシンという. ・ある計算モデルが万能TMを模倣できるとき, その計算モデルは

    チューリング完全であるという うっかりチューリング完全になっちゃったもの 1 X 1 0 1 1 1 0 X 1 0 0 現況部 (状態を記録する) 記述部 ([M]を書く) テープ部 (入力系列を書く) $ 万能TMの記述領域の構成
  36. 1 1 停止性チューリングマシン 1 1 q 1 0 入力系列w q

    a 0 1 出力系列 f (w) 任意の系列w ∈ Σ*に対し, 必ずf (w) ∈ Σ*を残して, 受理状態 または非受理状態で停止するTM (計算がループしない) →言語Lについて, w ∈ Lならば停止性TMが受理状態で停止す るとき, 停止性TMは言語Lを決定するという
  37. 停止性TMによる計算の定義 任意の関数 f : Σ* → Σ*についてTMが存在して, そのTMが 入 力w

    ∈ Σ*を受け取ったとき, 有限回計算を繰り返したのち, f (w) ∈ Σ*を出力して停止するならば, そ の関数は計算可能である. ・系列wに対してf (w)を計算する停止性TMをみつけることを, 問題という ・とくに, f (w) = 0 or 1, つまり出力が真か偽のみである問題を, 決 定問題という
  38. TMで決定できない問題 (決定不能問題) 任意のTM (Mとする)が与えられたとき, そのTMが停止性であるかどうかを判定すること ができる停止性TMは存在しない. 形式的には...... w ∈ Σ*が入力されたMを符号化した系列を[M,

    w]としたとき, 次の関数は計算不能である. f ([M, w]) = 0 or 1 この問題を, 停止問題という.
  39. 停止問題が決定不能であることの証明 任意のM i を符号化した系列[M i ]を入力として受け取ったとき, M i がループするならば非受理, 停止するならば受理するような停止性TMの存在を

    仮定し, これをHとおく. 【下準備】 可能なすべてのTMの集合を, {M 0 , M 1 , …., M i , …}とする.
  40. 停止問題が決定不能であることの証明 たとえば, あるM i に[M j ]を入力したとき, 結果は ループする (

    = loop) か停止する (= halt) かのどちらである. その結果は下の表のように表せる [M 0 ] [M 1 ] [M 2 ] [M 3 ] M 0 halt loop loop halt M 1 halt loop halt halt M 2 halt loop halt loop M 3 loop loop loop halt
  41. 停止問題が決定不能であることの証明 Hを利用することによって, [M i ]が入力されたときに, M i ([M i ])

    がloopならばhalt, haltならばloopであるTM Eを構成できる Hの状態遷移図 受理状態 非受理状態
  42. 停止問題が決定不能であることの証明 Hを利用することによって, [M i ]が入力されたときに, M i ([M i ])

    がloopならばhalt, haltならばloopであるTM Eを構成できる Hの状態遷移図 受理状態 非受理状態 Γ Γ Eの状態遷移図の一部 何を入力されても ループする
  43. 停止問題が決定不能であることの証明 Hを利用することによって, [M i ]が入力されたときに, M i ([M i ])

    がloopならばhalt, haltならばloopであるTM Eを構成できる Γ Γ [M i ]を入力 [M i ]を[M i , [M i ]]に変換 E ([M i ]) の状態遷移図 Hを改変 M i ([M i ]) = loopならば 受理して停止する M i ([M i ]) = haltならば ループし続ける
  44. [M 0 ] [M 1 ] [M 2 ] [M

    3 ] [M k ] M 0 halt loop loop halt M 1 halt loop halt halt M 2 halt loop halt loop M 3 loop loop loop halt M k (= E) loop halt loop loop ???
 停止問題が決定不能であることの証明 loopでもhaltでも矛盾する!! = Hは存在しない
  45. 問題の帰着 決定問題A, Bに対して次が成り立つとき, 問題Aは問題Bに帰着されるといい, A ≦ Bと表す. ・A(w) = 1 ⇔ B(f

    (w)) = 1となる関数 f が存在する. →問題Aを決定するTMをみつければ, 問題Bも決定できる ある問題XがTMの停止問題に帰着されるとき, 問題Xを機械的に決定することは原理的に不可能といえる
  46. Postの対応問題 a ab b ca ca a a ab abc

    c のようなタイルを組み合わせて 上段をつないだ系列と下段をつないだ系列を一致させることができるか? 任意のタイルの系列に対してこの問題を解くアルゴリズムは存在しない → 決定不能問題 (TMの停止問題に帰着できる)
  47. 決定不能問題の例 ・4辺が異なる色で塗られたタイルの隣接する辺の色が等しくなるように, タイルを全平面に敷き詰められるか? ・プログラムAはプログラムBと完全に同じ動作をするか? (仕様通りに動くか?) ・プログラムAは無限ループするか? ・整数係数の多変数方程式 f (x 1

    , x 2 ,..., x n ) = 0は整数解をもつか? ・(u 1 , v 1 ), (u 2 , v 2 ),..., (u n , v n ) のペアをいくつか並べて, uを連ねた系列とvを連ねた系列を一致させることができるか? 決定不能問題が存在することは 機械的計算の原理的限界を示している (ゲーデルの不完全性定理と関係)
  48. AIとの関連 (ニューラルチューリングマシン)
 • Neural Turing Machines (Alex et. al, 2014)


    ◦ チューリングマシンをニューラルネットワーク(NN)で再現
 = 自動プログラミング
 ◦ NNがチューリング完全なら
 プログラムの挙動を原理的に学習できる

  49. 事前に頂いたご質問への回答
 Q. 今使われているコンピュータが扱うバイナリデータの処理の仕組みは、    昔からのコンピュータの仕組みを使い回しているのでしょうか?
 
 A. 現代のコンピュータはノイマン型といって、
 チューリングマシンと等価な計算モデルを基にした方式が主流です。
 計算の基本的な原理自体はコンピュータが登場してから
 変わっていないはずです。


    (量子コンピュータとかはノイマン型とは違う計算モデル)。