算法与图灵机模型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 目标
– 利用二进制来设计一个专门计算“x+1”的图灵机,要求计算完成 时,读写头要回归原位 – x由0、1串组成,“*”为x的分隔符、界定符
• 状态集合K
{start,add,carry,noncarry,overflow,return,halt}
• 字母表∑
{0,1,*}
• 初始状态s
start;
01:00
2.3通用图灵机
• 图灵机本质在进行字符串的处理
图灵机输入是一个字符串 图灵机输出也是一个字符串
• 如果将图灵机的有限内部状态与读写头的有限 动作用字符串表示 • 那么每条转换规则也可以用一个字符串表示 (当前状态,当前符号,动作,新状态) • 图灵机可以由一个较长字符串完全表示通用图
灵机
• 图灵机是一个五元组(K,∑,δ,s,H), 其中: • K 是有穷个状态的集合; • ∑ 是字母表,即符号的集合; • s ∈K是初始状态; • H∈K 是停机状态的集合,当控制器内部状 态为停机状态时图灵机结束计算; • δ是转移函数,即控制器的规则集合

01:00
图灵机工作过程:计算“x+1”的图灵机
01:00
通用机的实现方案
• 对于图灵机Tn来说,对于一个输入m,Tn经过一系列的步 骤后最终达到停止,则会在机器的左边产生一个二进位串 的计算结果,假设为p 可以写成:Tn(m)=p • 对于图灵机U而言:我们把Tn的指令编码成了n的二进位串 作为输入的一部分,故可看成是U作用于n和m才生结果p • 故可写成:U(n,m)=Tn(m)=p
01:00
辗转相除法求最大 公约数算法:
• • • •
第一步,给定两个正数m,n 第二步,计算m除以n所得到余数r 第三步,m=n,n=r 第四步,若r=0,则m,n的最大公约数等于m; 否则返回第二步
01:00
4. 辗转相除法的程序框图
开始
输入两个正数m,n m<n?

x=n n=m m=x

通用图灵机蕴含的计算思想(2)
• 通用图灵机模型是计算机的计算能力的极限
因为,根据丘奇-图灵论题: 不能用图灵机完成的计算任务是不可计算的
• 计算机系统应该有:
– 存储器(相当于存储带) – 中央处理器(控制器及其状态),并且其字母表可以 仅有0和1两个符号; – 为了能将数据保存到存储器并将计算结果从存储器送 出来展示给用户,计算机系统还应该有输入设备和输 出设备如键盘、鼠标、显示器和打印机等。
01:00
〖研探新知〗
1.辗转相除法: 例1 求两个正数8251和6105的最大公约数。 解:8251=6105×1+2146; 6105=2146×2+1813; 2146=1813×1+333; 1813=333×5+148; 333=148×2+37; 148=37×4+0. 则37为8251与6105的最大公约数。 以上我们求最大公约数的方法就是辗转相 除法。也叫欧几里德算法,它是由欧几里德在 公元前300年左右首先提出的。 01:00
利用辗转相除法求最大公约数的步骤如下: 第一步:用较大的数m除以较小的数n得到 一个商q0和一个余数r0;(m=n×q0+r0) 第二步:若r0=0,则n为m,n的最大公约 数;若r0≠0,则用除数n除以余数r0得到一个 商q1和一个余数r1;(n=r0×q1+r1) 第三步:若r1=0,则r0为m,n的最大公约 数;若r1≠0,则用除数r0除以余数r1得到一个 商q2和一个余数r2;(r0=r1×q2+r2) …… 依次计算直至rn=0,此时所得到的rn-1 即为所求的最大公约数。
01:00
举例:“5+1”的计算过程(1)
• 初始状态
根据规则 集合δ:
第一步完成后状态
01:00
“5+1”的计算过程(2)
01:00
“5+1”的计算过程(3)
01:00
“5+1”的计算过程(4)
• 停机状态
01:00
编码方式表示的图灵机
• 图灵机UN+1:
00→00R,
01→11R,
10→01STOP, 11→11R。
• 停机状态集合H
{halt};
01:00
“x+1”图灵机规则集合(1)
• 规则
如果 A 那么 B,形式化表示:A B
•图灵机控制器的规则:
•(控制器当前状态,读写头当前位置的符号) (读 写头移动动作指示,读写头新位置的符号,控制器新 状态)
01:00
x+1”图灵机规则集合(2)
• 规则集合δ:
• 结论:
– 可解的问题是能够用"图灵机"的自动机理论模型表达的 问题.
01:00
图灵机的直观描述
• 3个部件:有穷控制器(有限状态机)、无穷带 (符号集合)和读写头(读、改写、左移、右移)
•3个动作:改写当前格、左移或右移一格 •图灵机的计算:由控制器控制执行的一系列动作
01:00
图灵机的形式化描述
01:00
解决办法:
• 采用收缩的步骤来进行 基本思想:对于一个二进制位串,不是直接 把它当做二进制数来读,而是关注在这个 序列中,每两个连续的0直接1的个数 例如:
01:00
观察:
发现: 0 →000 1 →010 2 →0110 最左端的0可以忽略
01:00
• 编码规则可以定义为: 0 →0 1 →10 2 →110 3 →1110 ……… 其中0和1可以作为二进制数码来用,2,3,4等可 以作为某种记号或指令的编码来读。
01:00
通用图灵机的基本思想:
• 把任意一台图灵机T的指令表编码成在磁带 上表示的0和1的串 • 把这段磁带作为通用图灵机U的输入的开始 部分,接着图灵机U像T一样,作用于输入 的余下部分。
01:00
编码的方法(1):
• 采用收缩的方式进行编码: 0 →0 10 →1 110 →R 11110 →L 111110 →STOP
01:00
通用图灵机蕴含的计算思想(3)
• 通用图灵机的所有规则构成指令集 • 指示指示了操作的对象(当前符号) • 指令指示了待实施的操作
01:00
2.4希尔伯特问题的不可解性
• • • • 停机问题 不存在决定图灵机停机问题的算法 不存在决定数学问题的一般算法 希尔伯特问题没有解答
01:00
r=m MOD n
r≠0?
n=r m=n


输出n
01:00
结束
INPUT m,n IF m<n THEN x=n n=m m=x END IF r=m MOD n WHILE r<>0 m=n n=r r=m MOD n WEND PRINT n END
2.2 图灵Fra Baidu bibliotek模型
• 图灵机模型理论是计算学科最核心的理论 之一 • 图灵机模型为计算机设计指明了方向 • 图灵机模型是算法分析和程序语言设计的 基础理论。
01:00
2.2.3 非自然数的表示
基本思想: 在自然数表示的基础上对符号进行编码来 完成。 方法: • 负数(对-进行编码) • 分数(对/进行编码)
01:00
• 有限小数的表示 可以用分数的形式来表示 如:3.14159265 →314159265/100000000 • 无限小数的表示 严格来说,图灵机的输入和输出都不是无 限小数 让图灵机产生对应的数位值
01:00
通用图灵机蕴含的计算思想(1)
• 程序也是数据
– “x+1”图灵机功能是固定的,相当于一个程序 – 通用的图灵机功能根据输入编码的不同而变化
• 存储程序和程序控制 • U图灵机进一步展示了程序和其输入可以先 保存到存储带上,U就按程序一步一步运行 直到给出结果,结果也保存在存储带上。
01:00
01:00
本节主要内容
• • • • • 图灵机缘起 图灵机描述 计算“X+1”的图灵机 通用图灵机 图灵机模型的启示
01:00
2.2.1图灵机概念
• 1900,德国数学家希尔伯特提出"23个数学难题"中,
– 逻辑的完备性问题,即是否所有数学问题原则上都可解.
• 1936, 英国数学家图灵
– “论可计算数及其在判定问题中的应用”(On Computable Numbers With an Application to the Entscheidungs Problem)
软件设计方法学
第二章 程序算法与图灵机模型
01:00
2.1 算法概念
• 定义:算法是完成一个任务所需要的具体 步骤和方法。 • 从程序设计的角度来看:给定初始状态或 输入数据,经过计算机程序的有限次运算, 能够得出所要求或期望的终止状态或输出 数据。
01:00
〖创设情景,揭示课题〗
[问题1]:在小学,我们已经学过求最大公约数 的知识,你能求出18与30的最大公约数吗? 2 18 30 先用两个数公有的质因数 3 9 15 连续去除,一直除到所得 3 5 的商是互质数为止,然后 ∴18和30的最大公约 把所有的除数连乘起来. 数是2×3=6. [问题2]:我们都是利用找公约数的方法来求最大 公约数,如果公约数比较大而且根据我们的观察 又不能得到一些公约数,我们又应该怎样求它们 的最大公约数?比如求8251与6105的最大公约数?
01:00
例如:数据序列(5,13,0,1,1,4) 直接用二进制表示为: 101,1101,0,1,1,100 运用我们的编码规则: 0 →0 1 →10 2 →110(可以用来作为数据分隔符“,”的编码) 变换后将得到怎样一个序列呢?(大家动手做一做)
01:00
UN+1对于大数的结果表示对比: 167+1 • 一进位 167 :00001111…110000(167个1) 168:00001111…110000(168个1) • 二进位(10100111,): 167:00001001000101010110 168(10101000,):000010010010000110
01:00
• 一进位系统 实现方法:用一串n个1代表数n 如:1 →1 2 →11 3 →111 4 →1111 …….
01:00
优点: • 数据表示简单 • 0可以作为多个数之间的分隔手段
缺点: • 表示大数时候极端无效率
01:00
2.2.2 二进位码的数据表示
• 目标 解决大数表示的问题 如果直接把磁带上的符号当成二进制位 数来读存在的问题: 读到的0是空白还是二进制数本来的数位? 多个数据之间的分隔符如何表示?
01:00
编码的方法(2):
• 逐步采取措施去掉冗余的信息 00→00R, 01→01STOP, 00R01STOP R01STOP R1STOP 1101011110 1011表示十进制数 11
01:00
编码的方法(3):
我们把号码为n的图灵机称为第n台图灵 机,用Tn来表示。 故 1011 即表示为T11 注意:不是每一个自然数n所对应的Tn都 是可以工作的图灵机
相关文档
最新文档