ユニバーサルチューリングマシンに関する2つの質問の答えを見つけようとしています。
- シミュレーション中のチューリングマシンの状態数が多い場合、ユニバーサルチューリングマシンでチューリングマシンをどのようにシミュレートできますか?
- シミュレートされているチューリングマシンのアルファベット文字の数が多い場合、ユニバーサルチューリングマシンでチューリングマシンをどのようにシミュレートできますか?
誰もがこれらの質問で私を助けることができますか?
ユニバーサルチューリングマシンに関する2つの質問の答えを見つけようとしています。
誰もがこれらの質問で私を助けることができますか?
回答:
両方のサブ質問への答えは同じです:必要なデータを格納するためにテープを使用することによって。シミュレーションするマシンの状態セットとアルファベットは、自然数のサブセット(「状態1」、「状態2」、「状態3」など)であると想定できます。空白でない文字が2つしかなくても、ユニバーサルマシンはこれらの整数をすべてバイナリ文字列として表すことができます。
ただし、ユニバーサルマシンには一定数の状態があるため、遷移関数の計算が少し難しいことに注意してください。私たちがやってみたいことは状態がある場合は、」、フォームの大きなswitch文を実装するいくつかの命令を記述している と頭の下に文字がある 、その状態に移動 、書き込み文字 と移動します方向向かい ます。」だから–そしてこれがあなたの質問の根本かもしれないと思います–遷移関数の入力を保存するのに十分な状態がユニバーサルマシンにない場合、遷移関数をどのように計算しますか?
1つの方法は、遷移関数をバイナリツリーとして格納することです。シミュレートされたすべてのマシンに 状態と テープシンボルがあるとします。遷移関数を深さバイナリツリーとして ます。 最初のレベルでは、シミュレーションされた状態の次のビットが1または0であるかどうかに応じて左または右に移動し、次の レベルは同じですが、シミュレートされたテープ文字の連続するビットについてです。これで、ユニバーサルマシンはテープを前後に進み、状態/文字の次のビットを確認し、そのビットを独自の状態で記憶し、ツリーに戻り、正しいノードにマーカーを配置するなどできます。
ユニバーサルマシンに複数のテープを持たせると、これは多少簡単になりますが、マルチテープマシンが単一のテープマシンと同等であることを示す必要があります。