文脈自由文法の前後セットは常に文脈自由ですか?


14

してみましょう文脈自由文法であること。端末との非終端記号の文字列あると言われている文形式のあなたが制作適用することによってそれを得ることができればの開始シンボルにゼロ回以上。ましょうのsentential形態の集合。GGGGSSF⁡(G)G

ましょうおよびletのサブこと -我々は、呼び出し断片の。さあα∈SF⁡(G)βαβSF⁡(G)

Before⁡(β)={γ | ∃δ.γβδ∈SF⁡(G)}

そして

After⁡(β)={δ | ∃γ.γβδ∈SF⁡(G)}。

ある及び文脈自由言語は?が明確な場合はどうなりますか?が明確な場合、およびも明確なコンテキストフリー言語で記述できますか?後(β )G G 前(β )後(β )Before⁡(β)After⁡(β)GGBefore⁡(β)After⁡(β)

これはへのフォローである私の以前の質問の後、以前の試み失敗答えることが私の質問を容易にします。否定的な答えは、私が取り組んでいる包括的な質問に答えるのを非常に難しくします。

回答:


8

最初にと感覚をましょう。を含む派生ツリーを考えます。ここで「含む」とは、サブツリーを切り取って、がツリーの前面のサブワードになるようにすることを意味します。そして、前(後)セットは、のツリー部分の左(右)のすべての潜在的なフロントです:の後(β )β β βBefore⁡(β)After⁡(β)βββ

前後のセットを持つツリー
[ ソース ]

そのため、ツリーの水平に並んだ(垂直に並んだ)部分の文法を構築する必要があります。すでにツリー全体の文法を持っているので、これは十分簡単に​​思えます。私たちは必ず、すべてのsententialフォームが離れた単語(アルファベットを変更する)、フィルタを含まないものである確認する必要があります(として、通常のプロパティである固定されているが)、および(前)の後に、すべてを切り取るを含め、。この切断も可能です。β β βββββ


さて、正式な証拠へ。概要に従って文法を変換し、クロージャープロパティを使用してフィルター処理と切断を行います。つまり、非構造的な証明を実行します。CFL

を文脈自由文法としましょう。SF (G )がコンテキストフリーであることは簡単にわかります。次のようにG ' = (N '、T '、δ '、N S)を構築します。G=(N,T,δ,S)SF⁡(G)G′=(N′,T′,δ′,NS)

  • N′={NA∣A∈N}
  • T′=N∪T
  • δ′={α(A)→α(β)∣A→β∈δ}∪{NA→A∣A∈N}

有するに対するすべてのT ∈ T及びα (A )= N A全てについて∈ N。それは、明らかであるL(G ')= SF (G )。したがって、対応するプレフィックスクロージャーPref (SF (G ))およびサフィックスクロージャーSuff (SF (G ))もコンテキストフリーです¹。α(t)=tt∈Tα(A)=NAa∈NL(G′)=SF⁡(G)Pref⁡(SF⁡(G))Suff⁡(SF⁡(G))

さて、いずれかのあるL(β (N ∪ T )*)とL((N ∪ T )* β )正規言語。C F Lが交差し、下に閉じている右/左商正規言語で、我々が得ますβ∈(N∪T)∗L(β(N∪T)∗)L((N∪T)∗β)CFL

Before⁡(β)=(Pref⁡(SF⁡(G)) ∩ L((N∪T)∗β))/β∈CFL

そして

。After⁡(β)=(Suff⁡(SF⁡(G)) ∩ L(β(N∪T)∗))∖β∈CFL


¹ れる右(及び左)商の下では閉じ。Pref (L )= L / Σ ∗およびSuff yield prefix resp。サフィックス閉鎖。CFLPref⁡(L)=L/Σ∗Suff


私は答えを書き始め、私の証明があなたのものと同じであることに気づきました。私はそれを(ここに収まるように圧縮された)この方法を入れていると思います:文法形成新ターミナル追加することにより、A以外の各端末の(メタ変数)をAと生産A → A。そして、Gの文型は、メタ変数で構成されるGによって認識される単語です。これはCFGと通常の言語の共通部分であるため、通常の言語です。CFGのプレフィックスセットはCFGです(PDAを取得し、すべての状態を最終的にします)。B e f o r e(γ )=G′A^AA→A^GG再びCFGあります。Before(γ)={γ∣γβ∈L(Prefix(G^))}
— ジル 'SO-悪であるのをやめる

1
@Gilles、それに関する3つのコメント:1)文型には通常(適切に)言語が含まれています。2)「すべての状態を最終にする」-それは機能しません。単語以外の接頭辞も受け入れます。3)接尾辞を「切り捨てる」最後のステップは、厳密にするのが難しいようです。:/私よりも厳密だがコンパクトな証拠はありますか?
— ラファエル

1)問題ではありません(を変更して、各端末に非端末があるかどうか)。2)おっと、あまりにも切り過ぎた:最終状態に到達できるすべての状態を最終状態にする。3)一度に1つのターミナルbで行います。PDAでは、代わりにbをfinalとして消費することにより、最終状態に到達できる状態をマークします。はい、これを厳密にするにはさらに拡張する必要があります。Gbb
— ジル 'SO-悪であるのをやめる

9

はい、およびAfter(β )はコンテキストフリー言語です。証明方法は次のとおりです。まず、補題(これが核心です)。もしLが、その後CF次のとおりです。Before(β)After(β)L

Before(L,β)={γ | ∃δ.γβδ∈L}

そして

After(L,β)={γ | ∃δ.δβγ∈L}

CFです。

証明?用非決定性有限状態を構築トランスデューサT βそのスキャン文字列は、同時にそれが見るすべての入力記号を出力とするための非決定論的検索β。たびTのβは、最初のシンボル見β、非決定論フォーク、それが見て完了するまで、シンボルを出力停止βを又はそれからずれているシンボル見見βは、いずれの場合に停止します。場合Tのβは見βをBefore(L,β)TββTββββTββ完全に、停止時に受け入れます。これが唯一の受け入れ方法です。からの偏差が見つかった場合、拒否します。β

補題は、ハンドルケースにjiggeredことができるそれ自体と重なる可能性(のようなB B -を探し続けるβも前をスキャンの最中にしながらβ実際、元の非determinisic(または複数回出現します)フォークはすでにそれを処理します)。 βababββ

それはかなり明らかだ、及びCFLのは、有限状態変換の下で閉じているので、前に(L 、βが)、したがって、CFであります Tβ(L)=Before(L,β)Before(L,β)

同様の議論がにも当てはまります。または、Before(L 、β )からの文字列反転で行うこともできます。CFLも反転して閉じられます。After(L,β)Before(L,β)

After(L,β)=rev(Before(rev(L),rev(β)))

実際、反転引数が表示されたので、で開始するのがさらに簡単になります。そのためのトランスデューサーは、記述と検証がより簡単であるためです-βを探しながら空の文字列を出力します。βが見つかると、それは非決定的に分岐し、1つの分岐はさらにβのコピーを探し続け、もう1つの分岐は入力から出力にすべての後続文字を逐語的にコピーし、しばらく受け入れます。After(L,β)βββ

残っているのは、CFLだけでなく文型に対してもこの作業を行うことです。しかし、CFGの文型の言語はそれ自体がCFLであるため、これは非常に簡単です。あなたはすべての非ターミナル置き換えることであることを示すことができる全体でGと言うことでX "、宣言Xは、端末であることを、すべての作品の追加X " → Xを文法に。XGX′XX′→X

曖昧さに関するあなたの質問について考えなければなりません。

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