图灵机在某个时候是否具有无限的假设?


9

在上一个问题中,什么是算法?,我问有一个基于预先计算的值数组返回函数值的“算法”是否是一种算法。

引起我注意的答案之一是:

阶乘示例进入另一种计算模型,称为非均匀计算。图灵机是统一计算模型的一个示例:它具有单个有限的描述,并且可用于任意大尺寸的输入。换句话说,存在一个TM可以解决所有输入大小的问题。

现在,我们可以改为按以下方式考虑计算:对于每个输入大小,都有一个TM(或某些其他计算设备)可以解决该问题。这是一个非常不同的问题。注意,单个TM不能存储每个整数的阶乘,因为TM具有有限的描述。但是,我们可以制作一个TM(或C中的程序)来存储所有小于1000的数字的阶乘。然后,我们可以制作一个存储所有1000到10000之间的数字的阶乘的程序。依此类推。

难道不是每个TM都实际上采取某种方式来处理无穷大吗?我的意思是,即使是具有有限描述的TM,也可以通过算法将任意数量的N的阶乘计算机进行计算

 int fact(int n) 
 { 
 int r = 1; 
 for(int i=2;i<=n;i++) 
 r = r*i; 
 return r; 
 } 

包含以下假设:TM具有“硬件”以通过“ <=”比较器比较任意大小的数字,并且还具有ADDers可以将i递增到任意数字,而且具有表示任意大小的数字的能力。

我想念什么吗?为什么我在其他问题中提出的方法在无限性方面不如在这种方法中可行?


5
注意“无限”和“任意大”之间的区别。
拉斐尔

这是一个很好的问题,但这是错误的陈述。当您提到图灵机时,您将基于最简单的计算模型获得答案。而且,这对您了解什么是算法几乎没有什么帮助,因为大多数答案都是基于一种非常受限制的机器的表达能力的局限性。很大程度上取决于什么是有限描述,实际上应该是可计算的描述。重要的一件事是它们是可计算的。有限是可计算的,但可计算不一定是有限的。
2014年

@Raphael Infinite与任意大都不同。但是,如果可以将无限实体适当地定义为该序列的极限,则将任意增加的序列视为无限可能会更简单。我们一直在处理如此定义的有争议的无限对象。
2014年

我怀疑对您的问题的否定答案是基于这样的假设:在抽象数学的某些虚幻领域之外,没有任何事物是无限的。如果是这样的话,这个问题就没有意义了。图灵机不能仅仅因为没有无限的东西而“假定无限的东西”。
2014年

Answers:


9

<=<=Σ

<=|||Σ|

图灵机并不是真正的“无穷交易”:它们处理无限的有限事物,至少在其标准定义中如此。输入是一个有限的字符串,并且在执行任何有限数目的步骤之后,机器仅检查或写入了有限数目的磁带单元。输入的大小或计算步骤的数量没有限制,但是输入是有限的,并且在任何有限数量的步骤之后,仅产生了有限量的输出。


7

我认为重要的区别是对Turing机器的描述是有限的,对机器的输入也是有限的,而用作存储的磁带是无限的。TM是主要使用有限磁带的有限机器。考虑磁带由单元格组成,其中每个单元格可以包含一个值。TM的输入写在磁带上。

TM的描述是一个有限的元组集合<current state, input, output, move, next state>

在每个步骤中,通过匹配当前状态和输入来找到要执行的操作。例如,我们处于状态0,我们读到1,因此我们找到了开始的元组,<0, 1, ...>然后在当前单元格中写入一个新值,向左或向右移动(我认为经典定义也允许停留在同一单元格中以及),然后更改为新状态。

因此,对于您的示例,您可能需要TM的无限大描述(无数个<current state, input, output, move, next state>元组),或者在TM的输入中包含查找信息。我相信TM的输入定义为有限的。因此,用经典定义的Turing机器可能无法做到这一点。

相比之下,斐波那契示例可以用有限数量的元组来描述TM的二进制形式进行计算,并具有有限的输入。


5
磁带也并不需要是无限的!可以根据需要扩展。所需要的只是磁带可以任意大
reinierpost 2014年

5

简而言之:Turing Machine可以对(无限指定)无限数据进行(无限指定)无限计算,并产生(无限指定)无限结果。基本思想是可以将这些无穷大定义为以数学上合适的方式定义的有限实体的极限。这是计算的数学语义学的基础。如果您考虑使用程序而不是图灵机,那么这些程序也可以包含(有限指定)无限的数据结构。最后,将制表函数fact作为一种可能算法的情况作为程序或TM模型进行分析,并带有与无限对象的惰性求值的关系的提示。

还有更多细节

关于您的最后一个问题,TM不会根据任意数字进行计算,而是根据这些数字的符号表示形式(任意(无界)长字符串表示它们)。适当的模数编码,它们可以通过这些表示来比较或对这些数字进行算术运算是正确的。

但是最初的问题是关于无穷大在图灵机中的总体作用。

这个问题的一个常见答案是,图灵机永远不会处理无穷大。它们是有限定义的,并且它们的计算结果都是在有限的时间内在磁带的有限部分上计算的(因此,较大的有限磁带就足够了)。确实,TM的空间需求时间是无限的,这与无限不同。

因此,由TM计算的任何答案也可以由有限状态自动机(FSA)计算,这在某种程度上是查看列表的一种方式。困难在于某些输入大小(如果仅读取输入,几乎总是这样)会超过自动机的大小。但是,然后,我们可以使用更大的一个。因此,如果我们要考虑无限制的输入大小,则需要可以执行计算的FSA无限序列。实际上,我们可能需要比传统FSA复杂一些的有限状态机,因为可能要计算输出(而不是是/否的答案),但是有限状态传感器可能应该这样做。

因此,如果我们要研究的问题具有无限的实例集,例如计算GCD,或者只是对任意大小的整数使用算术,我们就会看到无限性通过后门回到我们身边,因为这种无限FSA套。

π

再一次,我们可以用有限机器的无限计算序列来代替它。但是我们在作弊吗?

从物理角度来看,这是我们可以做的最好的事情。我们仅知道如何至少根据当前的物理技术来制造有限的机器,在不久的将来,这在该问题上不会有太大的改变。

但是,从数学的角度来看,我们如何以一致且易于处理的方式处理这些无限性。

当您考虑可以无限协作地计算无穷答案集的FSA无限集时,您将无法任意执行。您需要一些保护措施以确保您所做的事情有意义。众所周知,您可以使用无穷大的常规集并实际上使用无穷大的单例集来构建任何集。因此,考虑自动机的任意无限并集而没有任何限制将无济于事。您甚至会考虑在同一组自动机中得出不一致的答案。

您真正想要的是定义一致性的概念。但这需要一些预防措施。让我们假设您使用无限的自动机序列来模拟回答是或否或不停止的TM。问题在于,FSA总是会停止回答,例如“是”或“否”。但是,如果您使用的FSA的大小实际上不足以容纳所选输入,那么它应该回答什么。对于FSA实际上终止TM计算的情况,保留“是”和“否”,并且将这些答案之一与未完成的计算一起使用只会导致混淆。您想要的答案是:“ 对不起,我太小了,我无法分辨。请和这个家庭中的大个子一起尝试 ”。换句话说,您想要答案,例如 溢出不知道

因此,您需要具有3种状态的自动机:接受,不接受和未定义。未定义状态可以视为代表自动机缺失部分的状态,该状态迫使计算停止。因此,当计算停止时,根据其停止的状态,您会得到答案yesnoundefined

现在,您看到您想要的是无限的自动机序列,它们是consistent。无论没有与一致的 不确定,但肯定不是一致没有。当两个自动机在相同输入上给出一致的答案时,它们就是一致的。

π3.143.141551593.14163.1416π

我将不进一步发展这些理论方面,基于Turing Machines,这有点尴尬。关键是这些概念导致了这样一个想法,即计算域(无论是数据还是机器)形成了诸如格子之类的数学结构,其中无限大的对象可以适当地定义为无限增加(即定义得越来越好)序列的极限。有限的对象。定义无限序列需要更多的设备和连续性的概念。从根本上讲,这就是达纳·斯科特(Dana Scott)的语义学理论所针对的,并且它对可计算性的概念给出了不同的看法。

然后,可以将图灵机或其他可以进行“无限计算”的形式设备定义为机器的有限逼近序列的界限,它们的定义越来越好。无论机器输入或输出的数据是什么,情况都是如此。

我读过的最简单的文档是达纳·斯科特(Dana Scott)的一组手写的讲义,通常被称为阿姆斯特丹讲义。但我无法在网上找到它。任何指向副本的指针(甚至是不完整的,因为我有一部分)都将受到欢迎。但是您可以查看Scott的其他早期出版物,例如 《计算数学理论纲要》

回到问题的最初例子

这些近似概念适用于数据以及程序。该函数fact是递归定义的,这意味着它是函数的最小不固定点,可用于计算的有限收敛近似序列fact。越来越多的定义有限函数的序列收敛到一个无限实体,这就是您所谓的函数fact

fact

的确,如果考虑计算的基本TM模型,那么这种形式的无限数组是无法表达的。这并不意味着没有意义。一个图灵机可能还有第二盘磁带,应该用一些函数的列表值初始化fact。只要该函数是可计算的,它就不会改变TM的计算能力,即只要该表可以用可以为相关函数计算所有自变量-值对的另一个TM的无限计算初始化。

但是实际上,您无法完成无限的计算。因此,正确的方法是延迟计算表,即仅在需要时才填充条目。正是通过记忆来完成,这是我为您先前的问题提供的答案,具有不同的根据。


3

这个答案的要旨是,图灵机可以模仿我们可以编程的任何东西,并且可以对无限对象进行编程计算。

这是第二个答案,其重点更多地放在所提出的特定问题上,而不是在为该答案辩护的一般理论框架上,并且绝对需要回答该问题的更一般标题。它与我之前对OP的问题的答案完全兼容,两者都是什么算法?待办事项图灵机假定在某一时刻无限的东西?,这些答案为我提供了更多的理论背景。这可以看作是回答两个问题。

图灵机确实具有处理无穷大的能力,所有图灵完整的计算模型也可以处理无穷大,尽管仅具有可数的无穷大。我们的问题是我们只能观察到该无限的一部分,但是由于我们可以观察到的一部分是无界的,因此我们必须考虑整个无限。

另一个问题是我们只能处理有限指定的实体。实际上,如果我们考虑未明确指定的实体,那么我们所知道的科学的整个结构就会崩溃,因为不可能检查定义的一致性,甚至无法知道定义是什么,因为我们只能访问其中的一部分。有限的时间

可能还有另一个基本问题,与无限联合下的闭包定义了您想要的任何集合这一事实有些相似,除非您可以适当地有限地限制此类联合中允许的内容。但是我不确定我是否完全理解这个问题。

就像我说过的,图灵机确实具有处理无穷大的能力。我与一些高知名度用户的其他建议相矛盾,他们应该知道他们在这样一个基本主题上谈论的内容。

问题在于,图灵选择了非常基本的计算模型来实现其理论目的。越简单越好。对于更高级/更复杂的计算模型而言,机器语言对编程而言几乎是什么:非常晦涩的地方,您无法识别在高级编程中确实有意义的任何概念。事实是,就像机器语言一样,TM可以模仿的程度远远超过直接表达的程度。

23[Rd 但是它仍然经常被实现为无限计算,当获得正确答案时,该计算将被人为停止。

实际上,所有声明在TM中都有限但无限制的用户都非常谨慎地补充说,他们在其标准定义中考虑了图灵机。问题在于标准定义只是简化理论的一种手段,但是在试图理解计算结构时却几乎没有意义。

实际上,在计算中唯一重要的事情是必须以可计算的方式有限地指定所有内容,而不是必须是finite

我们假设图灵机必须是一个有限的对象。但这不是事实。您可以使用第二条只读磁带定义图灵机的模型,该磁带是只读的,并且包含针对所有整数值制成表格的函数,没有任何限制。那是无限的。但是,只要磁带的内容是经过计算指定的(可计算性意味着它是有限指定的),它就不会为您带来任何额外的计算能力。多余的磁带很可能会被嵌入另一台磁带机中的TM机器代替,并且会提供答案,而不是在多余的磁带上寻找答案。从更高的层次来看,差异是不可见的。

从实际实现的角度来看,我们可以有一个fact 图灵机来计算阶乘并将其列表在额外的磁带上,而另一个TM将使用额外磁带中的列表的阶乘,只要列表中仍有一些缺失时就等待第一个TM条目。但是第二台机器确实假设磁带的内容最终是无限的。制表机甚至不必一直工作,但是无论何时从表中请求数据并且在表中找不到数据时,制表机都必须恢复计算。

回到问题,无界整数与无限表之间的主要区别仅在于整数是有限的,无界的,但在有限时间内可以完全计算出整数。无限表的计算是无限的,有限的,但仍一直在增长到无限。这不是问题,但有所不同。无限对象只能通过有限逼近来访问,但它们是无限的。从这个意义上讲,可计算的无理数是无限的对象,至少对于它们表示为二进制数而言。

所有算法都是在一些数学理论的上下文中定义的。查表和无限表是一种算法。但这是数学理论中的一种算法,具有有限定义的无穷公理集,这些公理广泛(而不是集中地)指定了它针对每个整数参数公理化的函数的值。(请参阅上一个问题的回答)。这样做总是合法的,因为您总是可以向理论公理添加可证明的真实陈述。

在您当前的问题中转载的Usul陈述在我看来是不正确的(尽管所有内容都取决于定义)。他在回答中得出的结论(您没有复制)是,不能将无限表的使用视为一种算法,因为它只能由非统一的计算模型,不同机器的集合来实现,因此使用“” 没有可用于解决任何输入大小的“整体”问题的有限描述π

在实践中,这种无限实体的计算方法是通过惰性评估,随时计算所需的任何部分,并在需要更多部分时恢复其余部分的计算。这正是上面提出的通过 fact计算机延迟计算阶乘以将其存储在表中的建议,只要需要从表中获取更多数据即可。

在某种程度上,这似乎证明了代码空间必须是有限的(因为DanielV的回答),因为惰性评估实际上将基于某些有限代码。但是可计算性是一种普遍的编码游戏,因此,在旁观者看来,从数据中区分出代码总是很重要的。实际上,许多现代编程语言在值的内涵延伸规范之间并没有太大区别,并且指称语义并没有真正将“ 2 + 2”与“ 4”区分开。当问诸如“ X是什么? ”之类的问题时,语义实际上就是我们在谈论的话题。

这种对代码有限性的看法,也被视为静态的,这是为什么在无限大的整数用作数据的情况下,无法平等地看到无限表(被视为代码的一部分)的另一个原因。但这是另一种幻觉,它无法在元编程,反身语言和eval函数的使用中幸免于已知的编程实践。在这些语言中,只要计算机正在运行,就可以不受正在运行的程序本身的限制来扩展代码。确实,可以考虑使用图灵机来修改其自己的过渡规则,从而无限制地增加数量。这与通用图灵机的工作方式非常接近。

在设计理论框架时,简单性与直觉或表现力之间总是存在张力。简单性通常使对框架的分析更为简单,尤其是在证明特定属性或将其简化为其他框架时。但是,表达高级概念然后必须对其进行编码通常很不方便。我们不使用Turing Machines进行编程,而是使用高级语言,这些语言更具表达性和吸引力,并且可以在语义对等的基础上消除一些障碍,例如代码和数据之间的区别。图灵机看起来很简单,但可以超出其基本定义。


3

简短的回答:。图灵机在任何时候都不会承担任何无限大的任务。

这就是为什么它们可以有效地用作计算模型的原因之一。将计算描述为由无限设备执行的事情没有任何意义。

但是,它们的操作可能是无限的:它可能不会终止。这是它们作为计算模型有效的另一个原因。只能执行保证始终终止的操作的设备无法表达所有可能的计算。

更重要的是:操作需要无限制的内存:虽然实际使用的内存量始终是有限的,但它可能会任意增大。因此,您无法提供所有需要任何操作的内存。只能执行保证永远不会使用超过一定固定内存量的操作的设备无法表达所有可能的计算。


-1

“开箱即用”并泛化了这个问题,这确实成为了Turing机器抽象的核心,并提出了另一个尚未解决的角度:是的,Turing机器具有“假设无穷”的一些固有方面。因为这个概念是数学固有的。TM是物理机器的抽象。时间和空间的物理概念专门用于TM理论,但作为抽象,但也包含其真正对应的方面。

简而言之,TM 在理论上可能永远运行,也就是停顿问题。磁带是无限的,但在给定时间只能写入有限数量的磁带。永远运行的TM基本上假设时间和空间是无限的,即“无限”。其实有相应的时间空间层次 /“连续”是无限的。

但是假设物理宇宙是有界的(空间,时间,物质,最后一个在某种程度上类似于图灵机中的“符号”或“墨水”),则不可能抽象地实现此抽象概念的物理实现。有点类似/类似,在物理学中,有时宇宙被视为无界/无限,但仅是抽象。为了解决这个问题,这也是为什么现代计算机作为图灵机进行“建模”本身就是抽象的原因,因为计算机只能具有有限的内存等。

另一个有用的比较是数学中的数字线。数字线是无限的,但表示有限的数字。数字线上的每个数字都代表一个有限的数量,但是这些有限的数量是无限的。图灵机磁带与数学中的数字线概念有很强的相似性。图灵本可以轻松地将其定义为仅在一个方向上无限大,但他将其定义为在两个方向上都为无限大,就像数学数字线一样,在磁带上的负位置为“左”,正位置为“右”。

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.