当前课程知识点:计算思维导论 > 第四单元 > 4.2 图灵机的计算能力 > Video
大家好
这一节我们介绍
图灵机的计算能力
图灵机的计算能力如何呢
大家知道
图灵机为现代电子计算机
奠定了坚实的理论基础
那么
图灵机的计算能力
到底怎么样呢
很多介绍图灵机的书籍
都有大致这样的描述
说图灵机本身虽然简单
但计算能力很强
有点不可思议吧
是的
那么
我们如何理解
图灵机的计算能力很强呢
要从理论上来探讨或者论证
图灵机的计算能力
真的不是一件容易的事情
那么就让我们换一个角度
来理解图灵机的计算能力
大家知道
现实的计算机计算能力很强
C语言也是很多程序员喜欢的
高级程序设计语言
大量的软件
也都是用C语言开发的
比如著名的
UNIX Windows操作系统
如果我们设法证明
C语言的计算能力
图灵机也都具有
你还会怀疑图灵机的能力吗
那么怎么证明呢
哦 你不要着急
我们得换换思路
让我们先来定义一门
非常非常简单的语言
简单到什么程度呢
简单到只有三个语句
我们不妨称之为M语言
M即Middle
也就是中间语言的意思
好吧
让我们先一睹M语言的芳容吧
M语言总共只有三个语句
第一个语句叫递增语句
inc(x)
也就是increase(x)
它的含义就是让x的值加一
第二个语句叫递减语句
dec(x)
也就是decrease(x)
它的含义就是使x的值减一
第三个语句叫循环语句
while(x)
然后的话
里面有一个循环体
就是Body of the loop
然后后面还有一个语句
就是前面讲过的第二个语句
decrease(x)
这个语句是什么意思呢
就是当x不为零的时候
我们就执行括号里面这一个循环体
每执行一次循环体
x都减一
然后再判断x的值是否为零
如果x的值还不为零
那继续执行循环体
再减一
以此类推
不断地循环
一直到x的值到零为止
好
M语言
就是这么三个语句组成的
现在我们来证明
M语言的能力等价于C语言
这事儿不难
只要能用M语言等价描述
C语言中的每一个语句
即可表明C语言能做的事情
我M语言都能做
让我们先看看
C语言中的赋值语句
也就是把x的值
加上y的值赋值给y
我们完全可以用
下面的M语言程序来表示
也就是
while(x)
循环体里面的话呢
就是两个语句
一个是increase(y)
一个是decrease(x)
再看看
C语言中的条件语句
if(x) A
也就是说
当x的值不为零的时候
我们就执行语句A
这么一个句子
我们可以用M语言来表述
也就是while(x)
循环体里面的话呢
就是语句A
再加一个decrease(x)
就可以等价描述
这么一个条件语句了
再比如
C语言中把变量初始化为零
也就是把零赋值给变量x
我们可以用这么一个
while循环来表示
while(x)
循环体里面只有一个语句
decrease(x)
每循环一次
x的值都减一
一直到x为零为止
以此类推
我们没有必要
在这里列举所有的语句
C语言中任何一个语句
我们都可以以此方式
用M语言来等价模拟
因此
也就可以表明
M语言在表达能力
在功能上与C语言等价
您看 果然“人小鬼大”吧
接下来
我们再证明M语言能做的事情
图灵机都能做
由于M语言只有3个语句
只要我们构造出
3个等价的图灵机即可
实践证明
我们可以做到
具体如下
一 语句increase(x)对应的图灵机
以及它的状态转换图
如图所示
该图灵机如何构造
在这里我们不做详细的介绍
大家知道我们可以做到就行了
二 同样我们可以构造出语句
decrease(x)对应的图灵机
以及相应的状态转换图
就像这样
三 while循环语句的图灵机
以及相应的状态转移图
稍微复杂一些
没关系
能做到就行
因此 我们完全可以说
M语言能做的计算
图灵机都能胜任
而前面我们又论证了
C语言能做的事情
M语言都能做
因此
我们可以说C语言能做的事情
图灵机也都能做
事实上
现代计算机能进行的计算
图灵机都可以模拟
但是反过来则不然
从理论上来说
图灵机可以求解
一台计算机能解决的任何问题
这个结论可以在
邱奇--图灵论题中找到
需要注意的是
这只是论题
不是定理
定理可以在数学上得到证明
但论题却不能
虽然这个论题
可能永远得不到证明
但有些强有力的论断在支持它
首先
我们尚未发现
有图灵机不能模拟的算法
其次
所有在数学上
已经得到证明的计算机模型
都与图灵机模型等价
这个论断是得到证明了的
为了表彰图灵所作出的
杰出的贡献
计算机界专门设有一个
一年一度的“图灵奖”
颁发给最优秀的计算机科学家
这枚奖章就像
电影界“奥斯卡奖”一样
为计算机界的获奖者
带来至高无上的荣誉
好 这一节就讲到这
谢谢大家
-1.1 计算思维及其教育
--Video
-2.1 计算是什么
--Video
-2.2 计算与自动计算
--Video
-2.3 计算机及其计算本质特征(I)
--Video
-2.4 计算机及计算的本质特征(II)
--Video
-3.1 数的表示与模拟计算
--Video
-3.2 数的表示与数字计算
--Video
-3.3 二进制加法运算的机器化
--Video
-3.4 “九九归一”的加法运算
--Video
-3.5 二进制之优越性及问题与代价
--Video
-4.1 从数学危机到图灵机
--Video
-4.2 图灵机的计算能力
--Video
-4.3 什么问题都能计算吗?
--Video
-4.4 冯•诺依曼机及其发展与演化
--Video
-4.5 从算盘到图灵机——机械计算的本质
--Video
-4.6 电子计算机——透过现象看本质
--Video
-5.1 思维可机械计算吗(I)
--Video
-5.2 思维可机械计算吗(II)
--Video
-6.1 量子理论
--Video
-6.2 量子计算机
--Video
-7.1 人类求解问题之过程
--Video
-7.2 基于计算(机)的问题求解过程
--Video
-7.3 面向过程的结构化设计方法学
--Video
-7.4 面向对象之方法学
--Video
-7.5 面向对象技术
--Video
-7.6 抽象
--Video
-7.7 计算学科中的抽象
--Video
-7.8 时间与空间及其相互转换
--Video
-7.9 技术层面的其他方法学
--Video
-7.10 认知层面的其他方法学
--Video
-8.1 算法与程序
--Video
-8.2 算法设计方法——枚举
--Video
-8.3 算法设计方法——递推
--Video
-8.4 算法设计方法——递归
--Video
-8.5 算法设计方法——分治
--Video
-8.6 算法设计方法——仿生
--Video
-9.1 机器间的通信方式
--Video
-9.2 数据转发方法
--Video
-9.3 网络分层体系结构
--Video
-9.4 有趣的对称加密技术
--Video
-9.5 难解的非对称加密技术
--Video
-9.6 数字签名及其应用
--Video
-9.7 从自然智能到人工智能
--Video
-9.8 符号主义的基本思想
--Video
-9.9 连接主义Ⅰ
--Video
-9.10 连接主义Ⅱ
--Video
-9.11 行为主义的基本思想
--Video
-9.12 机器翻译的愿景与困难
--Video
-9.13 峰回路转的自然语言处理
--Video
-9.14 信息传输中的问题与挑战
--Video
-9.15 重复传输与冗余编码
--Video
-9.16 校验与校验和
--Video
-9.18 自纠错技术及应用
--Video
-9.19 两种简单的数据压缩方法
--Video
-9.20 哈夫曼编码
--Video
-9.21 数据压缩极限与LZ压缩方法
--Video
-9.22 大海捞针的搜索引擎
--Video
-9.23 网页排序方法(PageRank)
--Video
-10.1 计算文化
--Video
-期末考试--作业