图灵机杂思(rev#2)

 

图灵机杂思 (rev#2)
 
By 刘未鹏
C++ 的罗浮宫 (http://blog.csdn.net/pongba)
 
C++ Template是图灵完备的 turing-complete ,或者更确切的说,是图灵等价( turing-equivalent )),关于这一点是没什么悬念的,只是前几天有位朋友问到为什么说 C++ Template 是图灵完备的,为了找出当初的连接,于是又去搜了一下 wikipedia standford encyclopaedia ,谁之这一搜之下又带出了一大堆内容,于是又花了好几个时辰将图灵机的相关理论复习了一遍,顺便以四十五度角仰视了一下 Alan Turing 的生平,神奇的是在追寻链接和搜索的过程中居然翻到了一篇关于 constructive mathematics 以及一篇关于 Intuitionistic Logic 的东东,那是后话,暂且不提。先来说说 C++ Template 和图灵机。
 
图灵机是图灵为了研究可计算问题而构思的一个理论装置,你只要想一想有限状态机就可以大概知道图灵机是个什么概念了,只不过图灵机的内存(纸带)是潜无穷的(也就是可以任意长啦, 潜无穷 是古稀蜡人的说辞)。图灵机的定义形象的说来就像老式的电传机:一个读写头,一根纸带(可能任意长),读写头不断读取纸带上的符号,并根据内在的状态转换规则转换当前状态,同时进行一些动作,譬如插除或改写当前字符,向前 / 向后移动读写头或保持不动等。至于其抽象的定义大抵就是 有限状态机 的定义了。
 
图灵机的这一定义现在我们看起来似乎是很显然的,然而当时却代表着一种思想上的革命,一种从无到有。图灵机实质上抽象出了我们平素进行机械式计算的核心规律,所以才等价于 一个人 + 纸笔 + 一定的规则 进行的机械运算。
 
这么个理论机器首先就指明了创建计算机的可能性,然而这还不够,如果为了某一个问题就去创建一个特定的图灵机的话效率就太低了。图灵机理论的一个最美妙的结论就是存在 元图灵机 Universal Turing-Machine ,直译应为一般图灵机 / 通用图灵机,然而 元图灵机 更精确地表达了其意思),所谓元图灵机其实就是把图灵机作为运算对象的图灵机,假设有一个元图灵机 M ,一个图灵机 P 以及 P 的输入数据 D ,那么将 (P, D) 喂给元图灵机 M M 就能够吐出 P(D) (即 P D 上的结果)。而这便是现在我们所用的计算机的始祖模型,其中 M 就好比我们的计算机(元图灵机), P 则是程序(编码后的图灵机), D 则是程序 P 的输入数据。元图灵机的存在表明了我们可以用一台机器来解决所有图灵可计算( turing-computable )的问题 —— 只要喂给它解决这个特定问题的图灵机编码(程序)以及问题的输入数据即可,该元图灵机就会模拟我们喂给它的那个图灵机 P 的行为,最终给出结果。元图灵机的存在性为计算机的诞生点燃了一盏明灯,这是图灵机理论中最漂亮的发现。
 
关于图灵机还有两个有名的 Halting Problem Busy Beaver Problem ,不过前者更有名,但没有后者有意思,所以具体就不说了,可以 google 。这两个问题说明了图灵机并不是 万能 的,它只能解决可以 机械地
  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 42
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值