大学生

【チューリングマシン】情報系大学生がわかりやすく解説します

こんにちはの方もこんばんはの方もようこそ、イカスミです。

大学生、特に情報系学生の皆さん、形式言語の授業で、チューリングマシンって何?となった経験はありませんか?

チューリングマシンは、形式言語などの授業では特に重要なので、理解することが必要です。

この記事では、情報系大学生の僕がチューリングマシンについて解説したいと思います。

この記事で解決できる悩み

  • チューリングマシンがわからない
  • チューリングマシンをどう設計すればいいのかわからない

 

この記事では、この参考書を基準にしているので、余裕がある方は手にとってみてください。

 

 

チューリングマシンとは

チューリングマシンは、1936年に、イギリスの数学者であるアラン・チューリングが考案したモデルで、コンピュータを模倣する能力を持ちます。

この「コンピュータを模倣する」という能力が非常に重要なのですが、この記事では深く取り扱いません。

 

チューリングマシンには、テープと呼ばれる記憶装置があります。

有限オートマトン + テープと考えるとわかりやすいです。

テープには、それぞれのマスに入力が置かれ、テープヘッドを左右に動かすことで入力を読んでいきます。

テープの他のマスは、空白記号を表します。

図で示すと、このようになります。

引用元:[補足] チューリングマシン

 

そして、チューリングマシンは1回の動作で、次の操作を行います。

  1. 状態を変える。状態は、現在の状態でもいい。
  2. 読んでいるマスの記号を書き換える。記号は、現在の記号と同じでもいい。
  3. テープヘッドを右か左に動かす。

テープヘッドが示すマスの記号を変え、ヘッドを動かす。

この考え方が、非常に重要になります。

 

 

有限オートマトン・プッシュダウンオートマトンとの違い

チューリングマシンにはテープがあるので、有限オートマトンよりも表現できる言語は多くなります。

プッシュダウンオートマトンにもスタックという記憶装置がありますが、スタックは先入れ後出しでしか情報にアクセスできません。

しかし、チューリングマシンはテープヘッドを動かすことでどのマスにも移動できるため、計算能力はチューリングマシンに軍配が上がります。

有限オートマトンとプッシュダウンオートマトンについては、こちらの記事で解説しています。

【現役大学生が決定性有限オートマトンをわかりやすく解説します】形式言語とオートマトン

こんにちはの方もこんばんはの方もようこそ、イカスミです。 大学生、特に情報系学生の皆さん、形式言語の授業で、決定性有限オートマトンって何?となった経験はありませんか? この記事では、そんな方に向けて、 ...

続きを見る

【現役大学生が非決定性有限オートマトンをわかりやすく解説します】形式言語とオートマトン

こんにちはの方もこんばんはの方もようこそ、イカスミです。 大学生、特に情報系学生の皆さん、決定性有限オートマトンはわかるけど、非決定性有限オートマトンって何?となった経験はありませんか? この記事では ...

続きを見る

【情報系大学生がプッシュダウンオートマトンをわかりやすく解説】形式言語とオートマトン

こんにちはの方もこんばんはの方もようこそ、イカスミです。 大学生、特に情報系学生の皆さん、形式言語の授業で、プッシュダウンオートマトンって何?となった経験はありませんか? この記事では、そんな方に向け ...

続きを見る

 

 

例題を用いてわかりやすく解説

例題として、この問題を考えます。

例題:言語 L = {0n1n|n = 0, 1, 2. ・・・} を受理するチューリングマシンを設計せよ。

 

このチューリングマシンで使う記号は、0, 1, X, Y, □ の5つです。

0と1は入力記号、XとYはテープでの置き換え用の記号、は空白記号となります。

 

では、チューリングマシンを設計していきましょう。

まずは、入力をテープに置きます。

このとき、テープヘッドは入力の先頭を示しています。

以降は、入力の左端から次の動作を行い、入力を読み込んでいきます。

 

  1. テープヘッドが示している記号0を読み、Xに変える。

  2.  

    1に出会うまで、0やYを読み飛ばしながらテープヘッドを右に動かす。

  3.  

    テープヘッドが示している記号1を読み、Yに変える。

  4.  

    Xに出会うまで、0やYを読み飛ばしながらテープヘッドを左に動かし、テープヘッドをXの1マス右隣に動かす。

  5. ①~④の動作を繰り返す。

 

以上の操作を繰り返し、テープの入力列がXnYnに変わっていれば、入力が受理されます。

 

では、これを状態遷移図にしてみましょう。

状態遷移図は、このようになります。

①から⑤の動作が、上手く表現できています。

入力がXnYnに変わっている場合、q0→q3→q4と遷移し、入力が受理されます。

 

入力の0が1よりも少ない場合、入力はXmYm1n-m ( m < n )に変化し、q0→q3と遷移しますが、1が変化せずに残っているので、空白記号に出会うことができません。

そのため、q4に遷移せず、入力は受理されません。

 

入力の0が1よりも多い場合、入力はXm0n-mYm (m < n)に変化し、最終的にq1で1ではなく空白記号に出会ってしまい、入力は受理されません。

 

状態遷移図を用いると、理解しやすくなると思います。

 

 

まとめ

この記事では、チューリングマシンについて解説しました。まとめると、

  • チューリングマシンは、有限オートマトンにテープを付け加えたもの
  • 1回の動作で、マスの読み込み・現在読んでいる記号の変更・テープヘッドの移動 を行う

この記事が、皆さんの学習の参考になれば幸いです。

最後まで読んで頂き、ありがとうございました。

-大学生
-