Computer science 为什么不';t递归可枚举语言不可判定

Computer science 为什么不';t递归可枚举语言不可判定,computer-science,turing-machines,formal-languages,Computer Science,Turing Machines,Formal Languages,这是Wikipedia对Decisable的定义 在可计算性理论中,不可判定问题由一个族组成 需要特定是/否答案的实例,例如 没有一个计算机程序,在任何问题的情况下 输入、终止并在有限时间后输出所需答案 步骤数。更正式地说,一个不可判定的问题就是一个问题 谁的语言不是递归集 递归集是递归可枚举集的子集。有些递归可枚举语言不在递归集合中。那么为什么递归枚举语言不是不可判定的呢 递归可枚举语言/集合也称为半可判定语言/集合。它们是不可判定的,因为没有一台机器会查看输入并(正确地)说是或否。半可判定意

这是Wikipedia对Decisable的定义

在可计算性理论中,不可判定问题由一个族组成 需要特定是/否答案的实例,例如 没有一个计算机程序,在任何问题的情况下 输入、终止并在有限时间后输出所需答案 步骤数。更正式地说,一个不可判定的问题就是一个问题 谁的语言不是递归集


递归集是递归可枚举集的子集。有些递归可枚举语言不在递归集合中。那么为什么递归枚举语言不是不可判定的呢

递归可枚举语言/集合也称为半可判定语言/集合。它们是不可判定的,因为没有一台机器会查看输入并(正确地)说是或否。半可判定意味着您可以编写一台机器,查看输入,如果输入在集合中,它会说“是”;如果输入不在集合中,它会无法停止。半可判定与递归可枚举等价,正如可判定与递归等价一样:-

如果您有一个枚举递归可枚举语言的图灵机R,那么您可以创建一个新的机器D,它接受的输入可能在语言/集合中,也可能不在语言/集合中。D运行R,直到R输出集合的第一个元素,然后D将其与输入进行比较。如果匹配,则返回“是”结果。如果它们不匹配,它将继续运行R,直到获得下一个元素,依此类推。因为R从不停止(因为语言只是递归可枚举的,而不是递归的),所以D要么回答是,要么不停止

相反,如果你有一台图灵机D回答“是”或无法停止,你可以制作一台新的机器R,它使用通常的技术一次一步并行运行多个D实例,并使用各种输入:集合中可能存在或不存在的所有元素。每次D的一个并行执行以“是”回答停止时,R输出D的该输入,并在所有剩余输入上继续执行D。R永远不会停止(因为有些输入D不会停止),但最终它将输出D回答“是”的每个元素,即集合/语言中的每个元素

不要误以为有三种(不相交的)集合:可判定的、半可判定的和不可判定的。有两种:可判定的和不可判定的。所有的可判定集也是半可判定的(尽管这样说很少见)。一些不可判定集也是半可判定的。这与说所有可枚举集都是递归可枚举的,而一些不可枚举集是递归可枚举的一样。

半可判定问题(或等效为递归可枚举问题)可以是:

  • 可判定的:如果问题及其补码都是半可判定的(或递归可枚举的),那么问题是可判定的(递归的)

  • 不可判定的:如果问题是半可判定的,其补码不是半可判定的(即,不是递归可枚举的)

  • 重要提示:记住,可判定(递归)问题也是半可判定(递归可枚举)问题。相反,如果问题不是递归可枚举(半可判定)的,则不是递归(可判定)的

    维基百科条目上说:

    不可判定的部分可判定问题称为 无法确定

    一般来说,半可判定问题(递归可枚举)可以是可判定(递归)或不可判定(非递归可枚举)


    还请注意一个问题及其补码可能都是(或只是其中一个)甚至不是半可判定的(非递归枚举)。还要注意的是,如果一个问题是递归的,那么它的补码也是递归的。

    我认为问题集的图形表示在这里可能更有用(不同集的大小在这里没有意义)

    总结如下:

  • 每个可判定(递归)问题也是半可判定(递归可枚举)的
  • 每个不可判定(递归)的半可判定(递归可枚举)问题都是不可判定的
  • 有一些不可判定的问题不是半可判定的(递归可枚举)

  • 因为他们是<如果问题是递归可枚举集,则称为部分可判定、半可判定、可解或可证明问题。部分可判定的问题和任何其他不可判定的问题称为不可判定。和@tvanfosson不,你错了。不可判定的部分可判定问题称为不可判定问题。可判定问题也是半可判定问题。换句话说,半可判定问题可能是:如果其补码也是半可判定的,则为可判定问题;如果其补码不是半可判定的,则为不可判定问题。@user602774很长时间过去了,但我相信您被误导了。维基百科的描述模棱两可,因为它有两种可能的理解方式(其中一种是错误的)。请阅读下面我的答案。我同意佩伦的观点,这不应该是一个被接受的答案。可判定语言L总是递归可枚举的。如果一种语言是递归可枚举的,那么它可以是可判定的,但这不是必须的。只有当它的赞美也是递归可枚举的,那么语言(以及它的赞美)才是可判定的。@ShellFish没问题,这是一个诚实的错误。我明白你关于“同意或停止”的观点。只有真正的计算机科学家才有可能误解这一点,但我已经解决了。我还修改了最后一段。现在更难曲解,但我担心也更难正确解释。这个答案太长了,不必要。这些概念要比这个答案简单得多,因为这个答案实际上是正确的