这是自动机课程的标准证明,其中和即不是上下文无关语言。L=Σ⋆
对于任何有限的,都是有限的(因此是CFL),这也是事实。我猜想对于不是CFL ,为无限且规则的是不足够的。编辑:非CFL呢?L
是否有任何表征什么有不是一个CFL?L
这是自动机课程的标准证明,其中和即不是上下文无关语言。L=Σ⋆
对于任何有限的,都是有限的(因此是CFL),这也是事实。我猜想对于不是CFL ,为无限且规则的是不足够的。编辑:非CFL呢?L
是否有任何表征什么有不是一个CFL?L
Answers:
更多带有猜想的扩展注释,但这是一个条件,似乎可以解决问题,因为对于S (L )而言,在常规L的情况下S (L )是无上下文的。
条件
在L的最小DFA A中,任何接受路径最多包含一个循环。
例外:如果两个循环的标签和第一个循环之前的前缀的标签都通勤,并且第二个循环之后的后缀为空,则允许两个循环。例如a a ∗ b (a a )∗可以。
回想一下,如果两个单词u和v是同一个单词t的幂,则它们会通勤。我们可以假定后缀为空,因为后缀不能为非空并且不能与DFA中第二个循环的标签相对应。
足够
假设条件,将构建PDA用于大号通过处理每个接受图案X ü ÿ的甲其中ü标签一个简单的循环。我们要接受形式为x u n y x u n y的单词。我们读x,为u的每次出现推一个符号,读y x,然后为u的每个出现弹出一个符号,最后读y。
关于例外情况,如果在这种情况下,则基本接受路径的形式为x u y v,其中u ,v是循环的标签。我们接受形式为x u n y v m x u n y v m的单词,但是假设(x ,u ,v通勤)与u n x y u n v m x y v m相同,则可以由PDA完成:按n
最终的PDA是每种模式的PDA的并集。
必要
(手动)如果有一条路径有两个循环,即使在最简单的情况下,您必须先走一个再走另一个(例如a ∗ b ∗),您也必须记住每个循环被执行了多少次,但是堆栈结构防止您以相同的顺序重复它们。请注意,DFA最小这一事实在表征中很重要,以避免一个循环就足够的情况下使用两个循环。
现在,必要的部分只是一个推测,可能需要更多的例外才能获得确切的条件,我会对反例感兴趣。