「kテープ」チューリングマシンのテープを「1テープ」チューリングマシンの単一のテープにマッピングする方法


11

私はSipserを読んでいて、プロセスが何であるかを理解するのが難しいと感じています。k個のテープが付いたk個のチューリングマシンを提供すると、1本のテープだけで同等のチューリングマシンを吐き出すことができます。例がいいでしょう。実は、テープのTM から1テープのTMへの移行方法を示した例は、私が本当に探しているものです。私はこれまでこれを見つけることができませんでした。私も証拠を探していません。k


「同等のマシン」とはどういう意味ですか?入力と出力は何ですか?(おそらく、1つのチューリングマシンにテープが付いているという意味ですか?)k
ユヴァルフィルムス

はい。k本のテープが付いた1台の旋盤。
user678392 2013

回答:


17

から恥知らずにコピーされた答え:

マルチテープチューリングマシンは、我々は、拡張遷移関数を有する以外は、ほとんどが単一のテープ・マシンと同じである kはテープの数です。したがって、各状態で、遷移関数は各テープの内容を読み取り、新しい状態に移動し、(おそらく)各テープに何かを書き込み、各ヘッドを移動します-通常のTMと同じように、今、読み取り、書き込みの対象が増えます移動します。Q×ΓkQ×Γk×{L,R}kk

あなたの質問が示唆するように、そのようなマシンはシングルテープ TM でシミュレートできます。さらに良いのは、2次のスローダウンだけで実行できることです(多項式で閉じたクラスの場合は、シングルテープマシンについて説明すれば十分です)。

この証明はやや複雑で、単純なWeb検索で簡単に利用できるため、テープのキーマッピングを1つのテープにスケッチするだけです。k

基本的な考え方は非常に簡単です。新しいシンボルをいくつか追加するだけで、各テープとヘッドを順番に追跡します。計算の各ステップでアクセスできるのは有限量のテープのいずれかだけなので、各テープに関するこのような情報を格納するだけで済みます。したがって毎新たなシンボルの追加γ _Γ(各テープ用)ヘッドが計算における任意の点であると表示されます。また、区切り文字の紹介Γ「仮想」テープの開始と終了を示します。与えられた入力ω = ω 1 ... ω nはγΓγ_Γ#Γω=ω1ωnマルチテープ・マシン上で、私たちのシングルテープ・マシンが入力されます- (良い運動である理由を証明する私たちも、すべての入力のマルチテープ・マシン上で最初のテープ上にあると仮定することができます)

#ω1_ωn#_#_##_#k sections, one per tape

次に、シングルテープマシンの状態を使用して、マルチテープマシンの状態とヘッドが見ている状態をエンコードします。シングルテープマシンの遷移関数は、マルチテープ遷移関数の多段シミュレーションです異なるテープアクションを適切に実行し、単一のテープを各セクションに順番に移動します。残っている唯一のしわは、セクションのスペースが不足したときにすべてをシフトしていることです(ただし、このようなサブマシンは簡単な練習です)。各セクションのサイズを小さくすることはありません。k

(うまくいけば)単純な例:

我々は、入力アルファベットがわずかである3-テープTM有する言う、テープアルファベットは、Γ = { 0 1 }と入力されω = 10101。以下のような機械ルックスの初期テープの状態: テープ1:1 0101 ... テープ2:... テープ3:...Σ={0,1}Γ={0,1,}ω=10101

Tape 1:10101Tape 2:Tape 3:
」は、読み取り/書き込みヘッドが各テープのどこにあるかを示します。

複合シングルテープマシンを構築するには、テープアルファベットに新しい記号を追加する必要があります。

  1. シミュレートされたテープの開始と終了を示すシンボルが必要です
  2. 各シンボルには、シミュレートされたテープのヘッドがシミュレートされたテープのその文字にあることを示すバージョンも必要です。Γ

Γ={0,1,,0_,1_,_,#}

#1_0101#_#_#
)および3つのシミュレートされたテープのシミュレーションされたヘッド(下線付きの文字)。もちろん、テープはいつものように無限に右に伸びます。また、テープヘッドを最初の文字列の最初の文字に移動することで、穏やかに不正行為をしました。厳密には左端のセルから開始する必要がありますが、これは簡単な技術です。

#

1101

1

Tape 1:10101Tape 2:1Tape 3:

0

Tape 1:10101Tape 2:1Tape 3:1

Γ

#10_101#1_#_#

2番目のステップの後:

#101_01#1_#1_#

もちろん、これはプロセスの高レベルのビューです-状態を構築する方法、または各シミュレートされたテープがどのように長くなるかについては説明していません(このために、シミュレートされたテープの最後に移動し、すべてを1ステップ右に移動して新しいブランクを押し込みます。つまり、シミュレートされたテープセルが追加されるのは、必要な場合のみです。


2
または、別々の「トラック」を使用して、同じスペースに隣り合った別々のテープを書き込みます。ただし、これには新しいアルファベットの導入が含まれます。
Hendrik Jan

2
@ user678392細部にわたって構造を検討し、ここにすべて書き込むには、少なくとも数時間かかります。わからない部分を説明するつもりがないなら、なぜ誰かがあなたに代わってそんなに多くの仕事をしなければならないのですか?そして、誰かがそうしたらどうなりますか?「わからない。誰か他の人がやる」と言うだけですか?
David Richerby 2013

1
@ user678392ありがとう。そして、明確にするために、あなたが苦労している英語ですか(言い換えれば、助けになる可能性が高いでしょうか)、それとも説明の詳細が必要ですか?
David Richerby 2013

1
@ user678392、変換の最初のステップの概要とテープ上の実際の出力の例を追加しました。新しい状態のセットを構築する方法については説明しません。これは非常に複雑であり、Sipserまたは類似のものよりも優れた説明が得られないためです-それは本質的に面倒で数学的なものです。
ルークマシソン2013

1
@RomaKarageorgievich過去5年間で、より明確な証拠の多くが消えたようです(インターネットを信用しないでください:D)。私が見つけた最も明確なものはここにあります(警告、.docファイル!)。マーティンの「言語と計算理論入門」の証明は、その本にアクセスできれば非常によい(第4版の244ページ)。シプサーの「計算理論入門」の証明で十分です(第3版の177ページ)。
ルーク・マシソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.