チューリングマシン
チューリングマシン () は計算模型のひとつで、計算機を数学的に議論するための単純化・理想化された仮想機械である。
1936年にイギリスの数学者アラン・チューリングの論文「計算可能数について──決定問題への応用」で発表された。同様の考え方は同年にエミール・ポスト (Emil Post) も独自に発表している。構想の理由、動機についてはポストの論文が明確だが、仮想機械自体に関する記述はチューリングの論文が詳細である。
ここでは非形式的（直感的）に述べる。理論的には形式的に述べる必要がある。
チューリングマシンには、いわゆるハードウェアに相当するものとして、
がある。
また、ソフトウェアに相当するものとして、以下がある。
この有限オートマトンの状態遷移規則は、その有限オートマトンの「現在の状態」（内部状態）と、ヘッドがテープの「現在の場所」から読み出した記号の組み合わせに応じて、次のような動作を実行する。
さらに、この有限オートマトンには（一般的な有限オートマトンの「受理状態」と同様な）「受理状態」がある。計算可能性理論的には、決定問題の2種類の答えに対応する、2種類の受理状態が必要である。
実際の計算機の基本的動作も、突き詰めて考えれば、このチューリング機械の原理に従っているといえる。実用上の電子計算機はチューリング機械よりも遥かに複雑であり、また有限の記憶領域しか持たないが、「計算機で原理上解ける問題」は「チューリング機械で解ける問題」と同じであるといわれている。このため計算理論では、算法あるいは算譜をチューリング機械と同一視する（チャーチ＝チューリングのテーゼ）。
数学の形式体系はすべてこの仮想機械の動作に還元できるといわれている。この機械で決定できない命題も存在する。例えば与えられたチューリング機械が停止するかどうかをチューリング機械で決定することはできない（停止性問題）。これはゲーデルの不完全性定理の別の表現の形とみなすことができる。
この節では、チューリング機械を形式的（formal）に記述する。
あるチューリング機械は次のformula_1つ組formula_2で定義される。
M の状況とは、formula_3上の（片側）無限列のうち、Q の元がちょうど1度現れ、また b 以外の記号が有限回しか現れないものをいう。遷移函数 δ は、状況から状況への写像を自然に定める。M が文字列formula_4を受理するとは、状況formula_5にこの写像を有限回施すことで状況formula_6が得られることをいう。その最小回数を M の x に対する実行時間とよぶ。その過程における状況中の q の最右位置を、M が x に対して使用する記憶領域量という。
M が言語formula_7を認識するとは、M が L の元のみをみな受理することをいう。そのようなチューリング機械 M が存在するとき、L は帰納可枚挙（recursively enumerable）あるいは計算可枚挙（computably enumerable）であるという。L とformula_8がともに帰納可枚挙であるとき、Lは帰納的（recursive）あるいは決定可能（decidable）であるという。
より精細に、自然数から自然数への写像 t に対し、M が L を時間計算量［ないし空間計算量］t で認識するとは、M が L を認識し、かつ各formula_9に対するformula_10の実行時間［ないし記憶領域量］がformula_11以下であることをいう。ここでformula_12は文字列 x の長さを表す。
次の各項目について上記の定義に変更を施しても、帰納可枚挙な言語は変わらず、また時間計算量や空間計算量に対する影響も小さい。このため、チューリング機械の定義の詳細は文献によって異なっている。
空間計算量を細かく調べるときには、書き換えできない入力専用テープを設けて、そこでの使用領域量を無視することがある。すなわち、遷移函数formula_16をformula_17からformula_18への写像とし、状況の定義も適切に変更する。
言語を認識するだけでなく、formula_19からformula_19への部分函数formula_21を計算する機械を考えることもできる。すなわち機械formula_10は、各formula_23に対しては文字列formula_24をテープに書いてから初めて受理状態へ移り、formula_25に対しては決して受理状態へ移らない。このようなformula_10が存在するとき、formula_21は部分帰納的あるいは計算可能（computable）であるという。
遷移関数formula_16において、現在の状態 q と着目位置にある記号 a の、ある組 (q, a) に対し、値（すなわちその時にすべき動作）が、高々一つならば、そのチューリングマシンは「決定的」（deterministic）である。これに対し、動作が複数の場合は「非決定的」（non-deterministic）であり、受理の意味も再定義して、非決定的チューリングマシンや乱択チューリングマシンが定義される。また、未来と過去を逆にしても決定的であるのが可逆チューリングマシンである。
質問状態を加える。
遷移規則をうまく構成することで、「いかなるチューリングマシンであろうとも、それを模倣することが可能なチューリングマシン（）」が可能である。万能チューリングマシンは、与えられた、別のチューリングマシンを記述した記号列と、そのチューリングマシンへの入力記号列を読みこみ、それに従って動く。（エミュレータの原理）解説