[英]What is the difference between recursive and recursively enumerable languages
我想知道递归和递归可枚举语言在停机和图灵机方面的区别是什么。 我知道递归可枚举语言是递归语言的一个子集,但我不确定除此之外的区别。
你具有R和RE之间的关系向后:R是RE的(适当的)子集。 基本上,递归语言是一种你有一个总决策者的语言。
回忆一下递归可枚举语言的定义,即存在部分决定器的语言; 也就是说,一个图灵机,输入一个字母表上的单词,它将根据您的语言正确接受/拒绝该单词,或者如果该单词不在您的语言中,它可能会永远循环。
相比之下,递归语言是一种存在总决策者的语言,即永远不会循环的语言,并且总是在接受或拒绝状态中停止。
将这两个定义放在一起,很明显递归语言也是递归可枚举的,因为总决策器也是部分决策器(它只是从不“选择”循环而不是用正确的答案停止)。
主要区别在于,在递归可枚举语言中,机器对语言 L 中的输入字符串停止。但对于不在 L 中的输入字符串,它可能会停止或可能不会停止。
当我们谈到递归语言时,无论机器是否接受它,它总是会停止。 如果它接受它到达(q接受)并停止。 如果不被机器接受,它直接到达(q 停止)。
停机问题是 RE 但非 R 问题的典型例子
在尝试拆分复杂性类时,记住一个属于一个但不属于另一个的示例总是好的。
在这种情况下,规范示例是对应于停机问题决策问题的语言:
HALT = 所有停止的图灵机/输入对
众所周知,任何图灵机都无法确定性地解决停机问题,因此 HALT 语言不在 R 中。
但 HALT 显然在 RE 中。
我们回忆一下递归可枚举语言的定义:
RE 语言是这样一种语言,它存在一个图灵机,它在输出是的每个语言成员上停止,并且可能在非成员上永远运行
所以我们只需要一个图灵机来模拟另一个图灵机(通用图灵机)。 然后该机器将在 HALT 的每个成员处停止,因此 HALT 处于 RE 中。
这个事实本身就应该突出 RE 比 R 难多少:RE 包含不可判定的问题,为此设计算法是不可能的! R,作为其定义的直接结果,没有。
非 RE 问题
查看将两者绑定的示例也很有帮助:
规范示例是 HALT 的补充:所有非暂停 TM/输入对的语言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.