对于尚未完全完成的计算模型,是否有“可计算”的明确定义?


9

这是这里另一个问题的跟进,我希望它不要太哲学。正如Raphael在对我的上一个问题的评论中指出的那样,我并没有真正理解“可计算”的定义,但是根据我读过的一些论文,当涉及到比图灵弱的计算模型时,该定义也不是很清楚。机器,因为输入和输出的编码。

图灵可计算的典型定义如下:

定义1:函数称为图灵可计算函数,前提是有一台图灵机M使用自然数的适当编码作为字符串来计算ff:NkNMf

定义的确切区别在于确切的编码是什么,但是大多数将二进制编码一元编码十进制编码称为固定和合适的编码。还可能显示出,为定义可计算性需要固定一种编码。但是,是什么使自然数的二进制编码如此特殊,以便我们可以将其公理化为一种合适的编码呢?可能是因为它符合可计算性巧合的直观概念。

现在,如果我们看比图灵机更的计算模型怎么办?例如,让我们考虑集合 “残废”图灵机与字母表{ 0 1 }这可能只向右移动,和的定义残废图灵可计算这与图灵可计算性是一致的:Mc{0,1}

定义2:一函数称为残废图灵可计算可计算中号Ç当且仅当有一个残缺图灵机中号,其计算˚F使用自然数作为字符串的一个合适的编码。f:NkNMcMf

如果我们定义“合适的编码”为“二进制编码”,则该函数可计算中号Ç。如果将“合适的编码”公理化为“一元编码”,则fM c中计算。考虑到每个人都可以随意修复无限多种直观编码之一的事实,这似乎很尴尬。应该清楚的是,计算模型是否可以计算ff:NN,nn+1Mcf Mcf 还是不提及某些特定的编码-至少我从未见过有人提到“循环程序比图灵机弱”时使用什么编码。


引言之后,我终于可以提出我的问题:如何为与直观的可计算性概念不一致的任意计算模型定义“合适的编码”和“可计算性” ?在可计算性框架内是否有可能?

编辑:我简化了介绍,但没有增加问题。

Answers:


6

您在这里缺少的一些基本事实是,从可计算性的角度来看,您提到的所有编码都是等效的:有一个可计算的函数将数字的二进制编码映射到其一进制编码,反之亦然。因此,为了定义可计算性,对于数字选择哪种编码都没有关系。只需修复您喜欢的编码即可。

f:ΣΣ

O(nc)cn

因此,回答您的问题–编码被指定为受限模型的定义的一部分。


“您在这里缺少的一些基本事实是,从可计算性的角度来看,您提到的所有编码都是等效的:有一个可计算的函数将数字的二进制编码映射到其一进制编码,反之亦然”-是的,我我在问题的原始版本中有这个问题,但是我看不到它与弱模型问题有什么关系。同样清楚的是,编码必须作为模型定义的一部分来指定,但是问题是如何得出这样一个合理的定义。
Stefan Lutz'3

1
人们把这个定义脱颖而出。由于不同的定义趋于等同,因此确切的定义无关紧要。这样做时,将有几种不同的复杂性概念。例如,对于某些图形算法,如果给定邻接矩阵或边列表,则会有所不同。
Yuval Filmus

总结一下:a)每个单个计算模型的定义必须包括语法,语义和适当的编码。b)“合适的编码”的定义完全独立于模型的语法和语义。c)无法给出对所有计算模型均有效的“适当编码”的定义。那是对的吗?
Stefan Lutz

我同意a)和b),但仅同意c)。您可以定义一个合适的编码,用作“标准编码”,除非明确说明了事实,否则将使用该编码。对于数字,存在这样的标准编码-二进制编码。
Yuval Filmus

M

4

首先,您不能将“合适的编码”固定为二进制字符串或任何其他编码。这是因为您将失去太多的计算模型,因为不同的计算模型可能具有非常不同的输入和输出模型。换句话说,它们可能不会“说”字符串。

例如,未类型化lambda演算的项要么是变量,要么是一个项对另一个项的应用,或者是lambda项的抽象。输入和输出是术语,任意字符串。仍然,未类型化的Lambda演算是图灵完备的,因为存在一个“合适的编码”,该编码将自然数编码为某种形式的Lambda项,并且在此编码下,对于每个可计算的函数,都存在一个Lambda项来对其进行计算。

如果将图灵机固定为计算的参考模型,则可以形式化“适当的编码”,然后要求二进制字符串之间的编码和解码必须由始终停止的图灵机执行。例如,图灵机将能够将自然数作为二进制字符串转换为表示该数字的Lambda项,模拟Lambda演算的减少,然后将结果转换回二进制字符串。

对于更简单的计算模型,我希望使用相同的方法:采用计算的参考模型并固定自然数的编码,然后确保通过该简单模型的实例完成编码和解码。如您所述,对于残缺的Turing机器,使用一进制和二进制编码的数字将不会产生等效的计算模型。


您是否有可能在上一段中扭转了局面?您写道,编码是由简单模型而不是参考模型完成的-在上一段中,您希望由参考模型而不是其他模型(lambda演算)完成编码。
Stefan Lutz

如果您正在研究较弱的计算模型,那么您甚至不想在编码/解码阶段就在任何地方使用图灵机。这样,您就可以在编码阶段执行所有计算,并且任何计算模型都将成为图灵完整的。因此,您需要使用更简单的参考模型进行编码/解码。
Hoopje 2015年

1
nNchurch:Nlambdatermchurch(n)toBinary:lambdatermlambdatermwΣ
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.