computer这个词最早指的是一个人,并且很有可能是一个女人。在上个世纪二三十年代,名为computer的人的主要工作是进行大量繁杂而又无趣的科学计算。当时有一个数学家,致力于发明一种可以用于计算的机器,希望从本质上解决这些计算问题。这个人就是图灵,而这个被他发明出来用于计算的机器就被称之为图灵机。

在这个系列博客中,我想要详细介绍以下的三种机器:有限自动机、下推自动机以及图灵机,它们的计算能力依次增强。本系列博客大量参考计算的本质这本书中的第二部分,并且把书中Ruby代码都重新用Python实现了出来(毕竟会Python的人更多一点)。强烈建议读者在读完本博客之后去看原书,书中除了以上机器的介绍,还探讨了lambda以及停机问题等等,对于理解计算机大有裨益。

  1. 计算机的计算 - 有限自动机(包括确定性有限自动机和非确定性有限自动机)
  2. 计算机的计算 - 下推自动机(包括确定性下推自动机和非确定性下推自动机)
  3. 计算机的计算 - 图灵机(以及通用图灵机)

虽然我们把图灵机放在最后才讲,但是事实上图灵机是早于其他的自动机发明的。图灵机是图灵在20世纪30年代发明的,后来在20世纪40和50年代,许多研究者在图灵机的基础上,研究出了一些比图灵机简单的机器,这才是我们所称的有限自动机。

参考:

  1. 自动机理论、语言和计算导论(原书第3版)
  2. 图灵的秘密 他的生平、思想及论文解读
  3. 计算的本质:深入剖析程序和计算机