为什么总功能无法枚举?


29

我们了解了函数枚举的概念。实际上,它们对应于编程语言。

这位教授在一个通俗的评论中提到,所有总功能(即始终为每个输入终止的功能)的类别不可枚举。那将意味着我们不能设计一种编程语言来允许我们编写所有全部功能,而不能编写其他所有功能,这将是一件很高兴的事情!

那么,如果我们想要体面的计算能力,我们(显然)如何不得不接受非终止的可能性呢?

Answers:


24

因为对角线化。如果是从所有总可计算函数可计算枚举ÑÑ,使得每个˚F Ë占总,然后= ˚F + 1也将是一个总可计算函数,但不会在枚举中。这将与有关顺序的假设相矛盾。因此,函数的可计算枚举不能完全由全部可计算函数组成。FËËñññFËg(i)=fi(i)+1

假设我们想到一个通用可计算函数,其中“通用”表示h是一个可计算二进制函数,并且对于每个总可计算一元函数f n 都有一些e使得f i = h e i 全部。然后还必须有一些e使得g n = h e n h(e,i)hf(n)Ëf(i)=h(e,i)ieg(n)=h(e,n)由于前一段的原因,它不是总功能。否则,将给出包括所有全部可计算一元函数在内的所有可计算一元函数的可计算枚举。H

因此,每个功能都是一个功能系统的要求与该系统中通用功能的存在是不相容的。对于某些弱系统,例如原始递归函数,每个函数都是合计的,但没有通用函数。具有通用功能(例如,图灵可计算性)的更强大的系统仅必须具有部分功能,以允许通用功能存在。


我只是想补充一下,有人发现对角线化似乎是一个漏洞。如果对程序使用类型化表示形式,则可以使用类型系统禁止对角线化并创建一个完整的自解释器。有关详细信息,请参见突破规范化障碍:F-omega的自解释器
hatch22 '16

当然,系统F不是图灵完整的系统。您链接的论文很有趣。看来他们设法以一种有趣的方式利用了非图灵完备性。
卡尔·穆默特

我不明白为什么“那么也将是一个可计算的总函数”。如果是一个总的可计算函数然后ķ ˚F ķ = ,然后评估ķ 需要评估ķ = ˚F ķķ + 1 = ķ + 1g(i)=fi(i)+1gk,fk=gg(kg(k)=fk(k)+1=g(k)+1:对映。因此看来,如果存在一个全部可计算函数的枚举,我们甚至无法建立,因此我们无法达成矛盾以反驳初始假设(我们可以达成一个矛盾,但它只是反驳了g是完全可计算的)。gG
agemO

甚至使用偏移的对角线来避免此问题似乎也会导致矛盾。
agemO

10

为了清楚起见,我们需要区分数学函数(我将它们称为函数,并且经常有很多这样的函数,因此它们根本无法枚举)和可以编写的函数:我将它们称为程序可计算函数

一个子集,可数集的é被称为可计算的,如果有一个程序,给定一个元素Xé回答“是”,如果X 小号和“否”,如果X 小号。(而且他总是必须响应某些东西)如果程序被授权不响应而不是说“否”,则该集合被递归枚举。(这等效于要求程序必须以任何顺序打印S的所有元素)小号ËXËX小号X小号小号

有限集合上所有程序的集合都是可枚举的,因为您可以编写一个解释器,该解释器仅在有限集合的所有元素上运行该程序,如果它们都终止,则返回“ yes”。(但看不到其中是否有一个)

您的教授说,所有程序在一个无限集合上的集合不可枚举的,因为您不能仅仅在无限数量的元素上运行您的程序。

但这并不意味着这很糟糕:

  1. 例如,如果可以证明所有程序都是合计的,就可以枚举,因为您可以枚举所有证明,并机械地检查它们是否证明您的程序合计。

  2. 即使是可枚举的集合也不可行,因为您可能必须永远等待,无法确定该过程是否会终止一天。我看不到如何使用列举所有全部功能的程序...

在某些编程语言中,您编写的所有内容都可以保证仅通过静态键入而终止!甚至有些保证您多项式界。目前,他们大多是学术性的,用这些语言写书可能会让您比使用Python编写书时感觉到更多的束缚,但是有很多研究人员在从事此工作。

因此,回答您的问题:在某种意义上,是的。要实现图灵完成(目前最高的计算能力),可能需要非终止。但是我发现这与总函数是否可枚举没有直接关系。您仍然可以编写所有程序!


2
“因为您不能只在无限数量的元素上运行您的程序” –这是一个很弱的论点,因为如果我可以从程序本身中获取所需的所有信息,则可能不需要这样做。请参阅此处的问题,以说明您进行推理的危险。
拉斐尔

确实。我并不是说这是一个证明(一如既往,您必须建立对角线的论点),也许我不应该使用“因为”这个词。我试图回答您的问题(我认为)不是关于教授陈述的证明,而是关于为什么终止与计算能力冲突的问题。
jmad 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.