L = { <M> : TM does not accept any thing }
只要TM接受,我们就可以逐个向TM提供字符串。如果没有这样的字符串,那么这个过程将是无限的时间,所以我们无法决定。因此递归可枚举。
P = { <M> : TM accept atleast one string }
我们可以说它是半可判定的。只要能接受至少一个字符串,我们就可以逐个向TM提供字符串。但是这个过程可以无限时间,并且不能保证TM会停止,因此递归可枚举。
如果以上两个逻辑都是正确的那么L和P(两者都是相互补充的)可以同时递归枚举。
If L and P are complement to each other and both are Recursive Enumerable then L must be Recursive.
我错在哪里?
答案 0 :(得分:1)
L
是半可判定的,这是错误的。
P
是半可判定的。请参阅以下伪代码
i <- 0;
while (true) {
foreach x in combanitaions of alphabet, such that |x| <= i { (\Sigma^*)
if (Simulate M for up to i steps == Accept) {
Accept;
}
}
++i
}
如果M
接受至少一个字符串,我们会在某一天找到它,因此P
(实际上NONEMPTY
)是半可删除的。
NONEMPTY
无法推断,可以从通用语言(Lu
)可以看作可以归结为NONEMPTY
Lu = { <M,x> | x ∊ L(M) }
Lu <= NONEMPTY
成立(可以在以后添加证明)。由于Lu
不可扣除,NONEMPTY
也无法推断。
因此,根据Post的定理,NONEMTPY
(你的L
)的补充,甚至不能半推导。
答案 1 :(得分:1)
简短回答:L不是RE。
要使它成为RE,你必须能够在有限时间内确定语言中的字符串/ TM IS。您确定的技术不符合此要求;它允许您确定字符串/ TM在有限时间内不是语言(通过查找TM将接受的输入),但因为TM不需要停止在不被接受的字符串上,所以它可能永远不会停止任何不接受的字符串。因此,它是共同RE,这就是为什么它的赞美是RE(“co”是“互补”的缩写)。
请注意,语言及其补语都可能是RE:该交集将是一种可判定的语言。