Answers:
因为对角线化。如果是从所有总可计算函数可计算枚举Ñ到Ñ,使得每个˚F Ë占总,然后克(我)= ˚F 我(我)+ 1也将是一个总可计算函数,但不会在枚举中。这将与有关顺序的假设相矛盾。因此,函数的可计算枚举不能完全由全部可计算函数组成。
假设我们想到一个通用可计算函数,其中“通用”表示h是一个可计算二进制函数,并且对于每个总可计算一元函数f (n )都有一些e使得f (i )= h (e ,i )我全部。然后还必须有一些e使得g (n )= h (e ,n )由于前一段的原因,它不是总功能。否则,将给出包括所有全部可计算一元函数在内的所有可计算一元函数的可计算枚举。
因此,每个功能都是一个功能系统的要求与该系统中通用功能的存在是不相容的。对于某些弱系统,例如原始递归函数,每个函数都是合计的,但没有通用函数。具有通用功能(例如,图灵可计算性)的更强大的系统仅必须具有部分功能,以允许通用功能存在。
为了清楚起见,我们需要区分数学函数(我将它们称为函数,并且经常有很多这样的函数,因此它们根本无法枚举)和可以编写的函数:我将它们称为程序或可计算函数。
一个子集,可数集的é被称为可计算的,如果有一个程序,给定一个元素X的é回答“是”,如果X ∈ 小号和“否”,如果X ∉ 小号。(而且他总是必须响应某些东西)如果程序被授权不响应而不是说“否”,则该集合被递归枚举。(这等效于要求程序必须以任何顺序打印S的所有元素)
有限集合上所有程序的集合都是可枚举的,因为您可以编写一个解释器,该解释器仅在有限集合的所有元素上运行该程序,如果它们都终止,则返回“ yes”。(但看不到其中是否有一个)
您的教授说,所有程序在一个无限集合上的集合是不可枚举的,因为您不能仅仅在无限数量的元素上运行您的程序。
但这并不意味着这很糟糕:
例如,如果可以证明所有程序都是合计的,就可以枚举,因为您可以枚举所有证明,并机械地检查它们是否证明您的程序合计。
即使是可枚举的集合也不可行,因为您可能必须永远等待,无法确定该过程是否会终止一天。我看不到如何使用列举所有全部功能的程序...
在某些编程语言中,您编写的所有内容都可以保证仅通过静态键入而终止!甚至有些保证您多项式界。目前,他们大多是学术性的,用这些语言写书可能会让您比使用Python编写书时感觉到更多的束缚,但是有很多研究人员在从事此工作。
因此,回答您的问题:在某种意义上,是的。要实现图灵完成(目前最高的计算能力),可能需要非终止。但是我发现这与总函数是否可枚举没有直接关系。您仍然可以编写所有程序!