上下文无关的语法中可以有“死态”吗?


18

上下文无关的语法可以包含自动机的“死态”吗?

G={一种bC}{一种C}{一种一种bCCCC}一种

生产规则C c C将永远循环,并且永远不会生成单词。这是允许的还是必须在某些时候以终端结束生产规则?CCCC

Answers:


24

上下文无关的语法允许包含无效规则。之所以被接受是因为每个CFG都会生成与某种适当的CFG相同的语言,其中不包含任何非生产性规则,没有空字符串产生,也没有循环。因此可以安全地假设CFG是适当的而不会失去一般性。


不完全是:适当的CFG必须满足另外两个要求。因此,我将重新制定这一点。
reinierpost

@reinierpost:我想您的意思是说,存在某些CFG类别禁止非生产性规则,但仍然包括不正确的CFG类别?我想重新制定
公式

我的意思是,并非每个没有无效规则的CFG都是正确的,这与您的陈述相矛盾;但是通过明确地排除非生产性规则来定义适当的CFG,这清楚地表明,在任意CFG中这些都是可能的,这就是我要写的。
reinierpost

感谢您的改进。我的意思是说,有些CFG的子类不允许它们包含此类规则。
ilke444

是否有一个适当的CFG,其中没有无效规则,没有空字符串产生,也没有与({a},{A},{A-> epsilon},A)生成相同语言的循环?我喜欢第一句话。也许第二句话应该是“这是因为CFG的定义允许将任何有限的终端和非终端字符串作为产品的左侧”。
西奥多·诺维尔

3

当然是。每个NFA都可以写为CFG。而且,构建具有“死状态”(我曾教过的术语是“沉没”)的DFA并不容易。

G={一种}{一种}{一种一种}一种
{一种}

ϵ

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.