递归可枚举语言与递归语言Word格式.docx

上传人:b****9 文档编号:13090519 上传时间:2022-10-04 格式:DOCX 页数:12 大小:34.28KB
下载 相关 举报
递归可枚举语言与递归语言Word格式.docx_第1页
第1页 / 共12页
递归可枚举语言与递归语言Word格式.docx_第2页
第2页 / 共12页
递归可枚举语言与递归语言Word格式.docx_第3页
第3页 / 共12页
递归可枚举语言与递归语言Word格式.docx_第4页
第4页 / 共12页
递归可枚举语言与递归语言Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

递归可枚举语言与递归语言Word格式.docx

《递归可枚举语言与递归语言Word格式.docx》由会员分享,可在线阅读,更多相关《递归可枚举语言与递归语言Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

递归可枚举语言与递归语言Word格式.docx

*上的任意字符串x都能导致T停机,且如果xÎ

L,输出1,否则输出0。

如果存在一个图林机接受语言L,则L被称为递归可枚举语言;

如果存在一个图林机识别语言L,则L被称为递归语言。

显然,每个递归语言都是递归可枚举语言。

如果存在一个识别语言L的图林机T,那么很容易构造接受L的图林机T’,只要将输出0的停机动作修改成进入崩溃的动作就可以了。

但是,反过来的命题就比较复杂了。

如果T是接受L的图林机,那么可能存在不属于L的字符串导致T崩溃,而没有输出结果。

本章后面,我们将讨论无法消除这种可能的语言。

现在,我们只需要记住上面的部分结论。

这个结论还有如下更通用的形式。

定理10.1如果L被一个非确定型图林机T接受,并且T上的每一个可能的移动都导致停机或崩溃,则L是递归语言。

证明:

我们构造一个三带图林机T’,它是定理9.2证明中构造的图林机T2的变形。

在9.2定理的证明中,T2模拟图林机T的每一个可能的有限的移动序列,如果找到一个导致T停机的序列,T2则停机,否则进入无限循环。

我们现在需要的图林机必须在两个方面有所不同:

首先,如果T’发现了T的一个停机序列,则T’在停机之前应该在第一个磁带上输出D1;

其次的修改更重要,如果T上没有停机序列,则T’必须在适当的时机确定这一点,并且在第一个磁带上输出D0,然后停机。

下面着重说明第二个修改。

在定理9.2的证明中,T2利用第二个磁带上的数字串来跟踪移动序列,其中的第i个数字指示了第i步的选择。

显然,如果没有发现停机序列,但是发现一个整数n,每个长度为n的数字串所表示的移动序列都导致崩溃,则可以判定输入字符串不会被接受。

因为如果被接受,则存在一个停机序列,如果停机序列长度小于n,则应该在发现n之前就找到,矛盾;

如果停机序列长度大于n,与长度为n的序列都带来崩溃矛盾。

因此问题转换成如何发现n。

T’每次模拟完一个T的导致崩溃的移动序列,将第二个磁带上表示这个移动序列的数字串复制到第一个磁带的空白部分,因此T’在第一个磁带上保存了所有导致崩溃的序列的历史,每当T’完成某个长度,比如n,的所有序列的模拟(如果T转移的最大可能数是k,则最后一个长度为n的数字串为n个k-1数字组成,比如k=2,则由n个

1组成),T’搜索第一个磁带看是否所有长度为n的序列都在第一个磁带上,如果是,则找到整数n,擦掉第一个磁带的内容,输出D0;

否则继续下一个长度的搜索。

下面给出一些判定语言是否是递归可枚举和递归语言的条件。

其中一些结果基于构造能够同时模拟其他两个图林机的图林机的方法。

定理10.2 如果L1和L2是字母表å

上的递归可枚举语言,则L1È

L2和L1Ç

L2也是递归可枚举语言。

设接受L1和L2的图林机分别是T1=(Q1,å

G1,q1,d1)和T2=(Q2,å

G2,q1,d2),

陶晓鹏Copyright2003

12

现在分别构造接受L1È

L2的图林机。

构造思路与定理3.4的证明很相似,我们引入了2元组状态Q1´

Q2,分别跟踪T1和T2的状态转移。

我们在前面也讲到,由于PDA的栈的限制,这个方法不能用于PDA的类似的构造。

由于图林机的磁带具有极大的灵活性,我们可以使用2带图林机分别模拟T1和T2的磁带。

下面以接受L1È

L2的图林机为例说明。

T=(Q,å

G,q,d)是一个2带图林机,Q=Q1´

Q2,转移函数如下,

d((p1,p2),(a1,a2))=((q1,q2),(b1,b2),(D1,D2))

其中,(qi,bi,Di)=di(pi,ai),i=1,2。

T首先将输入字符串从第一个磁带复制到第二个磁带,并且在两个磁带的左端都插入符号

#。

T满足下面的条件:

1.T1和T2都不停止,则T不停止;

2.T1和T2至少有一个停机,则T停机;

3.如果T1和T2同时崩溃,则T崩溃;

如果其中一个崩溃,则T放弃这个模拟(忽略相应磁带),继续模拟另一个,如果它停止在停机或崩溃,则T以相同方式停止。

上面的构造使得T停机时当且仅当T1和T2中至少有一个停机,因此能够推断T接受语言L1È

L2。

语言L1Ç

L2以相似的方式处理,不同的是,T1和T2中只要有一个崩溃,则T就崩溃,而只有当T1和T2都停机,T才停机。

并集和交集还保持语言的递归性,即两个递归语言的并集和交集仍然是递归语言,而且递归语言还保持补集的递归性。

定理10.3如果L是一个递归语言,则补集L’也是递归语言。

如果T是识别L的图林机,则只要交换停机时的输出结果,得到的图林机就能识别L’。

这个简单的构造证明不适用于递归可枚举语言;

练习9.10没有明确说明递归可枚举语言的补集不一定是递归可枚举的,但是下面的定理预示了这个结果。

定理10.4如果L是一个递归可枚举语言,它的补集也是递归可枚举语言,那么L是递归语言。

设T1和T2分别是接受L和L’的图林机,我们构造一个2带图林机接受L,首先利用定理10.2构造接受并集的图林机的方法,然后适当修改。

我们已经知道,对于任意一个字符串,T1和T2中有且只有一个停机,修改T如下:

当T1或T2停机时,T也停机,并且擦掉第一个磁带内容,如果是T1停机,输出1,否则输出0。

10.2枚举一个语言

枚举一个集合的含义是逐个列出集合中的元素。

因此如果称一个集合是可枚举的,意味着存在一个枚举这个集合的算法。

事实上,根据这个思路,我们可以提出递归可枚举语言和递归语言相应的特征。

首先,我们精确地描述图林机是如何枚举一个语言的。

显然,使用多带图林机更方便,其中一个磁带用于输出枚举结果。

定义10.2 T是一个k带图林机,k>

=2,语言LÍ

*,如果T满足下面的条件,则称T枚举L:

1.第一个磁带的磁带头绝对不会左移;

2.在任何时候,第一个磁带的内容形式是,x1#x2#...#xn#y,其中n>

=0,每个xiÎ

L,且各不相同,y是L的另一个元素的前缀;

3.对于每个xÎ

L,x最终作为其中的某个xi出现在第一个磁带上。

根据上面的定义,如果L是一个有限语言,图林机枚举完所有L中的字符串后,或者停机,或者继续移动,不会在第一个磁带上打印任何内容;

如果L是一个无限语言,图林机枚举

L的过程不会停止。

上面的定义显然是一种合理的形式化“枚举集合元素”这个概念的方法。

定义10.1说明能够被图林机接受的语言是递归可枚举语言,而这个名称隐含了递归可枚

举语言是能够被图林机枚举的语言,证明的思路是简单的,但是详细证明有些繁琐。

一方面,如果存在图林机T枚举语言L,那么给定一个字符串x,我们能够等待观察x是否在出现在T的输出结果中,来判断x属于L。

如果x属于L,上面策略能够保证T接受x,如果不属于L,则保证不接受。

另一方面,如果T是接受L的图林机,为了枚举L,我们先定义字符串的顺序,比如9.6节引入的规范顺序(canonical order),即短字符串先于长的,长度相同的按照字母表顺序。

然后,我们根据这个顺序考虑å

*上的所有字符串,逐个判定字符串x是否属于L,比较复杂的问题是,x可能导致T无限循环,下面的证明着重解决这个问题。

定理10.5语言LÍ

*是递归可枚举当且仅当L能够被图林机枚举。

假设T是枚举L的图林机,构造接受L的图林机T1如下。

T1的磁带比T多一个,第一个磁带是增加的那个磁带,作为输入磁带,然后T1模拟T,每当符号#输出在第二个磁带上,T1暂停,检查新输出的字符串是否与第一个磁带上的输入字符串相同,如果相同,T1停机,如果不同,继续上面的“枚举-比较”过程。

显然,T1接受且只接受属于L的字符串。

更具体而言,T1开始完全模仿T的动作,忽略第一个磁带,直到输出符号#,则只考虑第一个磁带和第二个磁带,忽略其他磁带,如果不匹配,则回到初始格局。

反过来,如果T接受L,我们构造一个3带图林机T1枚举L。

第一个磁带是输出磁带,第二个磁带用于生成å

*上的每个字符串x,第三个磁带用于模拟T处理x的动作。

为了避免前面提到的难点,T1模拟T的越来越长的有限移动序列,而不是试图完成单个字符串的所有移动。

因此,第二个磁带不仅保存目前为止的所有生成的所有字符串,而且保存T处理每个字符串的移动次数。

我们采用å

*上的规范顺序,比如å

={a,b},则字符串的生成顺序是,

L,a,b,aa,ab,ba,bb,aaa,aab,...,bbb,aaaa,aaab,...

T1做如下的多趟扫描。

第一趟扫描,T1生成字符串L,并且模拟T在这个输入字符串L

上的一步移动;

第二趟扫描,T1模拟在L上的两步移动,并生成a,模拟T在a上的一步移动;

第三趟扫描,T1模拟在L上的三步移动,模拟在a上的两步移动,生成b,模拟在b上的一步移动。

第i趟扫描完成后,第二个磁带的内容的形式如下,

}i }i-1 }i-2

DD11...1Da11...1Db11...1D...DxD1

其中字符串后面的1的数目表示T1处理该字符串所用的步数。

x是规范顺序中的第i个字符串。

在下一趟扫描中,T1给第二个磁带上的每个字符串增加一个1,即增加一次移动,然后复制到第三个磁带,模拟T处理这个输入字符串的规定数目的前面过程,然后擦掉第三个磁带。

如果T停机,T1将这个字符串复制到第一个磁带,并添加符号#,第二个磁带上的内容都模拟完后,添加规范顺序中的下一个字符串(次处是x的下一个字符串)到第二个磁带,并添加一个1,复制到第三个磁带,然后类似上面的处理。

我们没有明确写出T1完成这些动作需要的簿记装置,但是它们能够很直观地实现,显然每个被T接受的字符串最终会出现在T1的第一个磁带上,且只有这样的字符串出现在上面。

定理10.5证明的第二部分,应该注意,尽管å

*上的字符串按照规范顺序出现在第二个磁带上,但是L中的字符串不是按照规范顺序列举在第一个磁带上。

如果给予T更强的假设,我们能够很容易构造出按照规范顺序列举接受字符串的图林机。

这个更强的假设是,如果T不仅接受L,而且识别L。

反过来可以说,如果存在图林机按照规范顺序列举枚举L,则L是递

归语言。

定理10.6L是递归语言当且仅当存在一个图林机按照规范顺序枚

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1