图片来源于网络
这就是图灵机的原理,也是计算机的核心理论。
如果各位觉得文字不过瘾,可以了解一个叫做 Brainfuck 的编程语言,它能帮你更加直观地理解图灵机。
在很多人眼里,Brainfuck 是一款传奇的计算机编程语言,当然不是指名字。
Brainfuck 创建于 1993 年,最大的特点是极简,只包含八个字符:所有的操作,都是由这八种字符组合完成。
图片来源于网络
如果你在 brainfuck 中输入下面这段代码,猜猜会出现什么?
[> [> > > > <<<<-]> > >->> [<]<-]>>.>---. .. .>>.<-.
答案是:Hello World! (别眨眼,注意看动图最后一行)
图片来源于网络
这张动图,可以直观看到图灵机的运行原理,当然,牢记这 8 个字符,你也可以完成各种计算。
十分钟学会一门编程语言,你骄傲了吗?可以骄傲,但没必要。
Brainfuck 传奇的地方在于:它什么都能干,但干什么都不方便。如果你想深入感知图灵机,愿意上手试试自然是极好的,但如果想用它干别的,劝你放弃。
别看现在的计算机很强大,能孕育出各种人工智能,貌似无所不能,事实上,如今所有的计算机都是图灵机,包括量子计算机。在过去的数十年里,计算机的每一次进化,都是硬件和算法上的升级,核心始终未曾变化:图灵机就是计算的边界。
只包含一条纸带的图灵机,叫做单带图灵机,即使对它升级,安装更多的纸带和对应的读写头,增加更多符号,把它改装成多带图灵机,大幅提升它的计算能力,却依旧改变不了事实:多带图灵机只是算的快些罢了,本质没有变化。
记住:图灵机做不了的事情,今天的计算机再强大,还是做不了。
2、可计算问题图灵机有了,但它能解决哪些问题呢?
图灵给出的答案是:如果图灵机能被做成物理实体,它就能解决任意可计算问题。
可计算问题,是用数学的视角看世界,指通过某种算法,比如数手指、加减乘除、开立方根等,能够得出确切结果的问题。要知道,很多问题,虽然有答案,却是不可能找到算法来解答的。
来个无奖问答:以下六个选项中,哪些是可计算问题?
1、123456 × 654321 等于多少?
2、太阳为什么东升西落?
3、给定一个正整数,判断它是否为质数?
4、媳妇和妈掉水里,你先救谁?
5、给定一个字符串,判断某个字符是否存在?
6、美术馆着火,保画还是保猫?
很明显,答案是:1、3、5。
毕竟,像 6 这种保画还是保猫的问题,在奇葩说中都不一定辨的清楚,对计算机来讲,更是无法找到某种解法来得出答案。
图片来源于网络
但是,凡事都有例外,比如在可计算问题中,就存在一个不可计算问题:停机问题。
在解释什么是停机问题之前,我给各位先来点前菜,开开胃。
在某个城市中,有一位理发师,此人很有意思,他在宣传海报上写了这样一段话:“本人技艺十分高超,誉满全城。我将为本城所有不给自己刮脸的人刮脸,我也只给这些人刮脸,我对各位表示热诚欢迎。”