文脈自由文法に「死んだ状態」がありますか?


18

文脈自由文法に、オートマトンからの「死んだ状態」を含めることができますか。

G=({a,b,c},{A,B,C},{AaB,Bb,BC,CcC},A)?

プロダクションルールおよびは永久にループし、単語を生成しません。これは許可されますか、または生産ルールはある時点で端末で終了する必要がありますか?BCCcC

回答:


24

文脈自由文法には非生産的なルールを含めることができます。すべてのCFG が、非生産的なルール、空の文字列の生成、サイクルのない適切なCFGと同じ言語を生成するため、これは受け入れられます。したがって、一般性を失うことなくCFGが適切であると想定するのは安全です。


完全ではありません:適切なCFGは、さらに2つの要件を満たす必要があります。だから私はこれを再定式化したい。
reinierpost

@reinierpost:非生産的なルールを禁止するが、不適切なCFGを含むCFGのクラスが存在することを意味すると思いますか?再定式化は次のような単純なものになると思います。「たとえば、そうでない場合」
-mhelvens

非生産的なルールのないすべてのCFGが適切であるとは限りません。しかし、適切なCFGの定義は、非生産的なルールを明示的に除外することにより、これらが任意のCFGで可能であることを明確にしています。
reinierpost

改善していただきありがとうございます。そのようなルールを含めることが許可されていないCFGのサブクラスがあると言っていました。
ilke444

非生産的なルール、空の文字列の生成、および({a}、{A}、{A-> epsilon}、A)と同じ言語を生成するサイクルを含まない適切なCFGがありますか?私は最初の文が好きです。おそらく、2番目の文は「これは、CFGの定義により、プロダクションの左側として有限の端末および非端末の文字列が許可されるためです。」
セオドアノーベル

3

はい、もちろん。すべてのNFAはCFGとして記述できます。また、「デッドステート」(私が教えられた用語は「シンク」)でDFAを構築するのは簡単です。

例: は、アルファベット上の空の言語を記述するCFGです。

G=({a},{A},{AA},A)
{a}

非受け入れ開始状態が1つだけで、自己遷移のみがあるNFAに類似してい  ます。ϵ

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