1.图灵机与计算问题(1节课)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

….. 状态:灰色的圆点表示饥饿,红色表示吃饱
输入 黑 黑 白 白 当前状态 饥饿 吃饱 饥饿 吃饱 输出 涂白 后移 涂黑 前移 下一个状态 吃饱 饥饿 饥饿 吃饱
….. 状态:灰色的圆点表示饥饿,红色表示吃饱
输入 黑 黑 白 白 当前状态 饥饿 吃饱 饥饿 吃饱 输出 涂白 后移 涂黑 前移 下一个状态 吃饱 饥饿 饥饿 吃饱
答案是:不存在!!
• 但在当时,人们还不知道“算法”是什 么。实际上,当时数学领域中已经有很 多问题都是跟“算法”密切相关的,因 而,需要对“算法”进行科学的定义。 • 到了30年代的时候,终于有两个人分别 提出了精确定义算法的方法,一个人是 图灵,一个人是丘奇。而其中图灵提出 来的图灵机模型直观形象,于是很快得 到了大家的普遍接受。
• • • •
高级语言程设(各类语言) 编译原理 数据结构 算法(计算复杂性)
4、图灵机的计算极限 与计算复杂性
计算极限—可计算性理论
• 计算机什么都能干? • 可以构造出计算机解不出的问题
图灵机的停机问题
• 停机问题:存不存在一个程序比如说P,能够判断出任 意一个程序在给定输入下是否会陷入死循环? • 设P(X,Y)表示P判断程序X在数据输入是Y的情况下是 否陷入死循环的结果
• 1900年,著名的大数学家希尔伯特在第 2届数学家大会上提出了著名的23个数 学问题。
• 第十个问题(费马大定理的简化版)
– 存在不存在一种有限的、机械的步骤 能够判断“丢番图方程”是否存在整 数解?
a1x1b1+a2x2b2+…+anxnbn=c, ai, bi,c都是整数
丢番图(Diophantine)方程
• 图灵机为计算进行了建模 • 布尔代数为计算机实现奠定了数学基础 • 电子管、晶体管为用电路方式实现二进 制和二进制运算奠定了工程基础
计算机专业的课程体系
• • • • • 图形可视化 嵌入式系统 人工智能 计算机网络 软件工程
• • • • • • • • •
操作系统 汇编语言 计算机体系结构 微机原理与接口 计算机组成原理 数字逻辑 模拟电子技术 电路基础 电磁学
• 它先读到黑色,然后根据程序前移一个方格 • 由于目前仍为一个黑色信息,这个时候它会根据程序 再次前移一个方格, • 仍然是黑色,再前移, • 这个时候就读到白色方格了,根据程序它应该后退一 个格,这个时候输入就是黑色了, • 前移,白色,后移……,可以预见小虫会无限的循环 下去。
改进程序NaiveBug
2、图灵的贡献
• 研究的课题是什么样的运算可以用机器来实现 • 1936年,图灵机为算法建立了模型,从而揭示了 计算的本质
• “论可计算数及其在判定问题中的应用”(On Computable Numbers With an Application to the Entscheidungs Problem)
小虫会怎样行动呢?
输入 黑 黑 白 白 当前状态 饥饿 吃饱 饥饿 吃饱 输出 涂白 后移 涂黑 前移 下一个状态 吃饱 饥饿 饥饿 吃饱
….. 状态:灰色的圆点表示饥饿,红色表示吃饱
输入 黑 黑 白 白 当前状态 饥饿 吃饱 饥饿 吃饱 输出 涂白 后移 涂黑 前移 下一个状态 吃饱 饥饿 饥饿 吃饱
有限状态机(FSM)
当前状态 B A C … 输入信息 1 0 0 .. 输出动作 前移 往纸带上写1 后移 … 下一状态 C B A …
四大要素: 输入、输出、内部状态、程序
如何理解图灵机?
• 1.小虫的比喻 • 2.如何理解图灵机模型
1、小虫的比喻
• 怎样为小虫的信息处理过程建立图灵机模型 • 建模
– 小虫所处的世界是一个无限长的纸带,这个纸带上 被分成了若干小的方格,而每个方格都仅仅只有黑 和白两种颜色。
– 小虫仅能够感受到它所处的方格的颜色---输 入信息。 – 小虫的输出动作就是往纸带上前爬一个方格 或者后退一个方格。
输入 黑色 白色 输出
• 程序: NaiveBug
前移 后移
小虫读到这个片断会怎样行动呢?
Leabharlann Baidu
• 1950年,“机器能思考吗”的论文,成为划时 代之作。“人工智能之父” • 1954年6月8日,被发现死于家中的床上,床头 还放着一个被咬了一口的苹果。 • 1966年,ACM设立 图灵奖
图灵机的意义
• 图灵本意是想解决停机问题,但必须要定义好什么是“计算”才 能解决这个问题,“捎带”提出了图灵机模型。 • 丢番图判定问题也得到了解决 • 图灵机的产生奠定了现代数字计算机的基础(后来冯诺依曼就是 根据图灵的设想才设计出第一台计算机的)。 • 根据图灵机的概念,我们还可以看到可计算的极限是什么。也就 是说实际上计算机的本领从原则上讲是有限制的(计算机也仍然 存在着极限,这就是图灵机的停机问题)。
– 如果存在死循环(不停机),那么P(X,Y)就输出一个yes – 如果不存在死循环(停机),那么P(X,Y)就输出一个no
• 所谓的某个程序X在输入Y上停机就是说X不存在着死 循环,反过来如果不停机就是存在着死循环(或算不 出来)。那么,这种判断停机问题的程序P存在么?
不存在,证明如下:
• 反证法:
• 无论Q(Q)会不会发生死循环,都会产生矛盾。也就是说我们最开 始的假设P(X,Y)能够判断任意程序X在输入Y的时候是否死循环是 错误的!也就是说这样的程序P(X,Y)不存在! 或者说:
停机问题是不可计算的!!
举例说明
• 类似的问题还有:
– 是否存在一个程序能够检查所有的计算机程序有无 Bug? – 答案仍然是不存在的,其实这个问题可以被证明和 图灵停机问题实质上是一样的! – 有限的、机械的丢番图问题可以等价于停机问题 – 因此在图灵机计算模型下是不可计算的
– 从读写头在纸带上读出一个方格的信息 – 根据它当前的内部状态开始对程序进行查表,得出一个 输出动作(是否往纸带上写信息,还是移动读写头到下 一个方格)。 – 程序也会告诉它下一时刻内部状态转移到哪一个。
• 实质: 根据每一时刻读写头读到的信息和当前的内部状态 就可以确定它下一时刻的内部状态和输出动作了。
程序GoodBug
• 输入 • 黑 • 白 输出 前移 涂黑
…..
输入 黑 白
输出 前移 涂黑
改进程序BetterBug
• 固定的输入得到固定的输出,现实世界中的小 虫肯定不会这样固定。 • 如何改造?
– 加入小虫的内部状态。 – 假设黑色方格表示是食物,虫子可以吃掉它,而当 吃到一个食物后,小虫子就会感觉到饱了。当读入 的信息是白色方格的时候,虽然没有食物但它仍然 吃饱了,只有当再次读入黑色时候它才会感觉到自 己饥饿了。因而,我们说小虫具有两个内部状态, 并把它内部状态的集合记为:S={饥饿,吃饱}。 – 这样小虫行为的时候就会不仅根据它的输入信息, 而且也会根据它当前的内部状态来决定它的输出动 作,并且还要更改它的内部状态
人也可以看作一个特殊的图灵机 其状态数量非常大,状态表示是神经元的连接强度吗? 其程序方式是什么?
图灵机的组合
• 组合:如果往地上放了一个跷跷板,小球掉到地上会 弹起这个跷跷板的另一端,而跷跷板的另一边可能还 是一个小球,于是这个弹起的小球又会砸向另一个跷 跷板……。 • 把多个计算系统合并成更大的计算系统。 • 通过组合若干图灵机完成更大更多的计算,如果把一 个图灵机对纸带信息变换的结果又输入给另一台图灵 机,然后再输入给别的图灵机……,这就是把计算进 行了组合! • 我们并不需要写出无限复杂的程序列表,而仅仅将这 些图灵机组合到一起就可以产生复杂的行为了。 • 有了图灵机的组合,我们就能够从最简单的图灵机开 始构造复杂的图灵机。
假设程序P存在。 我们可以根据P设计一个程序Q,如下: Program Q(X){ //X是任何一段程序的编码 m=P(X,X) ; if m=yes then return //P(X,X)不停机,则Q停机 else //P(X,X)停机,则Q不停机 do while (1) …… end do }
证明过程
• 调用Q(Q)会发生什么情况? • 假设Q(Q)会发生死循环
– 由于P可以正确判断Q程序在Q输入下的死循环情况,则P(Q,Q)=yes – 然而,根据Q函数的定义,Q(Q)会马上结束,也就是Q(Q)==no – 与假设矛盾
• 假设Q(Q)不发生死循环
– 由于P可以正确判断Q程序在Q输入下的死循环情况,则P(Q,Q)=no • 然而,根据Q函数的定义,Q(Q)不会结束,也就是Q(Q)==yes • 与假设矛盾
• 现实世界中的小虫肯定不会这样傻的在那里无 限循环下去。 • 说明所建立的模型不能准确的描述事实。 • 如何改造?
– 首先,我们知道小虫除了可以机械地在世界上移动 以外,还会对世界本身造成影响,因而改变这个世 界。比如虫子看到旁边有食物,它就会把那个东西 吃掉了。在我们这个模型中,也就相当于我们必须 假设小虫可以改写纸带上的信息。 – 小虫可能的输出动作集合就变成了:O={前移,后 移,涂黑}。
….. 状态:灰色的圆点表示饥饿,红色表示吃饱
输入 黑 黑 白 白 当前状态 饥饿 吃饱 饥饿 吃饱 输出 涂白 后移 涂黑 前移 下一个状态 吃饱 饥饿 饥饿 吃饱
小虫模型就是一个图灵机
• 小虫的行为比以前的程序复杂了一些。 • 如果小虫的内部状态数再增多,那么它的行为会更加 的不可预测! • 输入、状态、输出、程序是图灵机的四大要素
• 对于丢番图方程,数学家们最感兴趣 的是它是否有整数解(或自然数解)。
– 对于简单的方程这是很容易找到答案的
• 比如x2+y2=z2有整数解(勾三股四弦五); 2x-2y=1则没有整数解(因为方程的左边 为偶数,右边却为奇数)
• 问题的实质
– 有限的、机械的证明步骤 算法 – 注意:不是一般的证明步骤
3、图灵机
一个图灵机是形如下面的一个装置 :
图灵机的组成
• 装置组成:
– 一个无限长的纸带(符号集合) – 一个读写头(读、改写、左移、右移) – 内部状态(有限状态机) – 还有一个程序对这个盒子进行控制。这个装 置就是根据程序的命令以及它的内部状态进 行磁带的读写、移动。
图灵机的工作过程
• 工作过程:
最简单的图灵机是什么呢?
• 最简单的信息就是0和1,最简单的计算就是对0或1进 行布尔运算(与、或、非)。从最简单的逻辑运算操 作最简单的二进制信息出发我们其实可以构造任意的 图灵机! • 把输入、输出信息进行01的编码,而任何一个变换也 可以终分解为对01编码的变换,而对01编码的所有计 算都可分解成前面说的三种运算。 • 为什么研究计算机的人都要去研究基本的布尔电路。 奥秘就在于,用布尔电路可以组合出任意的图灵机!
….. 状态:灰色的圆点表示饥饿,红色表示吃饱
输入 黑 黑 白 白 当前状态 饥饿 吃饱 饥饿 吃饱 输出 涂白 后移 涂黑 前移 下一个状态 吃饱 饥饿 饥饿 吃饱
….. 状态:灰色的圆点表示饥饿,红色表示吃饱
输入 黑 黑 白 白 当前状态 饥饿 吃饱 饥饿 吃饱 输出 涂白 后移 涂黑 前移 下一个状态 吃饱 饥饿 饥饿 吃饱
• 在这个模型下,才有了计算理论,诱发了冯·诺依 曼计算机的发明 • 人工智能的衡量标准“图灵测试” • 人们称图灵为:计算机理论之父
• 阿兰·图灵(1912-1954) • 8岁时,他写了他的第一篇“科学”短文,题目叫《说 说显微镜》,头尾都是“你首先要知道,光线是直的” • 二战 ,布雷契莱庄园,COLOSSUS
图灵机的今生来世
目录
• • • • 1、问题的起源 2、图灵的贡献 3、图灵机 4、图灵机的计算极限与计算复杂性
目录
• • • • 1、问题的起源 2、图灵的贡献 3、图灵机 4、图灵机的计算极限与计算复杂性
1、问题起源:费马大定理
• 17世纪,费马在阅读丢番图(Diophatus)《算术》拉 丁文译本时,曾在第11卷第8命题旁写道:“将一个立 方数分成两个立方数之和,或一个四次幂分成两个四 次幂之和,或者一般地将一个高于二次的幂分成两个 同次幂之和,这是不可能的。关于此,我确信已发现 了一种美妙的证法 ,可惜这里空白的地方太小,写不 下。” • 当整数n >2时,关于x, y, z的方程 xn + yn = zn 没有正整 数解 • 1995年被英国数学家安德鲁·怀尔斯证明
相关文档
最新文档