特定のクラスの無制限の文法のメンバーシップ問題


9

任意の文脈自由文法検討アルファベット上{ 0 、1 、¯ 0、¯ 1 }。この文法のプロダクションに、2つの固定非文脈自由制作を追加P:¯ 0 0 → ε と¯ 1つの 1 → εを。結果の文法をG Pと呼び、「Gプロダクションで増強されたP」を表す。G{0,1,0¯,1¯}P0¯0→ϵ1¯1→ϵGPGP

文法かかるアルゴリズム与えることが可能であるとストリングS上{ 0 、1 、¯ 0、¯ 1 }とするかどうかを決定するのは、∈ L(G P)?GPs{0,1,0¯,1¯}s∈L(GP)


興味深いことに、答えは「いいえ」のようですが、が正則であれば、L (G P)も正則だと思います。本質的に、のためにNFA L (Gは)のための1つに変換することができるL (G P)繰り返し添加することにより、εの -transitions (S 、ε 、T )あなたはパスを持つたびに(S 、ˉ 0、P 、0 、Tを)、L(G)L(GP)L(G)L(GP)ε(s、ε、t)または(S 、ϵ 、p 、ϵ 、t )、そして最後に(s、0¯、p、0、t)、(s、0¯、p、ε、q、0、t)、(s、1¯、p、1、t)、(s、1¯、p、ε、q、1、t)(s、ε、p、ε、t)脱離。ε
— Klaus Draeger、2014年

はい、そうです。実際、問題はプログラム分析(生存率ベースのガベージコレクション)の問題から生じました。CFGを非常に規則的な文法(Mohri-Nederhoff変換)に近似し、結果のNFAに対して簡略化をKlaus Draegerの記述とまったく同じ方法で実行して、問題を回避しました。P
— アミット。

回答:


5

このクラスの文法は決定できません。これを使用してチューリングマシンをエミュレートする方法の概要を次に示します。

各ポイントで、現在部分的に拡張された単語は次のようになります

[左にテープ][頭][右にテープ]

ここに:

  • 、適用後に Pを、文字のみを含ん ¯ 0と ¯ 1。[左にテープ]P0¯1¯
  • 、 Pを適用した後、文字 0と 1のみが含まれています。[右にテープ]P01
  • は単一の非終端記号であり、ヘッドの状態とヘッド位置の文字の両方をエンコードします。[頭]

ヘッド状態にあると仮定する、及びヘッドの下の文字であるI ∈ { 0 、1 }。次に、頭は非終端S iで表されます。状態Tに遷移し、現在の文字をjに置き換えて左に移動する必要がある場合、2つの遷移S i → 0 T 0 jおよびS i → 1 T 1 jがあります。それは右の代わりに、2つの遷移があるに移動する必要がある場合S I → ¯ jはS私∈{0、1}S私TjS私→0T0jS私→1T1jと S I → ¯ jの T 1 ¯ 1。ある意味では、頭は、一致する文字を生成することによって、移動する方向に文字を「推測」する必要があります。推測が間違っている場合、上の不変 [ 左にテープ ]または [ 右にテープ ]違反する、それが回復することはありませんでしょう。S私→j¯T00¯S私→j¯T11¯[左にテープ][右にテープ]

マシンが停止すると、ヘッドは「推測」して一致する文字を生成することにより、両面でテープを「消費」します。その後、空の単語が生成されます。その結果、対応するチューリングマシンが停止した場合にのみ、空の単語がそのような文法のメンバーになります。


NN

@ Amit.SIは、遷移の遷移についてさらにいくつかの説明を回答に提供しました。
— abacabadabacaba 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.