繁体   English   中英

递归和递归可枚举语言有什么区别

[英]What is the difference between recursive and recursively enumerable languages

我想知道递归和递归可枚举语言在停机和图灵机方面的区别是什么。 我知道递归可枚举语言是递归语言的一个子集,但我不确定除此之外的区别。

你具有RRE之间的关系向后:RRE的(适当的)子集。 基本上,递归语言是一种你有一个总决策者的语言。

回忆一下递归可枚举语言的定义,即存在部分决定器的语言; 也就是说,一个图灵机,输入一个字母表上的单词,它将根据您的语言正确接受/拒绝该单词,或者如果该单词不在您的语言中,它可能会永远循环。

相比之下,递归语言是一种存在总决策者的语言,即永远不会循环的语言,并且总是在接受或拒绝状态中停止。

将这两个定义放在一起,很明显递归语言也是递归可枚举的,因为总决策器也是部分决策器(它只是从不“选择”循环而不是用正确的答案停止)。

主要区别在于,在递归可枚举语言中,机器对语言 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM