L = {ww | w属于{0,1} *}的补语的CFG是什么?
答案 0 :(得分:12)
首先要注意的是,任何奇怪的单词都是语言的一部分。我们定义以下语言:
L1 = {w1w | w {0,1} *},L0 = {w0w | w {0,1} *}。
可以使用以下CFG定义这些语言:
现在看看L3:
它是从关闭到联合和连接的上下文。
让我们来证明L3是我们正在寻找的语言。首先,我们已经看到它处理所有可能的奇数长度的单词。对于偶数长度的单词,如果它们是语言,则至少有一对终端,这两个终端在单词的两侧是不同的。将此对称为a和b。每个偶数单词都可以这样划分:
而这正是
这意味着CFG语言不会在补充下关闭。
答案 1 :(得分:0)
之前提供的答案不正确,因为它没有涵盖 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。