エクセルチューリングマシン

この記事では、チューリングマシンとExelでの実装について簡単に説明します。 役立つ記事は、チューリングマシンに精通したい人、およびExcel機能の視野を広げたい人向けです。



チューリングマシンとは



チューリングマシンは、セルを備えた無限のリボンです。 各セルには1文字が含まれます。 特に、空のセルは、空のセルのシンボルが記録されているセルです。 セル内のシンボルは、このマシンのアルファベットに属します。

ヘッドはテープに沿って移動しますが、テープはいくつかの状態にあり、状態の1つはマシンの終わりです。 ヘッドは現在のセルを読み取り、このセルの値とその現在の状態に応じて、現在のセルの値を変更してから、右に移動するか、左に移動するか、所定の位置に留まります。

マシンを起動するには、テープの初期状態、ヘッドの状態、およびヘッドの位置を指定する必要があります。 そして、もちろん、マシンのアルファベット、ヘッドの状態、ルールを定義する必要があります。

頭のルール全体を決定する必要がありますN =(アルファベットの文字数)*(状態の数-1)。 最終状態にはルールがないため、状態の数は1です。マシンは停止します。



簡単な例:2進数に1を追加する



このようなマシンの場合、3文字のアルファベット(0、1、x)が必要です-0と1は数字を表し、xは空のセルを表します。 つまり、空のテープはすべて文字「x」で満たされています。

ヘッドには4つの状態があります:q1、q2、q3、q4-マシンを停止します。

マシンのルールをマトリックスの形式で書きます。

画像



このようなマシンが、初期状態がq1の2進数の最上位の桁にヘッドを置くと、この数が1増えることを確認するのは簡単です。



Excelの実装



上記の例のように、ルールテーブルを作成します。 このテーブル全体を選択し、「ルール」と呼びます。 Enterキーを押します。



画像



テーブルの構造は上記の例と同じですが、少し変更されています。

•マシンの状態は単に番号と呼ばれます(qなし)

•空のセルは、記号「2」を意味します

•頭の動きは1-右に、-1-左に、0-所定の位置に設定されます



テープの初期状態を設定します。

画像



これは、番号10111がテープに書き込まれ、ヘッドが状態1にあり、最上位に対応するセルにあることを意味します。 Excelは、より明確にするために使用される条件付き書式をサポートしています。

マシンの新しいステップは新しいExcel行でモデル化され、式はルールに従ってマシンの状態を模倣します。

チューリングマシンのExcel数式の説明
テープセルの式:

= IF(K14 <> 0; INDEX(ルール; K14 + 1; 2 + K13 * 3); K13)

この式は、次のステップ(K17)のテープセル値用です。 これは、ヘッド(K14)がセルの下にある(つまり、K14セルでゼロではない)場合、ルールに従って(ルール配列から)このセルに値を書き込む必要があることを意味します。 テープのセルの下のセルでゼロの場合(つまり、その下にヘッドがないことを意味します)、値は変更されません。



画像



頭の状態の式(読みやすくするために改行されています):

= IF(K14 <> 0; IF(INDEX(ルール; K14 + 1; 4 + K13 * 3)= 0; INDEX(ルール; K14 + 1; 3 + K13 * 3); 0);

IF(J14 <> 0; IF(INDEX(ルール; J14 + 1; 4 + J13 * 3)= 1; INDEX(ルール; J14 + 1; 3 + J13 * 3); 0);

IF(L14 <> 0; IF(INDEX(ルール; L14 + 1; 4 + L13 * 3)=-1; INDEX(ルール; L14 + 1; 3 + L13 * 3); 0); 0)))



この式

1)最初にヘッドがこのセルにあるかどうかを確認します(K14)-ルールが所定の位置に留まると言う場合、マシンの状態はルールに従ってこのセルに書き込まれます

2)ヘッドが左に1セル(J14)あり、ルールが右に移動すると言う場合-マシンの状態はルールに従ってこのセルに書き込まれます

3)ヘッドが右に1セル(L14)で、ルールが左に移動すると言う場合-マシンの状態はルールに従ってこのセルに書き込まれます

4)他のすべての場合、ゼロが書き込まれます

この式は、頭の動きをシミュレートします。

数式は、 インデックス関数( 配列、行、列 )を使用します。 INDEX値を計算します(ルール; K14 + 1; 4 + K13 * 3)-ヘッドステート式の一部。

図からわかるように、K14 = 1、K13 = 1。 したがって、INDEX(ルール; 1 + 1; 4 + 1 * 3)、つまりINDEX(ルール; 2; 7)を見つける必要があります-2番目の行と7番目の列の交点にある「ルール」配列の値(行と列には、 0ではありません)。 ネームプレートでは、この値は「1」です。



画像



相対式-つまり、それらを新しいセルにコピーすると、Excelはマシンの以前の状態に対応するセルからデータを取得します。

その結果、すべてのステップが完了し、マシンは「停止」します。状態「4」に到達すると、番号に1が追加されます。







ここにExcelファイルへのリンクがあります



おわりに



Excelが任意の数の行と列をサポートしている場合、Excelはチューリング完全であるため、Excelの数式を使用して計算可能な関数を実装できることを自動的に意味します



PSトリッキーなタスク:記事で説明されているチューリングマシンのルールを変更して、2進数を1減らすようにします。



All Articles