【问题标题】:Trying to prove that the complement of {a^i b^i c^i} is a context-free试图证明 {a^i b^i c^i} 的补集是上下文无关的
【发布时间】:2016-11-14 01:35:27
【问题描述】:
我试图证明 L= {a^i b^i c^i : i >= 1} 的补码是无上下文的。 L 补码是: {w is a word over {a,b,c}* : w not in L}。
众所周知,上下文无关语言在联合下是封闭的。所以,我试图将我的语言({a^i b^i c^i} 的补码)划分为上下文无关的子集,其中它们的联合必须是上下文无关的。谁能帮我找到子集?每次我尝试,我都会得到 L*!
谢谢。
【问题讨论】:
标签:
subset
context-free-grammar
context-free-language
【解决方案1】:
注意:在下文中,我省略了L不包含空字符串的约束,但只需要稍作调整即可。
考虑a<sup>i</sup>b<sup>j</sup>c<sup>k</sup>。
如果i=j 和j=k 那么你有a<sup>i</sup>b<sup>i</sup>c<sup>i</sup>。相反,如果i≠j 或j≠k,那么你有a<sup>i</sup>b<sup>i</sup>c<sup>i</sup> 的补码。
换句话说,
<pre>L = { a<sup>i</sup>b<sup>j</sup>c<sup>k</sup> | i=j } ∩ { a<sup>i</sup>b<sup>j</sup>c<sup>k</sup> | j=k }</pre>
和
<pre>L' = { a<sup>i</sup>b<sup>j</sup>c<sup>k</sup> | i≠j } ∪ { a<sup>i</sup>b<sup>j</sup>c<sup>k</sup> | j≠k }</pre>
很容易证明上述方程中的每个子集都是上下文无关的。正如您所说,上下文无关语言在联合下是封闭的,但它们在交集下不是封闭的;因此,L' 是上下文无关的,即使 L 不是。