PDAが文字列を受け入れるかどうかを示すにはどうすればよいですか


8

PDAが形式文字列を受け入れるかどうかを決定する問題を示す方法 wが| W ∈ { 0 、1 } * }決定不能ですか?{w!w∣w∈{0,1}∗}

私は、この問題を、2つの文脈自由文法が同じ言語を受け入れるかどうかなど、別の決定不可能な問題に削減しようとしました。ただし、それをサブルーチンとして使用する方法がわかりません。

回答:


12

これが私のアプローチです。問題を決定できれば、決定できないことがわかっているPostの通信問題(PCP)を決定できることを示します。

PCPはタプルのセットP = { (x 1、y 1)、… 、(x n、y n)}で次のようなシーケンス(繰り返しを含む)を作成できるかどうかを尋ねる決定問題であることを覚えておいてください。このシーケンスの連結されたx iと連結されたy iは同じワードを形成します。アルファベットは2文字以上でなければならないことに注意してください。2P={(x1,y1),…,(xn,yn)}xiyi

したがって、 PCPのインスタンスとします。Pのi番目の要素に新しい終端記号t iを導入した、次の文脈自由文法について考えてみましょう。文法は、次のルールがあります。 SをPtiiP (変数Xが「そこだけ除外するためであるSを⇒!)。

S→X!YX→x1X′t1∣x2X′t2∣⋯xnX′tnX′→x1X′t1∣x2X′t2∣⋯xnX′tn∣εY→y1Yt1∣y2Yt2∣⋯ynYtn∣ε
X′S⇒!

もちろん、任意の文法があれば、文法と同じ言語を受け入れる対応するPDAを見つけることができます。したがって、対応するPDAを作成し、問題の仮想アルゴリズムを使用して、このPDAが形式単語を受け入れるかどうかを判断します。v(つまり、この文法からu !vという形式の単語を導出できるかどうか)。この情報を使用してPCPインスタンスPを解決する方法を示します。u!vu!vP

u!vutivu=vPuvuvxiyitiu=vP

Pu!v

Pu!v


1
いいね!まあ、私自身のソリューションよりも間違いなく簡単です。+1
— Hendrik Jan

1
u!uti

@ラファエル、私はあなたのコメントに対処するために答えを編集しました。良い点-ありがとう!
— DW

5

アプローチは次のようになります。TMの計算ステップをコーディングするコンテキストフリー(= PDA)言語を作成し、記述した形式の単語がある場合に完全な計算が成功するようにします。

C⊢C′C#m(C′)m(C)

C0#C1#m(C2)#C3#m(C4)#…C2n−1#m(C2n)#Cf! C1′#m(C1′)#C2′#m(C2′)#…Cn+1′#m(Cn+1′)kC2k−1⊢(C2k)C0Cf

これで、最初の部分で連続したステップが確実になり、2番目の部分で連続した構成が同じになります。両方の部分が一致する場合、計算が行われます。私たちが決めることはできません。

それがアイデアです。一部のインデックスが間違っている可能性があり、シーケンス全体をバイナリでエンコードする必要がありますが、それは解決できます。


わかった。ただし、「重複した構成の言語と連結された個別のステップの言語を検討してください...」という部分は、さらなる説明から利益を得る可能性があります。たとえば、正しいインデックスを使用できます。とにかく、それは素晴らしいアイデアです。
— A.Schulz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.