12 图灵机与递归可枚举语言_第1页
12 图灵机与递归可枚举语言_第2页
12 图灵机与递归可枚举语言_第3页
12 图灵机与递归可枚举语言_第4页
12 图灵机与递归可枚举语言_第5页
已阅读5页,还剩36页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十二讲

图灵机与递归可枚举语言

图灵机的概念与定义

递归可枚举语言

递归语言

基本图灵机的几种编程技巧

对基本图灵机的扩展

受限的图灵机

图灵机与计算机图灵机与递归可枚举语言

回顾

设

=0,

1,2

,L=0n1n2n

n

1.

无有限自动机和上下文无关文法能够接受语言L.

存在一个图灵机可接受该语言.图灵机的概念与定义

基本图灵机带头(tapehead)带(tape)单元格(cell)空白(blank)带符带符(tapesymbol)图灵机的概念与定义

举例001122BBBB……q0Xq1q1Yq2q2Zq3q3q3q3q0q1Xq1q2Yq2Zq3q3q3q3q0q4q4q5q5q6该图灵机接受的语言为

L=0n1n2n

n

1.图灵机的概念与定义

有限状态集

有限输入符号集

有限带符号集

转移函数

开始状态

特殊带符:空白符

终态集合q0

Q

B–

F

Q转移函数为偏函数

:Q

Q{L,R}

形式定义

一个图灵机TM(Turingmachine)是一个七元组

M=(Q,

,

,

,q0,B

,F).

图灵机的概念与定义

举例(续前例)该图灵机的七元组形式为:

M=({q0,

q1,

q2,

q3,

q4,

q5,

q6},{0,1,2},

{0,1,2,X,Y,Z,B},

,q0,B

,{q6}).转移函数可由上图的转移图形式给出.图灵机的概念与定义

转移图与转移表图灵机的概念与定义

用ID(instantaneousdescriptions)表达当前格局

图灵机M=(Q,

,

,

,q0,B

,F)的当前格局用字符串

X1X2…Xi-1qXiXi+1…Xn

表示,称为ID,其中

1.

q

Q为当前M的状态;

2.

当前带的头正在扫描Xi;

3.

X1X2…Xn

为当前带中最左端的非空白符号与最右端的非空白符号之间的带符号串.有两个例外,即当带头位于最左端非空白符号的左边时,X1X2…Xn的某个前缀部分为空白符号串;当带头位于最右端非空白符号的右边时,X1X2…Xn的某个后缀部分为空白符号串.图灵机的概念与定义

给定图灵机M=(Q,

,

,

,q0,B

,F)

,定义ID’s

之间的推导关系├M

如下:

1.设

(q,Xi)

=(p,Y

,L),则有

X1X2…Xi-1qXiXi+1…Xn

├MX1X2…Xi-2pXi-1YXi+1…Xn

,但有如下两个例外

:(1)i=1时,qX1X2…Xn

├MpBYX2…Xn

,和(2)i=n及Y=B

时,X1X2…Xn-1qXn

├MX1X2…Xn-2pXn-1

.

上述关系├M的自反传递闭包记为├*M(或├*).

2.设

(q,Xi)

=(p,Y

,R),则有

X1X2…Xi-1qXiXi+1…Xn

├MX1X2…Xi-1YpXi+1…Xn

,但有如下两个例外

:(1)i=n时,X1X2…Xn-1qXn

├MX1X2…Xn-1YpB

,和(2)i=1及Y=B

时,qX1X2…Xn├MpX2…Xn-1Xn.图灵机的概念与定义

举例(续前例)对于输入字符串001122,该图灵机可以有如下推导步:q0001122├MXq101122├MX0q11122├MX0Yq2122├MX0Y1q222├MX0Yq31Z2├*Mq3X0Y1Z2├MXq00Y1Z2├*MXXYYZq22├MXXYYq3ZZ├*MXq3XYYZZ├MXXq0YYZZ├*MXXYYq4ZZ├MXXYYZq5Z├MXXYYZZq5B├MXXYYZZBq6B图灵机的概念与定义

可以被图灵机接受的语言称为递归可枚举语言(recursiveenumerablelanguages).

给定图灵机M=(Q,

,

,

,q0,B

,F),定义M

的语言

L(M)={w

w*p,,.(p

F

*

+

q0w├*Mp)}递归可枚举语言

图灵机的停机

停机(halts)指图灵机不存在下一个移动(move)

结论

任给图灵机M

,容易构造一个图灵机M

,使得

L(M)=L(M

),并满足:如果w

L(M)

,则对于w,M

接受w并一定停机.

由此结论,如果没有特别指出,今后总是假定图灵机到达终态(接受态)后一定停机.

但是,如果w

L(M)

,则对于w,M不一定能停机.递归语言

递归语言(recursivelanguages)

称语言L是递归的,当且仅当存在图灵机M

,使得

L=L(M),且满足:

1.如果w

L(M)

,则对于w,M接受w(自然会停机,到达终态).2.如果w

L(M)

,则对于w,M最终也会停机(虽然不能到达终态).

递归语言对应的问题是可判定的.递归语言

(Church-Turing

论题)

递归语可枚举语言对应的问题是部分可判定的.

利用带存储区的状态(storageinthestate)此类图灵机M=(Q,

,

,

,q0,B

,F)

中,状态中可以包含一个具有有限个取值的存储单元,即状态集合为

Q=S

T={[q,a]|q

S

a

T},其中q

S通常表示控制状态,而a

T通常表示数据元素.基本图灵机的几种编程技巧

多道(multipletracks)图灵机此类图灵机M=(Q,

,

,

,q0,B

,F)

中,带符号可以是元组的形式.如上图所示的图灵机,带符号的形式为一个三元组.基本图灵机的几种编程技巧

子例程(subroutines)的设计

左上图的图灵机表示子例程copy

,右上图的图灵机表示可以调用copy

的主程序,完成两个正整数的乘法.初始时,带上的符号串形如0m10n1,而结束时,带上的符号串变为0mn.基本图灵机的几种编程技巧

多带图灵机(Multitape

TuringMachines)

非确定图灵机(Nondeterministic

TuringMachines)对基本图灵机的扩展多带图灵机

特点

1.初始时,输入符号串置于第一条带上;所有带(包括第一条)的其它单元格的符号均为空白符;有限控制处于初态;第一条带的读写头(带头)置于输入符号串的最左端;其余各带的读写头置于任何单元格上.2.在每一个移动步(move)里,控制进入新的状态,每条带上正被扫描的符号被替换为新的带符,每个带头独立地左移一格、右移一格或者不动.对基本图灵机的扩展

语言接受能力与单带图灵机等价可以采用一个既具有带存储区的状态,又带有多个道的图灵机来模拟.k个带的图灵机可以用2k

个道的图灵机来模拟.下图所示的4个道的图灵机用来模拟一个两带的图灵机.对基本图灵机的扩展多带图灵机

举例一个双带的图灵机如何接受语言L=0n1n2n

n

1

?对基本图灵机的扩展多带图灵机

非确定图灵机

下一个动作有多种选择

转移函数可以为

:Q2QD

,其中Q、

和D分别为有限状态集、带符号集和带头的移动方向.即

(q,X)

为三元组的集合:

{(q1,Y1,D1),(q2,Y2,D2),…,(qk,Yk,Dk)}对基本图灵机的扩展

语言接受能力与(确定的)图灵机等价可以采用下图所示的多带图灵机来模拟一个非确定图灵机.

主要思想是采用广度优先的方式来模拟非确定图灵机的整个ID’s空间树.对基本图灵机的扩展

非确定图灵机

具有半无穷带(Semi-infinite

Tapes)的图灵机多栈机(MultistackMachines)

计数器机(CounterMachines)受限的图灵机

具有半无穷带的图灵机

带头的初始位置左部没有单元格,带头移动受限于从带头初始位置开始向右无限延伸的范围.带头的初始位置(initialheadposition)受限的图灵机

可以用一个双道的半无穷带图灵机模拟具有双向无穷带的基本图灵机.受限的图灵机

具有半无穷带的图灵机

多栈机

具有多个下推栈的PDA,包含k个下推栈的一步转移

可表达为(p,

1,

2,…,

k)

(q,a,X1,X2,…,Xk).

下图示意带有3个下推栈的PDA.受限的图灵机

利用一个多带图灵机很容易模拟多栈机.例如,下图所示的多栈机可以采用4

条带的多带图灵机模拟:一条带用于扫描输入,另3

条带模拟下推栈.受限的图灵机

多栈机

利用一个双栈PDA

可以模拟基本图灵机.如右图所示,第一个下推栈模拟当前带头位置左边的单元格,而第二个下推栈模拟当前带头位置右边(包含当前)的单元格.受限的图灵机

多栈机

举例如何使用一个双栈的PDA接受语言

L=0n1n2n

n

1

?受限的图灵机

多栈机

计数器机

将多栈机的多个下推栈替换为多个计数器,每个计数器存放一个非负整数,控制只知道每个计数器的值是0

或是非0.计数器机根据当前的状态,下一个输入符号以及每个计数器的当前值是否为0来决定下一步动作:改变状态,计数器加1或减1

,但不允许对当前值为0的计数器减1.受限的图灵机

可以认为,计数器机是一个特殊的多栈机:只有两个栈符号,一个为栈底标志Z0,另一个为X;每个栈都初始化为Z0,Z0

只能被替换为XiZ0(i

0),X

只能被替换为Xi(i

0).栈顶为Z0和X分别相当于计数器的值是0或是非0.X入栈相当于计数器加1,X出栈相当于计数器减1

,Z0

不会出栈相当于计数器为0时不能减1.受限的图灵机

计数器机

由于上述特殊的多栈机相当于计数器机,因此计数器机所接受的语言都是递归可枚举的;反过来,所有递归可枚举语言是否都存在相应的计数器机?关于计数器机所能接受的语言有如下结论:

结论具有一个计数器的计数器机的语言接受能力不强于确定的下推自动机.

结论具有两个(或以上)计数器的计数器机的语言接受能力相当于图灵机,即可以接受递归可枚举语言.

证明分两步:(1)任何递归可枚举语言可以被具有三个计数器的计数器机接受;(2)任何具有三个计数器的计数器机可以用一个具有两个计数器的计数器机来模拟.受限的图灵机

计数器机

结论任何递归可枚举语言可以被具有三个计数器的计数器机接受.

证明思路用具有三个计数器的计数器机模拟任何两个下推栈的多栈机.

假定共有r-1个堆栈符号,并将它们分别用整数1

到

r-1

表示.这样,一个栈X1X2…Xn可编码为

Xnrn-1+Xn-1rn-2+…X2r+X1.

可以用两个计数器表示两个下推栈,第三个计数器用于辅助完成关于栈的操作.前者初始化为开始栈符对应的整数,后者初始化为0.操作pop

相当于上述整数除以r取整(即弹出X1

),操作push(X)

相当于乘以r再加上X,将栈顶元素X

替换为Y

相当于先减去X

再加上

Y.乘和除需借助于第三个计数器来完成.受限的图灵机

计数器机

结论任何具有三个计数器的计数器机可以用一个具有两个计数器的计数器机来模拟.

证明思路将任何三个计数器i,j,k用整数m=2i3j5k

表示,存放于一个计数器,另外一个计数器用于辅助完成相应于原先i,j,k计数器上的操作.

主要模拟i,j,k计数器上的三种操作:

(1)i,j,k加1i加1相当于上述计数器m乘以2,j加

1相当于m乘以3,k加1相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论