チューリングマシンとは

/論理・基礎論

チューリングマシンとは

チューリングマシンとは、計算を行うための基本的な機能が定義された、仮想的な装置です。チューリングマシンは、計算可能性の議論を行うため、数学者チューリングにより1936年に考案されました。

チューリングマシンの構造

チューリングマシンの構造は非常にシンプルで、制御部(以下、ヘッド)と十分な長さを持つ記憶部(以下、テープ)により構成されます。ヘッドは有限個の命令を順番に実行します。

テープはマス目に分かれており、それぞれ記号が設置されています。ここで記号は、ビット(2進数)を表す「1」と「0」の他、テープの左端を表す「#」、空白を表す「b」などを定義します。

チューリングマシンの動作

チューリングマシンの命令

チューリングマシンの命令もシンプルで、次の4つで構成されます。

  • ヘッドの位置にあるマス目の記号を読む(read)
  • ヘッドの位置にあるマス目に記号を書く(write)
  • ヘッドの位置を左右どちらかのマス目に移動させる(move)
  • 次の新しい命令に進む(goto)

例えば、最初のビットを反転させる命令[I1]は以下のように表されます。ここで、「halt」は処理の終了を表します。

命令 記号の読出し
(read)
記号の書込み
(write)
ヘッドの移動
(move)
次の命令
(goto)
[I1]





right
right
right
halt
I1
I1
I1

2行目は「0」が読み出された場合は「1」を書込み、3行目は「1」が読み出された場合は「0」を書込むことを表しているため、ビットが反転されることが分かります。また、4行目は空白「b」で動作を止めることが表しています。

チューリングマシンの実行例

ヘッドの開始位置を左端として、この命令を実行させると以下のようになります。初期のテープの状態①を「#1010b1・・・」として、ヘッドの位置をマス目の左側に[I1]として書いています。

[I1]#1010b1 初期状態、「#」の場合はヘッドを右に移動 →②
#[I1]1010b1 「1」の場合は「0」を書込み、ヘッドを右に移動 →③
#0[I1]010b1 「0」の場合は「1」を書込み、ヘッドを右に移動 →④
#01[I1]10b1 「1」の場合は「0」を書込み、ヘッドを右に移動 →⑤
#010[I1]0b1 「0」の場合は「1」を書込み、ヘッドを右に移動 →⑥
#0101[I1]b1 「b」の場合は処理を終了 →⑦
#0101b1 終了状態

以上のように、4ビットの反転をするのに、6ステップの命令を実行していることが分かります。

万能チューリングマシン

万能チューリングマシンとは、他のチューリングマシンの動作を模倣する能力を有するチューリングマシンです。

万能チューリングマシン $M_u$ は、整数の組 $i$ と $x$ を入力として、入力 $x$ に対するチューリングマシン $M_i$ の計算を実行します。これを式で表すと以下になります。

$$M_u(i,x)=M_i(x)$$

万能チューリングマシンはテープを2本使用し、1本のテープ(テープA)は $M_i(x)$ の計算を実行するために使用され、もう1本のテープ(テープB)は $M_i$ の命令記述(プログラム)を格納するために使われます。

この場合、実行のステップは以下になります。

  1. テープAより $i$ を読み出す。
  2. テープBに命令 $M_i$ を書き込む。
  3. テープAに入力データ $x$ をコピーする。
  4. テープAに対し $M_i(x)$ を実行する。

 

数学
解析学、代数学、幾何学、統計学、論理・基礎論、情報・暗号、機械学習、金融・ゲーム理論、高校数学
散策路TOP
数学、応用数学、古典物理、量子力学、物性論、電子工学、IT、力学、電磁気学、熱・統計力学、連続体力学、解析学、代数学、幾何学、統計学、論理・基礎論、プラズマ物理、量子コンピュータ、情報・暗号、機械学習、金融・ゲーム理論

 

タイトルとURLをコピーしました