私はSipserを読んでいて、プロセスが何であるかを理解するのが難しいと感じています。k個のテープが付いたk個のチューリングマシンを提供すると、1本のテープだけで同等のチューリングマシンを吐き出すことができます。例がいいでしょう。実は、テープのTM から1テープのTMへの移行方法を示した例は、私が本当に探しているものです。私はこれまでこれを見つけることができませんでした。私も証拠を探していません。
私はSipserを読んでいて、プロセスが何であるかを理解するのが難しいと感じています。k個のテープが付いたk個のチューリングマシンを提供すると、1本のテープだけで同等のチューリングマシンを吐き出すことができます。例がいいでしょう。実は、テープのTM から1テープのTMへの移行方法を示した例は、私が本当に探しているものです。私はこれまでこれを見つけることができませんでした。私も証拠を探していません。
回答:
私から恥知らずにコピーされた答え:
マルチテープチューリングマシンは、我々は、拡張遷移関数を有する以外は、ほとんどが単一のテープ・マシンと同じである kはテープの数です。したがって、各状態で、遷移関数は各テープの内容を読み取り、新しい状態に移動し、(おそらく)各テープに何かを書き込み、各ヘッドを移動します-通常のTMと同じように、今、読み取り、書き込みの対象が増えます移動します。
あなたの質問が示唆するように、そのようなマシンはシングルテープ TM でシミュレートできます。さらに良いのは、2次のスローダウンだけで実行できることです(多項式で閉じたクラスの場合は、シングルテープマシンについて説明すれば十分です)。
この証明はやや複雑で、単純なWeb検索で簡単に利用できるため、テープのキーマッピングを1つのテープにスケッチするだけです。
基本的な考え方は非常に簡単です。新しいシンボルをいくつか追加するだけで、各テープとヘッドを順番に追跡します。計算の各ステップでアクセスできるのは有限量のテープのいずれかだけなので、各テープに関するこのような情報を格納するだけで済みます。したがって毎新たなシンボルの追加γ _へΓ(各テープ用)ヘッドが計算における任意の点であると表示されます。また、区切り文字の紹介#へΓ「仮想」テープの開始と終了を示します。与えられた入力ω = ω 1 ... ω nはマルチテープ・マシン上で、私たちのシングルテープ・マシンが入力されます- (良い運動である理由を証明する私たちも、すべての入力のマルチテープ・マシン上で最初のテープ上にあると仮定することができます)
次に、シングルテープマシンの状態を使用して、マルチテープマシンの状態とヘッドが見ている状態をエンコードします。シングルテープマシンの遷移関数は、マルチテープ遷移関数の多段シミュレーションです異なるテープアクションを適切に実行し、単一のテープを各セクションに順番に移動します。残っている唯一のしわは、セクションのスペースが不足したときにすべてをシフトしていることです(ただし、このようなサブマシンは簡単な練習です)。各セクションのサイズを小さくすることはありません。
(うまくいけば)単純な例:
我々は、入力アルファベットがわずかである3-テープTM有する言う、テープアルファベットは、Γ = { 0 、1 、⊔ }と入力されω = 10101。以下のような機械ルックスの初期テープの状態: テープ1:1 ∧ 0101 ⊔ ⊔ ⊔ ... テープ2:⊔ ∧ ⊔ ⊔ ⊔ ⊔ ⊔ ... テープ3:⊔ ∧ ⊔ ⊔ ⊔ ⊔ ⊔ ...
複合シングルテープマシンを構築するには、テープアルファベットに新しい記号を追加する必要があります。
2番目のステップの後:
もちろん、これはプロセスの高レベルのビューです-状態を構築する方法、または各シミュレートされたテープがどのように長くなるかについては説明していません(このために、シミュレートされたテープの最後に移動し、すべてを1ステップ右に移動して新しいブランクを押し込みます。つまり、シミュレートされたテープセルが追加されるのは、必要な場合のみです。