【发布时间】:2018-09-12 04:58:51
【问题描述】:
我需要帮助证明上下文无关语法 A 和常规语言 B 之间的集合差异是上下文无关语言。
我试图通过这样的例子来证明:
令 A = {a^n b^n | n >= 1}
令 B = {w {a,b}* | w 至少有三个 a }
那么 A-B 应该是 {a^n b^n | 1
如果 A-B 是一种上下文无关语言,那么一定有一些上下文无关语法 G 可以表示它。
G = ({S}, {a,b}, P, S)
S->aAb | ab
A->ab
G 是上下文无关的,因为它可以用 Normal Chomsky 形式重写:
S -> BD | BC
D -> AC
A -> BC
B -> a
C -> b
因此 A - B 的结果也必须是上下文无关的。
我不确定这是解决此问题的正确方法。欢迎任何帮助。
【问题讨论】:
-
“我试图通过例子来证明”——例子不是证明。
-
有人会如何证明上述内容?
-
尝试找到一种方法,将下推自动机和有限状态机组合成一台机器,同时完成两台原始机器的工作。
-
我是否可以在上面的示例中为 A 设计一个 PDA,为 B 设计一个 DFA/NFA,然后创建一个满足 A-B 的等效机器,这足以证明吗?
-
你需要一个通用的方法,而不是一个例子。
标签: context-free-grammar regular-language proof formal-languages context-free-language