真实计算机只有有限数量的状态,那么图灵机与真实计算机有什么关系?


42

实际计算机的内存有限,并且状态数量有限。因此,它们本质上是有限自动机。为什么理论计算机科学家会使用图灵机(和其他等效模型)来研究计算机?关于真实计算机研究这些更强大的模型有什么意义?为什么有限自动机模型不够用?


7
@Kaveh人们通常会说,是的,实践中使用的计算机是FSM,但是FSM太大,在FSM视图中会丢失有趣的结构属性。我从未见过非手波浪的解释。因此,这里的问题是话题。
Martin Berger

15
真正的问题是,当我们在分析算法时使用RAM模型时,为什么要研究图灵机。
Yuval Filmus's

39
因为有时1000000000000000000000000000000000000010000000000000000000000000000000000000更好的近似值。1000000000000000000000000000000010000000000000000000000000000000
Andrej Bauer

30
记住,当今理论计算机科学中最著名的未解决问题是:一种物理上不可能的虚构计算机能否像物理上更不可能的虚构计算机一样快地解决问题?不要将理论计算机科学误认为是实用计算机工程。物理世界的细节并不特别相关。
Eric Lippert

23
实际材料是由原子构成的,并且本质上是离散的,那么为什么要研究积分呢?
彼得·索尔

Answers:


32

考虑此问题时,有两种方法:历史与概念的发现方式有关,技术与技术解释了为什么某些概念被采用而另一些概念被放弃甚至被遗忘。

从历史上看,图灵机可能是尝试回答Entscheidungs问题的几种开发中最直观的模型。这与20世纪前几十年为完全公理化数学所做的巨大努力密切相关。希望是,一旦您证明一小套公理是正确的(这需要大量的努力),您就可以使用系统的方法为您感兴趣的逻辑语句得出证明。即使有人认为有限自动机在这种情况下,由于它们甚至无法计算简单的函数,因此将很快被撤消。

从技术上讲,所有计算机都是有限自动机的说法是错误的。有限自动机具有恒定的内存,无法根据输入的大小对其进行更改。在数学或现实上都没有限制,一旦使用了机器中的内存,就不会再提供额外的磁带,硬盘,RAM或其他形式的内存。我相信这通常是在计算的早期使用的,即使是简单的计算也可以填满内存,而现在对于大多数问题以及现代基础架构,它可以实现更高效的内存管理,在大多数情况下,这不是问题。


编辑:我考虑了评论中提出的两点,但选择不包括它们的简洁性和我可以写下答案的时间。这就是我认为为什么这些观点不会削弱Turi​​ng机器模拟现代计算机的有效性的原因,特别是与有限自动机相比时:

  • 首先让我解决一下宇宙限制记忆的物理问题。首先,我们真的不知道宇宙是否有限。此外,根据定义,可观察的宇宙的概念是有限的,根据定义,它也与可以前往可观察的宇宙的任何点以使用存储器的用户无关。原因是可观察的宇宙是指我们可以从特定点(即地球)观察到的东西,如果观察者可以前往宇宙中的其他位置,则情况会有所不同。因此,有关可观测宇宙的任何论点都将演变为宇宙有限性的问题。但让我们假设,通过一些突破,我们获得了宇宙确实有限的知识。尽管这会对科学问题产生重大影响,我怀疑这会对计算机的使用产生任何影响。简而言之,可能是计算机原则上确实是有限自动机,而不是图灵机。但是,对于绝大多数的计算以及人类可能对每个计算都感兴趣的各种可能性而言,图灵机和相关的理论为我们提供了更好的理解。在一个粗略的例子中,尽管我们知道牛顿物理学本质上是错误的,但我怀疑机械工程师主要使用量子物理学来设计汽车或工厂机械。可以在个别级别处理需要这样做的特殊情况。但是对于绝大多数的计算以及人类可能对每个计算都非常感兴趣的图灵机和相关的理论,我们可以更好地理解。在一个粗略的例子中,尽管我们知道牛顿物理学本质上是错误的,但我怀疑机械工程师主要使用量子物理学来设计汽车或工厂机械。可以在个别级别处理需要这样做的特殊情况。但是,对于绝大多数的计算以及人类可能对每个计算都感兴趣的各种可能性而言,图灵机和相关的理论为我们提供了更好的理解。在一个粗略的例子中,尽管我们知道牛顿物理学本质上是错误的,但我怀疑机械工程师主要使用量子物理学来设计汽车或工厂机械。可以在个别级别处理需要这样做的特殊情况。

  • 264264不同的地址。从本质上讲,联网是实现此目的的一种好方法,每台计算机仅关心其本地内存,但它们可以一起计算。


4
该答案的第二部分是错误的。即使您购买了所有RAM和其他硬件,计算机也是有限状态自动机。可以连接到计算机的RAM数量受其地址总线宽度的限制,磁盘和其他外围设备的RAM保持不变。
EmilJeřábek在2013年

12
@EmilJeřábek不正确。串行接口没有地址总线,并且我可以在Internet上访问的数据量不受计算机的任何属性限制。
停止Harming Monica's

5
@OrangeDog但宇宙仍然会限制可观察的宇宙中可以存储多少数据
棘手的怪胎2016年

9
正如图灵机所示,@ ratchetfreak,您只需要本地访问-磁带的当前“末端”不必在可观察的范围之内;)
停止Harming Monica 2016年

6
在提及历史时,值得引述Church对Turing论文的评论,Turing机器具有“使识别有效的优势……可立即显现。” 也就是说,对于试图说服自己确实捕获了所有可以计算出的一切的人们来说,图灵的定义令人信服。
Jim Hefferon

44

要完成其他答案:我认为Turing Machine比有限自动机更好地抽象了计算机的功能。确实,这两个模型之间的主要区别在于,对于有限自动机,我们期望处理大于状态空间的数据,而图灵机则通过使状态成为另一种模型(状态空间>>数据)空间无限。这种无穷大可以看作是“在数据大小之前非常大”的抽象。在编写计算机程序时,您试图节省空间以提高效率,但通常假定您不会受到计算机上总空间的限制。这就是图灵机比有限自动机更好地抽象计算机的部分原因。


14
这是恕我直言的正确答案。原因纯粹是务实的,图灵机在解释计算机在相关规模下的工作方面比有限自动机要好。
EmilJeřábek在2013年

3
我同意这一点,除了句子“您通常认为您不会受到计算机空间总量的限制”。相反,几乎所有不平凡的程序都受到可用空间的限制,程序员竭尽全力来处理它(例如,垃圾回收以自动重用内存),但是(1)我们对此无能为力,并且(2)我们只限于少量输入。值得注意的是,TM可以让我们自然地解决问题的大小,而这种问题大小的自然观念往往会使算法趋于封闭。
Martin Berger

2
@MartinBerger Re “几乎所有非平凡的程序都会受到可用空间的限制,程序员会竭尽全力来处理它(例如,用于自动内存重用的垃圾回收)”:我认为为具有垃圾回收的系统编写的程序会考虑该系统(包括gc)作为对其进行编程的计算机。垃圾收集器不是程序的一部分;准确提供Denis所说的努力的一部分是:一台要编程的机器,实际上具有无限的存储资源。
彼得-恢复莫妮卡

2
@ PeterA.Schneider我有点不同意。使用语言运行时提供的GC的原因是软件开发的经济学之一:特定于程序的内存管理机制比GC更具性能,并且大多数程序员都希望它能够安全且廉价地推出。但是他们不能这样做,所以安全起见并使用环境GC,其成本在大量程序中摊销。从这种意义上讲,使用GC来处理有限性存储器将花费很多时间。
Martin Berger

2
图灵机不是计算机做什么的抽象,它们是计算机做什么的抽象,并且计算机是在此之后构建的。计算机碰巧使用固定数量的内部工作内存来执行其大部分计算,但是并不是发明Turing Machines来推理具有有限工作内存量的计算。
reinierpost

10

安德烈·鲍尔(Andrej Bauer)在评论中给出了一个重要原因:

1000000000000000000000000000000010000000000000000000000000000000

让我以一些观点来完成其他答案,这些观点可能太明显了,无法提及:

  • 如果您的目标是研究真实的计算机,那么对于相关问题,有限自动机和图灵机通常都是过于简单的模型。实际计算机具有多个具有缓存层次结构(或其他一些智能管理方案)的处理核心,可以访问大量的快速内存,可以访问大量的慢速外部内存(硬盘),并且可以与其他类似的计算机进行通信。速度可以与慢速外部存储器的访问速度相媲美。
  • 如果现在问自己为什么需要所有这些细节,那么事实证明,您的真正目标是研究问题实例以及解决问题的效率。如果您在谈论真实的计算机,这也可能意味着您在不同类型的(真实)计算机体系结构上对实际问题实例进行了实验。
  • 上述真实计算机的模型仍然是理想的,因为它忽略了真实计算机的各种故障模式。由于断电故障可能比硬盘故障更为频繁(而且硬盘可能仍然有备份),因此某些问题域(例如可靠的数据库操作)可能需要考虑到这一点。
  • Π10

8

基于人们希望使用形式主义进行建模和理解的方式,形式主义是否有用。

图灵机是一种形式主义,对于理解程序很有用。程序值得理解;大多数实际计算是通过程序而不是专用机器执行的。图灵机形式主义使我们能够对现实世界中的重要问题进行建模,例如时间和空间复杂性。尝试使用有限状态自动机研究这些概念的可能性要低得多。

图灵机在尝试研究计算有限函数的复杂性时不是很有用(例如,其域由长度最多为一千万的输入组成的函数)。电路复杂度在描述有限函数的复杂度方面要好得多……但是图灵机反过来对理解电路复杂度非常有用。

有限自动机在理解电路复杂性方面也很有用。所有这些模型在数学武器库中都有其地位。

我拒绝说有限状态自动机是一种更好的现实模型的论点,纯粹是因为现实世界中的计算机只有有限数量的内部状态。有限状态自动机的研究至关重要地处理了来自无限字符串集合的输入,而现实世界中的计算机仅处理了一些固定最大长度的输入(除非您相信我们生活在一个无限的宇宙中,无论是在空间方面)或时间)。

应该根据模型在理解我们关心的现实方面时的效用来判断模型。或者(替代地)就其在理解人们发现足以令人信服的数学宇宙中的用途而言,即使该数学宇宙没有明显的物理表现。

图灵机,有限状态机和电路(以及其他模型)均已证明其实用性。


6

实际计算机不是FSA。实际的计算机是通用计算机,从某种意义上说,我们可以描述计算机以供计算机模拟,然后计算机将对其进行模拟。对于许多示例,搜索“虚拟机”。

可以构建通用图灵机-一个TM,它接收另一个TM的描述,然后在提供的输入上模拟该TM的操作。

n22n

作为文献的起点,我可以推荐“ 论普遍有限或下推自动机的存在”,它研究了普遍自动机的不存在。您可能还会查看其引用(依此类推)。


3
这是一种有用的方法,可以直观地掌握不同级别的“计算能力”。但是,OP似乎认为真实的计算机是FSM,因为状态数量有限,例如由于有限的RAM。按照您的说法,这意味着真正的计算机比图灵机更像FSM,因为我不能随意地将模拟机中的状态数加倍。我没有无限的磁带可以存储。
阿蒙

1
图灵机也不需要无限的磁带。计算机可以在计算中使用任意数量的外部存储(对于今天的云提供商而言,这尤其容易),因此从根本上讲它们像图灵机而不是FSM。
reinierpost

1
如果我们假设计算机的内存量是固定的,那么在模拟具有更多内存的计算机时它将耗尽内存,因此在这种假设下它并不是真正的通用。
卡夫

3

图灵机之所以与众不同,是因为它非常非常简单,但它可以运行我们可以想到的所有(类)算法。没有已知的计算机具有更强大的功能(因为它可以运行图灵机无法执行的算法)。

由于机械简单,因此很容易显示其他机器是否等效于图灵机或在何种程度上等效于图灵机。反过来,这使得相对容易地显示给定计算机(或计算机语言)是否真正通用(c / f“ Turing-complete”)。


问题是图灵机模型与真实计算机之间的关系。如果我们假设计算机的内存量固定,那么它并不是通用的。
卡夫

1

为什么有限自动机模型不够用?

尽管其他答案已经提到了许多相关方面,但我认为图灵机相对于有限自动机的强项是数据程序的分离。这使您可以分析一个非常有限的程序,并声明该程序如何处理不同的输入,而不会限制输入的大小。

从理论上讲,既可以描述一台实际的计算机,也可以描述诸如图灵机(带有有限磁带作为状态机)之类的东西,但这实际上是不可行的:状态数在计算机所拥有的全部内存中是指数的,而一般的有限状态自动机形式主义要求您明确列出这些状态之间的过渡。因此,对于具有这种大小的一般有限状态自动机,基于所有状态转换的完整枚举进行任何推导是完全不可行的。

当然,在真实的计算机中,状态转换不能任意发生。在计算的单个步骤中,没有命令交换内存中的三分之一位。因此,您可以尝试为状态转换提出更紧凑的规范。类似于您的体系结构的指令集规范。当然,为了提高性能,实际的计算机体系结构很复杂,因此您可以进一步简化为一些非常简单的指令集,该指令集仅使用非常有限的输入和输出执行非常小的步骤。最后,您可能会发现您的体系结构类似于图灵机解释器:使用一些程序代码和一点输入,生成一点输出,然后在您的程序代码中移动。

一种替代方法是使用有限状态自动机的状态来表示程序正在处理的数据,同时将程序本身编码为状态转换。那将带来同样的问题,即如何枚举所有状态,并且紧凑的表示可能再次接近图灵机所做的事情。

关于真实计算机研究这些更强大的模型有什么意义?

总的来说,我想说一台有限磁带的图灵机可能是实际计算机的更好模型。但是对于许多科学问题,有限但又大又与无限的磁带之间的区别是无关紧要的,因此仅主张无限的磁带就使事情变得容易。对于其他问题,所用磁带的数量是问题的核心,但是该模型使您可以轻松地谈论磁带使用量,而无需麻烦地指定如果计算用完磁带会发生什么情况。


1

大多数问题需要使用图灵机

尽管假定无边界磁带是一种有用的简化方法,但实际上大多数问题/算法都需要有限数量的磁带,并且可以分析并经常证明所需内存的范围(可能取决于输入的大小)。

这通常还会推广到其他类型的计算机(对于这些计算机而言,绑定分析或证明可能比在Turing机器上混乱得多),并允许估计特定问题所需的临时存储量-可以固定数量地完成空间?与输入成比例?随着输入的增加,它是否需要指数级的空间?


1

有限自动机不共享的图灵机的一个重要特点是它们可以根据问题的规模扩展解决问题所需的存储量

nn2

重点是:许多问题都有自然的解决方案,使用的内存越大,问题越大。因此,用可以使用无限内存的表示形式描述这些解决方案是很自然的-不是因为任何一个实例都将使用无限数量,而是因为有一个实例使用每个内存。您可以使用图灵机执行此操作,也可以使用有限自动机序列执行此操作。


与此相关的是,如果以初始状态前后带有有限数量的C个非空白字符的磁带启动具有N个状态的图灵机,则将有一些T(N,C)使得任何机器一台机器可以模拟永远终止的磁带,而该机器的磁带限制为T(N,C)个字符。
supercat

-2

实际计算机的内存有限,并且状态数量有限。因此,它们本质上是有限自动机。

图灵机是有限自动机的导数。图灵机实际上是von Nuemann架构。

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.