ユニバーサルチューリングマシンはどのようにして「より大きな」マシンをシミュレーションできますか


10

ユニバーサルチューリングマシンに関する2つの質問の答えを見つけようとしています。

  1. シミュレーション中のチューリングマシンの状態数が多い場合、ユニバーサルチューリングマシンでチューリングマシンをどのようにシミュレートできますか?
  2. シミュレートされているチューリングマシンのアルファベット文字の数が多い場合、ユニバーサルチューリングマシンでチューリングマシンをどのようにシミュレートできますか?

誰もがこれらの質問で私を助けることができますか?


1
これは、UTMが一定の状態数で構築できることです。テープにエンコードされた任意の数の状態またはシンボルを使用して、他のTMをシミュレートします。
vzn 2015

関連する質問は、TMがATM(代替TM)をどのようにシミュレートできるかということです。これは、ほぼ同じ方法で、テープに追加のデータをエンコードし、状態をクラスに縮小するものです
Nikos M.

回答:


10

両方のサブ質問への答えは同じです:必要なデータを格納するためにテープを使用することによって。シミュレーションするマシンの状態セットとアルファベットは、自然数のサブセット(「状態1」、「状態2」、「状態3」など)であると想定できます。空白でない文字が2つしかなくても、ユニバーサルマシンはこれらの整数をすべてバイナリ文字列として表すことができます。

ただし、ユニバーサルマシンには一定数の状態があるため、遷移関数の計算が少し難しいことに注意してください。私たちがやってみたいことは状態がある場合は、」、フォームの大きなswitch文を実装するいくつかの命令を記述している と頭の下に文字がある 、その状態に移動 、書き込み文字 と移動します方向向かい  ます。」だから–そしてこれがあなたの質問の根本かもしれないと思います–遷移関数の入力を保存するのに十分な状態がユニバーサルマシンにない場合、遷移関数をどのように計算しますか?sxsxd

1つの方法は、遷移関数をバイナリツリーとして格納することです。シミュレートされたすべてのマシンに  状態と  テープシンボルがあるとします。遷移関数を深さバイナリツリーとして  ます。 最初のレベルでは、シミュレーションされた状態の次のビットが1または0であるかどうかに応じて左または右に移動し、次の  レベルは同じですが、シミュレートされたテープ文字の連続するビットについてです。これで、ユニバーサルマシンはテープを前後に進み、状態/文字の次のビットを確認し、そのビットを独自の状態で記憶し、ツリーに戻り、正しいノードにマーカーを配置するなどできます。2q2q+q

ユニバーサルマシンに複数のテープを持たせると、これは多少簡単になりますが、マルチテープマシンが単一のテープマシンと同等であることを示す必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.