📜  TOC 中的递归和递归可枚举语言

📅  最后修改于: 2022-05-13 02:24:08.629000             🧑  作者: Mango

TOC 中的递归和递归可枚举语言

递归可枚举 (RE) 或 Type -0 语言

RE 语言或 type-0 语言是由 type-0 语法生成的。图灵机可以接受或识别RE语言,这意味着它将进入语言字符串的最终状态,并且可能会或可能不会进入不属于该语言的字符串的拒绝状态。这意味着 TM 可以永远循环不属于该语言的字符串。 RE 语言也称为图灵可识别语言。

递归语言 (REC)

递归语言(RE 的子集)可以由图灵机决定,这意味着它将进入语言字符串的最终状态和不属于该语言的字符串的拒绝状态。例如; L= {a n b n c n |n>=1} 是递归的,因为我们可以构造一个图灵机,如果字符串是 a n b n c n的形式,它将移动到最终状态,否则移动到非最终状态.因此,在这种情况下,TM 将始终停止。 REC 语言也称为图灵可判定语言。 RE和REC语言之间的关系如图1所示。

递归语言的闭包性质

  • Union :如果 L1 和 If L2 是两种递归语言,则它们的并集 L1∪L2 也将是递归的,因为如果 TM 对 L1 停止并为 L2 停止,它也会对 L1∪L2 停止。
  • 连接:如果 L1 和 If L2 是两种递归语言,它们的连接 L1.L2 也将是递归的。例如:
L1= {anbncn|n>=0} 
    L2= {dmemfm|m>=0}
    L3= L1.L2
    = {anbncndm emfm|m>=0 and n>=0} is also recursive.
  • L1 说 n 不。 a 后面跟着 n 号。 b 的后跟 n 号。 c的。 L2 说 m 没有。 d 后跟 m 号。 e 的后跟 m 没有。 f的。他们的连接首先匹配没有。 a's、b's 和 c's 然后匹配 no。 d,e和f的。所以可以由TM来决定。
  • Kleene 闭包:如果 L1 是递归的,那么它的 kleene 闭包 L1* 也将是递归的。例如:
L1= {anbncn|n>=0}
         L1*= { anbncn||n>=0}* is also recursive.
  • 交集和补集:如果 L1 和 If L2 是两种递归语言,它们的交集 L1 ∩ L2 也将是递归的。例如:
L1= {anbncndm|n>=0 and m>=0} 
    L2= {anbncndn|n>=0 and m>=0}
    L3=L1 ∩ L2
    = { anbncndn |n>=0} will be recursive.

L1 说 n 不。 a 后面跟着 n 号。 b 的后跟 n 号。 c 的,然后任何没有。 d的。 L2 说不。 a 后面跟着 n 号。 b 的后跟 n 号。的 c 后跟 n 号。 d的。他们的路口说不。 a 后面跟着 n 号。 b 的后跟 n 号。的 c 后跟 n 号。 d的。所以它可以由图灵机决定,因此是递归的。
类似地,递归语言 L1 的补码是 ∑*-L1,也将是递归的。

注意:与 REC 语言相反,RE 语言在补语下不是封闭的,这意味着 RE 语言的补语不必是 RE。

门问题

问题 1:以下哪个陈述是错误的?
1.对于每一个非确定性 TM,都存在一个等价的确定性 TM。
2.图灵可识别的语言在联合和互补下是封闭的。
3.图灵可判定语言在交集和互补下是封闭的。
4.图灵可识别语言在并集和交集下是封闭的。

A.1 和 4
B.1 和 3
C.2
D.3

解决方案:

陈述 1 是正确的,因为我们可以将每个非确定性 TM 转换为确定性 TM。
陈述 2 是错误的,因为图灵可识别语言(RE 语言)在互补下不封闭。
陈述 3 是正确的,因为图灵可判定语言(REC 语言)在交集和互补下是封闭的。
陈述 4 是正确的,因为图灵可识别语言(RE 语言)在联合和交集下是封闭的。

问题 2:设 L 是一种语言,L' 是它的补语。以下哪一项不可行?
A.L 和 L' 都不是 RE。
B. L 和 L' 之一是 RE 但不是递归的;另一个不是RE。
C. L 和 L' 都是 RE 但不是递归的。
D. L 和 L' 都是递归的。

解决方案:

选项 A 是正确的,因为如果 L 不是 RE,那么它的补集就不是 RE。选项 B 是正确的,因为如果 L 是 RE,L' 不必是 RE,反之亦然,因为 RE 语言在互补下不是封闭的。
选项 C 是错误的,因为如果 L 是 RE,则 L' 将不是 RE。但是如果 L 是递归的,L' 也将是递归的,并且两者都是 RE,因为 REC 语言是 RE 的子集。正如他们提到的不是 REC,所以选项是错误的。
选项 D 是正确的,因为如果 L 是递归的,L' 也将是递归的。

问题3:令L1为递归语言,令L2为递归可枚举但不是递归语言。以下哪一项是正确的?

A.L1' 是递归的,L2' 是递归可枚举的
B.L1' 是递归的,而 L2' 不是递归可枚举的
C.L1' 和 L2' 是递归可枚举的
D.L1'是递归可枚举的,L2'是递归的
解决方案:

选项 A 为 False,因为 L2' 不能递归枚举(L2 是 RE 并且 RE 在互补下不闭合)。
选项 B 是正确的,因为 L1' 是 REC(REC 语言在互补下封闭)并且 L2' 不是递归可枚举(RE 语言在互补下不封闭)。
选项 C 为 False,因为 L2' 不能递归枚举(L2 是 RE 并且 RE 在互补下不闭合)。
选项 D 为 False,因为 L2' 不能是递归可枚举的(L2 是 RE 并且 RE 语言在互补下不关闭)。由于 REC 语言是 RE 的子集,因此 L2' 也不能是 REC。