如果 L 和 L 补码是递归可枚举的,那么为啥 L 不能是正则语言?

Posted

技术标签:

【中文标题】如果 L 和 L 补码是递归可枚举的,那么为啥 L 不能是正则语言?【英文标题】:If L and L complement are Recursively enumerable then why can't L be a Regular language?如果 L 和 L 补码是递归可枚举的,那么为什么 L 不能是正则语言? 【发布时间】:2021-01-15 18:47:15 【问题描述】:

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

如果 L 和 L' (L 补码) 是递归可枚举的,那么 L 是 ?

a) 常规 b) 节能灯 c) 中超 d) 递归

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

因为我认为如果我们认为 L 是正则的,那么 L' 也是正则的(因为正则语言在互补下是封闭的)。现在由于 L' 是常规的,因此根据“乔姆斯基层次结构” L' 也是递归可枚举的。即使是 L 在常规之后,它也适合问题陈述,那么为什么选项(a)不是正确的选项? CSL 也是如此,为什么选项 (c) 也不是正确选项?

【问题讨论】:

可以,但不保证会。 但是如何保证是递归的呢? 问题陈述说它是递归可枚举的,而 L' 是递归可枚举的。因此,L 是递归的。 是的,你说得对。但是,如果问题陈述说 L 是递归可枚举的,这并不意味着它不能是正则的(bcoz 每个正则也是递归可枚举的)。现在如果它是正则的,那么 L' 正则和现在 L' 也可以说是递归的。我的意思是这是一个可能的情况。对吗? 它并没有说它不是正则的(它可能是因为所有正则语言都是递归可枚举的),但它并没有说它是正则的。因此,您必须考虑所有可递归枚举的语言,而不仅仅是常规语言。 【参考方案1】:

如果 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 是真的,但它可能不是其中任何一个也是真的;但它必须绝对是递归的。因此,这是“最佳”答案,也是唯一在所有情况下通常都是正确的答案。

【讨论】:

【参考方案2】:

快速回顾一下语言类——我们知道这 5 个语言类都是(严格)彼此的子集:

regular ⊂ CFL ⊂ CSL ⊂ recursive ⊂ recursive enumerable

问题是,如果我们知道语言 L 是递归可枚举的,并且我们知道它的补码 L' 也是递归可枚举的,那么我们能说什么来确定 L 属于哪个更小的类?

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

【讨论】:

以上是关于如果 L 和 L 补码是递归可枚举的,那么为啥 L 不能是正则语言?的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何不是 RE-hard 的递归可枚举问题?

递归语言的属性

递归可枚举,递归

mas714 笔记:undecidability

NOIp2003 加分二叉树

浅谈普通莫队算法