我遇到了许多递归和递归可枚举语言的定义。但是我不太明白它们是什么。
有人可以简单地告诉我它们是什么吗?
我遇到了许多递归和递归可枚举语言的定义。但是我不太明白它们是什么。
有人可以简单地告诉我它们是什么吗?
Answers:
并不是的。你应该读几本书。也许我们可以推荐一些。
也就是说,如果存在图灵机,则该语言是递归的;如果给定字符串是该语言的一部分,则该语言总是可以回答“是”或“否”。如果我们仅对语言字符串说“是”(如果不是的话,它可以永远运行),那么我们就有一种递归可枚举的语言。不难发现,递归语言可以由Turing机器决定,而递归可枚举的语言可以列出其字符串(例如,通过并行运行无限数量的Turing机器-是的,这是可能的,请参见燕尾式-在字母表的所有字符串上,如果相应的TM接受,则输出一个字符串)。有许多等效的定义。
如果机器可以计算答案,则问题是递归的或可判定的。
如果可以使机器确信答案是肯定的,则问题是递归枚举的或不确定的。
一个语言只是一组字符串。可能具有无限基数。
如果存在一个TM,该TM会保持输出属于该语言的字符串(并且只有这样的字符串),那么该语言是递归可枚举的,从而最终该语言中的每个字符串都将出现在输出中。
如果上述TM不仅输出该语言的所有字符串,而且还按顺序进行输出,则该语言是递归的!(例如,按字典顺序)。
我相信您可以轻松想到递归语言(并构建一个按顺序输出它们的TM)。除非您阅读了有关不确定性和对角化的更多知识,否则很难提出递归的可枚举语言(不是递归的)。但是这种语言确实存在。
我觉得递归和递归可枚举语言之间的主要区别在于,如果递归图灵机不接受字符串,它将以非最终状态暂停
可递归枚举的Turing机器如果不接受字符串,则可能永远处于非最终状态或循环,这对于递归语言而言并非如此