可计算性的概念是一个非常重要和美丽的数学观念。它又是相当近代的,具有这样基本性质的事体进入数学的王国是本世纪三十年代的事。这个观念已经渗透到数学的所有领域中去(虽然这一点确实是真的,但是大多数数学家通常不去忧虑可计算性的问题)。该观念的威力有一部分来自于这一个事实,即数学中一些定义得很好的运算实际上不是可计算的(例如图灵机的停机问题;第四章还可以看到其他例子)。因为如果不存在这种不可计算的事体,则可计算性的概念便没有多少数学的兴趣。数学家毕竟喜欢困惑的东西。让他们决定某些数学运算是否为可计算的可能是非常迷人的困惑。因为那个困惑的一般解答本身是不可计算的,这一点尤其迷人!

有一件事要弄清楚。可计算性是一个真正“绝对的”数学概念。它是一种抽象的观念,它完全超越按照我们描述的“图灵机”的任何特别实现之外。正如我在以前所评论的,我们不必对表征图灵的天才而特别的手段的“磁带”和“内态”等等赋予任何特别的意义。还有表达可计算性观念的其他方法,历史上最早的是美国逻辑学家阿伦佐·撤屈在斯蒂芬·C·克利涅协助下提出的杰出的“拉姆达计算法”。撤屈的步骤和图灵的完全不同,并且更为抽象得多。事实上,在撤屈陈述他观念的形式中,在它们和任何可以称作“机械的”东西之间只有一点明显的连接。撤屈步骤背后的关键观念在其最本质上的确是抽象的,实际上撤屈把这步骤称为“抽象化”的一个数学运算。

不仅是因为撤屈方案强调可计算性是一个独立于计算机器的任何特别概念的数学观念,而且它阐明了在数学中抽象观念的威力,所以我感到值得花一点时间来简要地描述它。对数学观念不熟悉或者对这件事本身不感好奇的读者,在这一阶段可以跳到下一章去,这不会对论证的过程产生多少损失。尽管如此,这样的读者若愿意和我多忍受一阵会得到好处,并且能见证撤屈方案的某些魔术般的经济性(参见撤屈1941)。

人们在此方案中关心的是,譬如由以下表示的对象的“宇宙”

a,b,c,d,…,z,a′,b′,…,z′,a′′,b′′,…,a′′′,…,a′′′′,…

其中每一元素代表一个数学运算或函数。(带撇字母的原因简单地是,无限地提供以表示这种函数的符号。)这些函数的“自变量”,即它们所作用的东西,是同一类型的其他东西,也就是函数。此外,一个这种函数作用于另一个函数的结果(或“值”)仍是一个函数。(在撤屈的系统中的确具有美妙的概念经济性。)这样,当我们写

a=bc

时,我们是指函数b作用于函数c的结果为另一函数a。要在这个方案中表达两个或更多变量的函数的观念并没有困难。如果我们希望把f认为两个变量,譬如讲p和q的函数,我们可以简单地写

(fp)q

(这是函数fp作用于q的结果)。对于三变量函数我们考虑

((fp)q)r,

等等。

让我们引进抽象化的有力的运算。为此我们使用希腊字母λ(拉姆达),而且有它后面紧跟着的是代表一个撤屈函数的一个字母,譬如讲x,我们把它当成“哑变量”。任何发生于紧跟在这后面的方括号内的表达式中的变量x是仅仅被当作一个“口”,可以往里面代入任何跟在整个表达式后的任何东西。这样,如果我们写

λx.〔fx〕,

我们是说,当它作用到譬如讲函数a上时,就产生结果fa。那就是

(λx.〔fx〕)a=fa。

换言之,λx.〔fx〕简单地就是函数f,即

λx.〔fx〕=f。

这里只用一点思维就够了。数学的一个美妙在于,初看起来是如此卖弄学识的、琐碎的东西,也是人们非常容易完全失去要点的东西。让我们考虑从中学数学取来的一个熟悉的例子。我们取函数f为对一个角度取正弦的三角运算,这样抽象的函数“sin”被定义为

λx.〔sinx〕=sin。

(不必为何以“函数”x可当作一个角度而忧虑。我们很快就会看到数可被当成函数的某种方法;而一个角度只是一个数。)迄今为止的一切的确是相当无聊的。让我们设想,记号“sin”还没被发明,但是我们熟悉sinx的级数展开表达式

然后我们可以定义

请注意,我们甚至可以更简单地定义,譬如讲“六分之一立方”的运算,它并没有标准的“函数”记号

而且发现,例如

从撤屈的基本函数运算简单地构造的表达式对于现在的讨论更为贴切,例如

λf.〔f(fx)〕。

这是一个函数,当它作用于另一函数,譬如讲g时,产生g两次递归地作用于x上的函数,也就是

(λf.〔f(fx)〕)g=g(gx)。

我们也可以首先“抽象化走”x以得到

λf.〔λx.〔f(fx)〕〕,

此式可以缩写成

λfx〔f(fx)〕。

这是当作用于g时产生“g被递归两次”的函数。事实上,这正是撤屈将其和自然数2相等同的函数。

2=λfx.〔f(fx)〕,

这样,(2g)y=g(gy)。他类似地定义:

3=λfx.〔f(f(fx))〕,4

=λfx〔f(f(f(fx))〕,等等,

以及

1=λfx.〔fx〕,0=λfx,〔x〕。

撤屈的“2”真的更像“两次”,它的“3”是“三次”等等。这样3在一个函数f上的作用,也就是3f是“把f递归三次”的运算。因此,3f在y上的作用是(3f)y=f(f(f(y)))。

让我们看看,一个非常简单的算术运算,也就是如何把1加到一个数上的运算在撤屈方案中表达出来。定义

S=λabc.〔b((ab)c)〕。

为了阐明S的确简单地把1加到用撤屈记号表示的一个数上,让我们做这样的检验:

S3=λabc.〔b((ab)c)〕3=λbc.〔b((3b)c)〕=λbc.〔b(b(b(bc)))〕=4,

这是由于(3b)c=b(b(bc))。很清楚,这可同样好地适用于任何其他自然数。(事实上λabc.〔(ab)(bc)〕可以和S一样好地做到。)

把一个数乘二又如何呢?这种加倍可由

D=λabc.〔(ab)((ab)c)〕

获得,它可再次由作用于3上而得到验证:

D=λabc.〔(ab)((ab)c)〕3=λabc.〔(3b)((3b)c)〕

=λabc.〔(3b)(b(b(bc)))〕=λabc.〔b(b(b(b(b(bc)))))〕=6。

事实上,加法、乘法和升幂的基本算术运算可分别定义为

A=λfgxy.〔((fx)(gx))y〕,

M=λfgx.〔f(gx)〕,

P=λfg.〔fg〕。

读者也许介意使自己或他人信服,我们的确有如下结果:

(Am)n=m+n,(Mm)n=M×n,(Pm)n=nm

这儿m是n是撤屈的两个自然数的函数,m+n是它们和的相应函数,等等。最后那个公式是最令人惊异的。让我们仅仅检验其m=2,n=3的情形:

(p2)3=((λfg.〔fg〕)2)3=(λg.〔2g〕)3

=(λg.〔λfx.〔f(fx)〕g〕)3

=λgx.〔g(gx)〕3=λx.〔3(3x)〕

=λx.〔λfy.〔f(f(fy))〕(3x)〕

=λxy.〔(3x)((3x)((3x)y))〕

=λxy.〔(3x)((3x)(x(x(xy)))))〕

=λxy.〔(3x)(x(x(x(x(xy)))))〕

=λxy.〔x(x(x(x(x(x(x(x(xy))))))))〕

=9=32

减法和除法不是这么容易定义的(我们的确需要某种当m比n小时“m-n”以及当m不能被n整除时“m÷n”的惯例。事实上,二十世纪三十年代早期克利涅发现如何在撤屈的方案中表达减法运算被认为是这一学科的重要里程碑!后来接着又有其他的运算。最后,撤屈和图灵在1937年独立地指出,不管什么样的可计算的(或算法的)运算(现在在图灵机的意义上)都可以按照撤屈的一种表达式获得(而且反之亦然)。

这是一个真正惊人的事实,它被用来强调可计算性思想的基本客观性以及数学特征。初看起来,撤屈的可计算性概念和计算机器没有什么关系。然而,它和实际计算具有某些基本关系。尤其是,有力而灵活的电脑LISP语言以一种根本的方式参与到撤屈计算法的基本结构中来。

正如我早先指出的,还有其他定义可计算性概念的方法。波斯特的计算机器的概念和图灵的非常接近,并且几乎是同时独立提出的。近世还有更有用的可计算性(递归性)的定义,这是J·赫伯拉德和哥德尔提出的。H·B·邱雷在1929年,以及M·轩芬克勒在1924年稍早些时候提出了不同的方法,撤屈计算法就是部分地由此发展而来(参见甘迪1988)。现在研究可计算性的手段(诸如在(卡特兰1980)中描述的一台无限记录机器)在细节上和图灵原先的相差甚多,而且它们更实用得多。然而,不管采用那种不同的手段,可计算性的概念仍然相同。

正如许多其他的数学观念,尤其是更美丽的、更基本的那些,可计算性的观念似乎自身具有某种柏拉图的实在性。在下面两章,我们应该探讨的正是数学概念的柏拉图实在性的这个神秘问题。

Alonzo Church的λ演算(摘自彭罗斯《皇帝新脑》)相关推荐

  1. 诺奖罗杰.彭罗斯的量子意识及其他(含朱清时-科学与佛学 77分钟视频)

    2020年10月6日,瑞典皇家科学院宣布,将2020年诺贝尔物理学奖一半授予罗杰·彭罗斯,"因为发现黑洞的形成是对广义相对论的有力预测".另外一半授予莱因哈德·根泽尔和安德里亚·格 ...

  2. 意识的本质真是量子计算?诺奖得主彭罗斯这个观点有了新证据,实验发现特殊脑电信号...

    萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 我们的大脑究竟是不是一台"量子计算机"? 此前,诺奖得主罗杰·彭罗斯就提出过大胆猜想,认为大脑产生意识的原理与量子计算有关,但 ...

  3. 靠数学“拿了”两次诺贝尔奖,彭罗斯从“铺地砖”帮忙发现2011年化学奖的秘密...

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 诺贝尔奖没有数学奖,但是如果数学足够好的话,可以拿两次诺贝尔奖: 帮别人拿一次,自己再拿一次. 刚刚获得诺贝尔奖的英国数学家罗杰·彭罗斯( ...

  4. 挑战唯物论?诺奖得主彭罗斯:意识产生可能是大脑内的「量子叠加」的结果...

    来源:新智元 量子物理学取得了巨大成功,但其解释仍然不确定.大脑由神经元组成,而神经元又由分子组成,很可能会受到量子效应的影响.量子力学和神经科学能否融合成「量子意识」理论? 「我们是谁」? 恐怕没有 ...

  5. 2.9 穆尔彭罗斯伪逆

    声明:该文章翻译自MIT出版的<DEEP LEARNING>,博主会定期更新文章内容.由于博主能力有限,中间有过错之处希望大家给予批评指正,一起学习交流. 只有方阵定义了矩阵求逆.假设我们 ...

  6. 89岁诺奖得主罗杰·彭罗斯,有一个令人咂舌的家族

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 雷刚 发自 凹非寺  量子位&凤凰网科技 联合出品 什么叫"牛X的人 ...

  7. 彭罗斯阶梯(Penrose stairs

    彭罗斯阶梯(Penrose stairs)是一个有名的几何学悖论,指的是一个始终向上或向下但却走不到头的阶梯,可以被视为彭罗斯三角形的一个变体,在此阶梯上永远无法找到最高的一点或者最低的一点.彭罗斯阶 ...

  8. 如何用纯 CSS 绘制一个世界上不存在的彭罗斯三角形

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/RyvgMZ 可交互视频教 ...

  9. AI设计彭罗斯悖论三角教程

    今天分享一个彭罗斯悖论三角,先来解释下意思, 彭罗斯阶梯(Penrose stairs)是一个有名的几何学悖论,指的是一个始终向上或向下但却无限循环的阶梯,可以被视为彭罗斯三角形的一个变体,在此阶梯上 ...

  10. 28.纯 CSS 绘制一个世界上不存在的彭罗斯三角形

    28.纯 CSS 绘制一个世界上不存在的彭罗斯三角形 原文地址:https://segmentfault.com/a/1190000014946883 感想:三个平面图形旋转 HTML代码: < ...

最新文章

  1. Vue父组件调用子组件的方法并传参的两种方式(用$refs.refName.functionName、window.function)
  2. python详细安装教程视频-如何安装Python运行环境Anaconda?(视频教程)
  3. 城市地图, 军事地图, 矿山地图, 电力地理, 电子地图, 制图, 编辑, OCX控件, VC++源代码组件库...
  4. HTML5 Canvas中创建图像数据
  5. 关于在asp.net中的调试
  6. html网页的配色,css页面网页配色
  7. 移除Kubeadm部署的kubernetes环境
  8. jsp+ssh+mysql Java web学生考勤管理系统源码附视频指导运行教程
  9. 深入学习OpenCV检测及分割图像的目标区域
  10. 海洋cms播放器html,海洋cms怎么添加播放器
  11. 01.初识redis
  12. 选第二大算法(锦标赛算法)
  13. 微信公众号最佳实践 ( 4.7)获取用户地理位置
  14. 离散数学(一):命题及命题联结词
  15. 802.11无线网络权威——(三、MAC基础)
  16. Windows下我个人感觉比较好的一些软件
  17. 「数字电子技术基础」2.数制和码制
  18. root操作不了怎么办,root用不了
  19. 2020美容师(初级)考试及美容师(初级)证考试
  20. 递归 Ackerman函数

热门文章

  1. 步进与伺服电机区别与选型
  2. 生物信息学主要研究方向
  3. 随书光盘资源下载/提取码(二)
  4. 管鲍计算机教室管理系统,管鲍多媒体电子教室
  5. SQLite Developer破解 cmd 运行 reg delete HKEY_CURRENT_USER\SharpPlus\SqliteDev /v StartDate /f
  6. 线性代数(第六版) 同济大学数学系 编 高等教育出版社 课后习题答案
  7. windows操作系统原理_操作系统 — 深入理解内存的原理
  8. B站韩顺平java学习笔记(二十)-- 网络编程 章节
  9. 第5章 NoSQL数据库
  10. 将时间戳转为中国标准时间