实际计算机的内存有限,并且状态数量有限。因此,它们本质上是有限自动机。为什么理论计算机科学家会使用图灵机(和其他等效模型)来研究计算机?关于真实计算机研究这些更强大的模型有什么意义?为什么有限自动机模型不够用?
实际计算机的内存有限,并且状态数量有限。因此,它们本质上是有限自动机。为什么理论计算机科学家会使用图灵机(和其他等效模型)来研究计算机?关于真实计算机研究这些更强大的模型有什么意义?为什么有限自动机模型不够用?
Answers:
考虑此问题时,有两种方法:历史与概念的发现方式有关,技术与技术解释了为什么某些概念被采用而另一些概念被放弃甚至被遗忘。
从历史上看,图灵机可能是尝试回答Entscheidungs问题的几种开发中最直观的模型。这与20世纪前几十年为完全公理化数学所做的巨大努力密切相关。希望是,一旦您证明一小套公理是正确的(这需要大量的努力),您就可以使用系统的方法为您感兴趣的逻辑语句得出证明。即使有人认为有限自动机在这种情况下,由于它们甚至无法计算简单的函数,因此将很快被撤消。
从技术上讲,所有计算机都是有限自动机的说法是错误的。有限自动机具有恒定的内存,无法根据输入的大小对其进行更改。在数学或现实上都没有限制,一旦使用了机器中的内存,就不会再提供额外的磁带,硬盘,RAM或其他形式的内存。我相信这通常是在计算的早期使用的,即使是简单的计算也可以填满内存,而现在对于大多数问题以及现代基础架构,它可以实现更高效的内存管理,在大多数情况下,这不是问题。
编辑:我考虑了评论中提出的两点,但选择不包括它们的简洁性和我可以写下答案的时间。这就是我认为为什么这些观点不会削弱Turing机器模拟现代计算机的有效性的原因,特别是与有限自动机相比时:
首先让我解决一下宇宙限制记忆的物理问题。首先,我们真的不知道宇宙是否有限。此外,根据定义,可观察的宇宙的概念是有限的,根据定义,它也与可以前往可观察的宇宙的任何点以使用存储器的用户无关。原因是可观察的宇宙是指我们可以从特定点(即地球)观察到的东西,如果观察者可以前往宇宙中的其他位置,则情况会有所不同。因此,有关可观测宇宙的任何论点都将演变为宇宙有限性的问题。但让我们假设,通过一些突破,我们获得了宇宙确实有限的知识。尽管这会对科学问题产生重大影响,我怀疑这会对计算机的使用产生任何影响。简而言之,可能是计算机原则上确实是有限自动机,而不是图灵机。但是,对于绝大多数的计算以及人类可能对每个计算都感兴趣的各种可能性而言,图灵机和相关的理论为我们提供了更好的理解。在一个粗略的例子中,尽管我们知道牛顿物理学本质上是错误的,但我怀疑机械工程师主要使用量子物理学来设计汽车或工厂机械。可以在个别级别处理需要这样做的特殊情况。但是对于绝大多数的计算以及人类可能对每个计算都非常感兴趣的图灵机和相关的理论,我们可以更好地理解。在一个粗略的例子中,尽管我们知道牛顿物理学本质上是错误的,但我怀疑机械工程师主要使用量子物理学来设计汽车或工厂机械。可以在个别级别处理需要这样做的特殊情况。但是,对于绝大多数的计算以及人类可能对每个计算都感兴趣的各种可能性而言,图灵机和相关的理论为我们提供了更好的理解。在一个粗略的例子中,尽管我们知道牛顿物理学本质上是错误的,但我怀疑机械工程师主要使用量子物理学来设计汽车或工厂机械。可以在个别级别处理需要这样做的特殊情况。
不同的地址。从本质上讲,联网是实现此目的的一种好方法,每台计算机仅关心其本地内存,但它们可以一起计算。
要完成其他答案:我认为Turing Machine比有限自动机更好地抽象了计算机的功能。确实,这两个模型之间的主要区别在于,对于有限自动机,我们期望处理大于状态空间的数据,而图灵机则通过使状态成为另一种模型(状态空间>>数据)空间无限。这种无穷大可以看作是“在数据大小之前非常大”的抽象。在编写计算机程序时,您试图节省空间以提高效率,但通常假定您不会受到计算机上总空间的限制。这就是图灵机比有限自动机更好地抽象计算机的部分原因。
安德烈·鲍尔(Andrej Bauer)在评论中给出了一个重要原因:
让我以一些观点来完成其他答案,这些观点可能太明显了,无法提及:
基于人们希望使用形式主义进行建模和理解的方式,形式主义是否有用。
图灵机是一种形式主义,对于理解程序很有用。程序值得理解;大多数实际计算是通过程序而不是专用机器执行的。图灵机形式主义使我们能够对现实世界中的重要问题进行建模,例如时间和空间复杂性。尝试使用有限状态自动机研究这些概念的可能性要低得多。
图灵机在尝试研究计算有限函数的复杂性时不是很有用(例如,其域由长度最多为一千万的输入组成的函数)。电路复杂度在描述有限函数的复杂度方面要好得多……但是图灵机反过来对理解电路复杂度非常有用。
有限自动机在理解电路复杂性方面也很有用。所有这些模型在数学武器库中都有其地位。
我拒绝说有限状态自动机是一种更好的现实模型的论点,纯粹是因为现实世界中的计算机只有有限数量的内部状态。有限状态自动机的研究至关重要地处理了来自无限字符串集合的输入,而现实世界中的计算机仅处理了一些固定最大长度的输入(除非您相信我们生活在一个无限的宇宙中,无论是在空间方面)或时间)。
应该根据模型在理解我们关心的现实方面时的效用来判断模型。或者(替代地)就其在理解人们发现足以令人信服的数学宇宙中的用途而言,即使该数学宇宙没有明显的物理表现。
图灵机,有限状态机和电路(以及其他模型)均已证明其实用性。
实际计算机不是FSA。实际的计算机是通用计算机,从某种意义上说,我们可以描述计算机以供计算机模拟,然后计算机将对其进行模拟。对于许多示例,搜索“虚拟机”。
可以构建通用图灵机-一个TM,它接收另一个TM的描述,然后在提供的输入上模拟该TM的操作。
作为文献的起点,我可以推荐“ 论普遍有限或下推自动机的存在”,它研究了普遍自动机的不存在。您可能还会查看其引用(依此类推)。
为什么有限自动机模型不够用?
尽管其他答案已经提到了许多相关方面,但我认为图灵机相对于有限自动机的强项是数据和程序的分离。这使您可以分析一个非常有限的程序,并声明该程序如何处理不同的输入,而不会限制输入的大小。
从理论上讲,既可以描述一台实际的计算机,也可以描述诸如图灵机(带有有限磁带作为状态机)之类的东西,但这实际上是不可行的:状态数在计算机所拥有的全部内存中是指数的,而一般的有限状态自动机形式主义要求您明确列出这些状态之间的过渡。因此,对于具有这种大小的一般有限状态自动机,基于所有状态转换的完整枚举进行任何推导是完全不可行的。
当然,在真实的计算机中,状态转换不能任意发生。在计算的单个步骤中,没有命令交换内存中的三分之一位。因此,您可以尝试为状态转换提出更紧凑的规范。类似于您的体系结构的指令集规范。当然,为了提高性能,实际的计算机体系结构很复杂,因此您可以进一步简化为一些非常简单的指令集,该指令集仅使用非常有限的输入和输出执行非常小的步骤。最后,您可能会发现您的体系结构类似于图灵机解释器:使用一些程序代码和一点输入,生成一点输出,然后在您的程序代码中移动。
一种替代方法是使用有限状态自动机的状态来表示程序正在处理的数据,同时将程序本身编码为状态转换。那将带来同样的问题,即如何枚举所有状态,并且紧凑的表示可能再次接近图灵机所做的事情。
关于真实计算机研究这些更强大的模型有什么意义?
总的来说,我想说一台有限磁带的图灵机可能是实际计算机的更好模型。但是对于许多科学问题,有限但又大又与无限的磁带之间的区别是无关紧要的,因此仅主张无限的磁带就使事情变得容易。对于其他问题,所用磁带的数量是问题的核心,但是该模型使您可以轻松地谈论磁带使用量,而无需麻烦地指定如果计算用完磁带会发生什么情况。
有限自动机不共享的图灵机的一个重要特点是它们可以根据问题的规模扩展解决问题所需的存储量。
重点是:许多问题都有自然的解决方案,使用的内存越大,问题越大。因此,用可以使用无限内存的表示形式描述这些解决方案是很自然的-不是因为任何一个实例都将使用无限数量,而是因为有一个实例使用每个内存。您可以使用图灵机执行此操作,也可以使用有限自动机序列执行此操作。
实际计算机的内存有限,并且状态数量有限。因此,它们本质上是有限自动机。
图灵机是有限自动机的导数。图灵机实际上是von Nuemann架构。