我需要帮助证明无上下文语法A和常规语言B之间的集合差异,是一种无上下文语言。
我试图通过这样的例子来证明:
设A = {a ^ n b ^ n | n> = 1}
设B = {w {a,b} * | w至少有三个人
。那么A-B应该是{a ^ n b ^ n | 1< = n< 1 3},例如(ab,aabb)
如果A-B是一种无上下文的语言,那么必须有一些可以表示它的上下文无关语法G.
G =({S},{a,b},P,S)
S->aAb | ab
A->ab
G是无上下文的,因为它可以用普通乔姆斯基形式重写:
S -> BD | BC
D -> AC
A -> BC
B -> a
C -> b
因此,A - B的结果也必须没有上下文。
我不确定这是解决此问题的正确方法。欢迎任何帮助。
答案 0 :(得分:0)
假设我们有CF语言C和常规语言R。然后存在PDA P和DFA D,其中L(P)= C而L(D)= R。
因此,让我们构造一个新的PDA,它模拟C和D,并且仅当单词被C接受并且被D拒绝时才接受。让我们将其称为PDAM。因此,如果x在L(M)中,则x在C,而不是R,所以L(M)= CR。
因此,CF和常规语言的设置差异为CF。 QED
我在这里使用的策略是尝试使用有关通用机器的二手事实,这些事实是作为构造性证明详细说明将接受设定差异的机器的一种方式。还要注意,通过示例进行的证明不是证明,您可能正在考虑通过构造来证明这是非常不同的。