双字补码超过 0,1 的上下文无关文法是啥? [关闭]

Posted

技术标签:

【中文标题】双字补码超过 0,1 的上下文无关文法是啥? [关闭]【英文标题】:What is the context free grammar for the complement of the double word over 0,1? [closed]双字补码超过 0,1 的上下文无关文法是什么? [关闭] 【发布时间】:2011-07-24 04:09:48 【问题描述】:

L=ww|w 属于 0,1* 的补集的 CFG 是多少?

【问题讨论】:

怀疑我,但我的印象是您希望我们为您完成作业。如果不是这种情况,请随时删除标签。 @phooji:是的,这是作业。我认为凌晨 5 点是承认失败和寻求帮助的好时机。 开始在CSTheory上问这样的问题 我投票结束这个问题,因为它与编程无关。它可能更适合Computer Science 【参考方案1】:

首先要观察一个事实,即任何奇怪的词都是语言的一部分。让我们定义以下语言:

L1=w1w|w0,1*,L0=w0w|w0,1*。

可以使用以下 CFG 定义这些语言:

S0/1 -> |0S0|1S1|0S1|1S0

现在看 L3:

L3=(L1)U(L2)U(L1L2)U(L2L1)

它是没有关闭到联合和连接的上下文。 让我们证明 L3 是我们正在寻找的语言。首先,正如我们所见,它处理所有可能的奇数长度词。至于偶数词,如果在语言中,至少有一对终结符,在词的两边是不同的。称这对为 a 和 b。每个偶数词都可以这样划分:

(x_1^m)(a)(x_2^m)(y_1^n)(b)(y_2^n)

这正是

(L1L2)U(L2L1)

这意味着 CFG 语言在补码下不是封闭的。

【讨论】:

【参考方案2】:

之前提供的答案不正确,因为它没有涵盖 L 的补码中存在的所有字符串,例如 011,110,11001 等。(之前的答案导致我失去了一些宝贵的分数,所以更新:)) 下面的文法可以用来证明 L 补码是 CFL。

S→A|B|AB|BA

A→a|aAa|aAb|bAb|bAa

B→b|aBa|aBb|bBb|bBa

A 生成以 a 为中心的奇数长度的单词。 B 和 b 相同。

有更清晰的解释here。

【讨论】:

以上是关于双字补码超过 0,1 的上下文无关文法是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

3.2语法分析-上下文无关文法

3.2语法分析-上下文无关文法

编译原理—词法分析构建DFA上下文无关文法LL分析提取正规式

LRSLRLRLALR文法之间的关系—编译原理

上下文无关文法

上下文无关文法