2002年12月 1日 作成 | チューリング・マシーン | >> 目次 (作成日順) |
2008年 1月16日 補遺 |
(1) 機械の内的状態 [ 状態記号 ] 機械の内的状態(状態記号)は以下のように記述される。 Q = {q0, q1,・・・, qn}. テープ 記号は以下のように記述される。 M = {s0, s1,・・・, sn}. そして、以下の写像を考える。 t : Q × M → Q × M × { R, L, O }. R は 「right (右に移動する)」、L は 「left (左に移動する)」、O は 「動かない」 という意味である。 T = (Q, M, t, q0, F).
q0 は 「初期状態 (initial state)」 である。 また、或る内的状態の変化 [t(q, s)=(q’, s’, x) であるとき ]、(q, s, q’, s’, x) のことを 「instruction」 という。
(1) テープ には区画が用意されている。
(2) テープ に対して操作をする装置を ヘッド という。
(3) ヘッド は (テープ から) テープ 記号を読む。
(4) なお、ヘッド の移動について、「instruction (q, s, q’, s’, x)」 が、あらかじめ、用意されている。
(1) ヘッド の状態 q0 |
q0 | q1 | q2 | |
s0 | s0Rq1 | s02 | |
s1 | s1Lq1 | s0Rq2 |
(1) 最初の動作は、(q0, s0) だから、状態記号と テープ 記号は以下のように置換され、ヘッド は右に移動する。
(2) 次に、(q1, s0) だから、状態記号と テープ 記号は以下のように置換され、ヘッド は動かない。 (3) F (最終状態記号) が q2だらか、ヘッド は停止する。 |
[ 補遺 ] (2008年 1月16日)
本 エッセー では、チューリング・マシーン の考えかたを 「簡単な」 例題で示しました。前回、「帰納的」 という概念と 「帰納的に可算」 という概念はちがうことを述べました。「帰納的」──S ⊆ N が空でないとして── を チューリング・マシーン M を使って言い換えれば、特徴関数 CSが計算可能なので、x ∈ S あるいは ¬ (x ∈ S) の いずれの場合でも、チューリング・マシーン は、CSを有限の時間内で判断できる、ということです。 「instruction (q, s, q’, s’, x)」──あるいは、M による 「特徴関数の 『計算 (computation)』」──は、δ├ M の 2項関係として、「閉含 (closure)・外点 (exterior point)」 という概念を使って考えることもできます。├ M に対して、反射的・推移的閉含 ├ M* を考えます。「閉含」 とは、位相空間 S の部分集合 M に対して、M の 「外点」 の集合 Me = (Mc)i の補集合 (Me)c = ((Mc)i)c のことを云い、Mで表します。したがって、M⊃M が成り立ちます。簡単に云えば、「M は M をふくむ最小限の閉集合」 のことです。なお、S の点 p が M の 「外点」 であるとは、p が M の補集合 Mc の内点になっていることです。 チューリング・マシーン で計算可能ということは、S ⊆ N のなかで、δ├ M の初期状態で始まり、├ M* の内点に終わる関数がある、ということです。すなわち、(x1,・・・, xn) q0B ├ M* f (x1,・・・, xn) qhB となる qh が存在する、ということです。逆の言いかたをすれば、上述した式を満たす チューリング・マシーン が存在するとき、関数 f は 「部分的に計算可能 (partially computable)」 であると云います。そして、関数 f が全域的かつ部分的に計算可能であるとき、チューリング・マシーン は f を計算する (compute) と云います [ 「全域的」 は、「ベーシックス」 144ページ を参照されたい。]
チューリング・マシーン で数論的関数を計算するためには、対象を ゲーデル 数化すれば良いでしょう。 Tn (z, x1,・・・, xn, y). y は、ゲーデル 数 z である チューリング・マシーン M による初期状態 (x1,・・・, xn) q0B に始まり、wqhB に終わる ゲーデル 数です。そして、x が ゲーデル 数であるとき、その最後の関数値を取り出す原始帰納的関数 U を用意します。そして、f (x1,・・・, xn) を部分的に計算可能な関数として、それを部分的に計算する チューリング・マシーン を M として、M の ゲーデル 数を k とすれば、以下が成立します。つまり、f は、帰納的部分関数です。 f (x1,・・・, xn) ←→ U (μyTn (k, x1,・・・, xn, y)). ちなみに、チューリング・マシーン は、「計算する」 configuration なので、プログラム のことであると言って良いでしょう。ただ、任意の チューリング・マシーン M と、その入力 データ を前提にして、M が データ に対する動作を 「解釈」 する チューリング・マシーン U を考えることができます──言い換えれば、U が存在します。その U のことを 「universal machine (万能機械)」 と云います。この U が、現代の コンピュータ です。 さて、応用問題として、以下の事態が 「決定可能」 かどうか を考えてみましょう。
任意に与えられた チューリング・マシーン (Q, M, t, q0, F) に対して、xq0B で始まり、wqhB に
この問題は、対象を ゲーデル 数化すれば、∃y T1(z, x, y) に関する 「決定問題」 となります。答えは、「決定不能」 です。この問題を、チューリング・マシーン の 「停止問題 (halting problem)」 と云います。「停止問題」 とは、単純に言い切ってしまえば、「プログラム が停止するか否かを決定する プログラム を作成できない」 ということです──「『決定可能 (決定のための アルゴリズム)』 を決定する」 プログラム を作ることができない、ということです。というのは、もし、∃y T1(z, x, y) が 「決定可能」 だとすれば、「帰納的」 であり、したがって、∃y T1(x, x, y) も 「帰納的」 になるはずですが、∃y T1(x, x, y) は、「帰納的に可算」 であって 「帰納的」 ではないからです。 |
<< もどる | HOME | すすむ >> | |
ベーシックス |