2つのスタックを持つプッシュダウンオートマトンは、チューリングマシンと同等ですか?


41

、この答えは言及されています

通常の言語は、有限オートマトンによって認識できます。文脈自由言語にはスタックが必要であり、文脈依存言語には2つのスタックが必要です(これは、完全なチューリングマシンが必要であると言うことに相当します)

上記の大胆な部分の真実に関して知りたいと思いました。実際、それは本当ですか?これに対する答えに到達する良い方法は何ですか?


太字のテキストには2つのクレームがありますが、質問のタイトルは、そのうちの1つだけに関心があることを示しています。
タイソンウィリアムズ

@TysonWilliams:はい、そうですか?
レーザー

これは紛らわしいです。あなたが正当化を望む2つの主張のサブセットはわかりません。
タイソンウィリアムズ

中1のために大胆な、などの質問に言及しました。
レーザー

2
@Lazer:太字のテキストには2つのステートメントが含まれています(「CSLには2つのスタックが必要」、「2つのスタックはTMと同等です」)。CSLはREの適切なサブセットであるため、trueにできるのは1つだけです。
ラファエル

回答:


38

この答えの2ビット。

まず、Turing Machinesによって認識される言語のクラスはコンテキスト依存ではなく、再帰的に列挙可能です(コンテキスト依存は、線形バウンドオートマトンから取得する言語のクラスです)。

2番目の部分は、質問を調整すると仮定すると、はい、2スタックPDAはTMと同じくらい強力です。一方向にのみ無限のテープを持つTMのモデルを使用していると仮定するのは少し簡単です(ただし、両方向はそれほど難しくなく、同等です)。

等価性を確認するには、最初のスタックを現在の位置の左側のテープの内容、2番目のスタックを右側の内容と考えてください。次のように開始します。

  • 両方のスタックで通常の「スタックの下部」マーカーを押します。
  • 入力を左スタックにプッシュします(非決定論を使用して、入力の終わりを「推測」します)。
  • すべてを正しいスタックに移動します(物事を適切な順序に保ちます)。

これで、入力を無視して、スタックの内容(テープをシミュレート)ですべてを実行できます。ポップして読み取り、プッシュして書き込みます(したがって、読み取ったものとは異なるものをプッシュすることで「テープ」を変更できます)。次に、右のスタックからポップして左に押して右に移動し、逆に左に押してTMをシミュレートできます。左のスタックの一番下にヒットすると、それに応じて動作します(モデルに応じて、停止して拒否するか、あなたの場所に留まります)。右のスタックの一番下にヒットすると、空白のシンボルを左にプッシュします。

完全な形式的証明については、別の質問への回答を参照してください。

他の方法の関係はさらに明白であるはずです。つまり、TMを使用して2スタックPDAをシミュレートできるということです。

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