【问题标题】:How can I show this language is context free by constructing a context free grammar?如何通过构建上下文无关语法来证明这种语言是上下文无关的?
【发布时间】:2020-05-03 16:12:32
【问题描述】:

如何为以下语言构建上下文无关语法:

L = {0^n1^nx | n >= 1,x ∈ {0, 1}*}

这种语言是一些零后跟相同数量的一,然后是一些位串。 我在想我需要 S -> 0S1 用于 0^n1^n 部分和 A -> 0A | 1A | e 对于 x ∈ {0, 1}*。 因为在相同数量的零和一之后我需要一些位字符串,所以我做了

S -> 0S1A | e

A -> 0A | 1A | e

但是语法接受0001101,这是不正确的。有 3 个 0,只有 2 个 1。 我是 CFG 的新手。有人可以给我这个语言的提示吗?

【问题讨论】:

    标签: grammar context-free-grammar automata finite-automata context-free-language


    【解决方案1】:

    如果你有一种语言可以分解为两种子语言的连接,请分别构造两种语言,然后将它们连接起来:

    S → A B
    A → …
    B → …
    

    在这种情况下,A 将为 0n1n,B 将为 {0, 1}*

    【讨论】:

    • @asdf:以防万一:A 不能为空,因此其基本情况必须为 01。B 可以为空,因此其基本情况(在您的评论中省略)为空。
    • 非常感谢。是的,我有 A -> e,这就是为什么我最终的字符串以 1 开头。 S -> A B A -> 0A1 | 01 B -> 0B | 1B | e.这就是我现在拥有的,看起来很好。再次感谢
    猜你喜欢
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多