如果L和L的补语是递归可枚举的,那么L为什么不能成为常规语言?

问题描述

以下是GATE 2008论文中提出的问题:

如果L和L'(L补码)可以递归枚举,则L是?

a)常规
b)CFL
c)csl
d)递归

正确的选项是选项(d),我接受这是真的。 但是我的问题是为什么它不能成为常规或csl

因为我认为如果我们认为 L 是常规的,那么 L'也是常规的(因为常规语言在补语中是封闭的)。现在,由于 L'是常规的,因此根据“ Chomsky层次结构”, L'也可以递归枚举。就像 L 一样,它也适合问题陈述,那么为什么选项(a)不是正确的选项? csl也是如此,为什么选项(c)也不是正确的选项?

解决方法

语言类快速浏览-我们知道这5种语言类是彼此的(严格)子集:

常规⊂CFL⊂CSL⊂递归⊂递归可枚举

问题是,如果我们知道语言L是递归可枚举的,而我们知道它的补语L'也可以递归枚举,那么我们能确定该说哪一个较小的L类呢?

答案等同于说,如果语言L是递归可枚举的,而不是递归的,则L'不是递归可枚举的。该声明是正确的,但其他任何语言类的等效声明都不是。

,

如果L和L'都可以递归枚举,则

a)L可能是常规语言(实际上,如果L是常规语言,那么L'也同样是常规语言,并且所有常规语言都可以递归枚举)...但是有些非常规语言的补语可以递归枚举>

b)L可能是CFL(有些CFL的补语也是CFL,以及CFL的补语不是CFL)...但是有些非上下文无关的语言的补语可以递归枚举

c)L可能是CSL(有些CSL的补语是CSL)...但是有些非上下文敏感的语言的补语可以递归枚举

d)L必须是递归的,因为由于L和L'都可以递归枚举,所以我们有一个有效的可计算过程来确定是否有给定的字符串在L中:开始枚举每种语言的字符串,交织枚举(因此,您给L中的下一个字符串,然后给L'中的下一个字符串,然后返回L,依此类推)。继续执行此过程,最终将在L或L'中找到目标字符串,此时,您可以返回true(如果在L中枚举)或false(如果在L'中枚举)。

因此,虽然L 可以是常规的,CFL或CSL是正确的,但可能不是其中的任何一个也是正确的;但它必须绝对是递归的。因此,这是“最佳”答案,并且是在所有情况下通常都是正确的唯一答案。