2022年递归可枚举语言和递归语言 .pdf
《2022年递归可枚举语言和递归语言 .pdf》由会员分享,可在线阅读,更多相关《2022年递归可枚举语言和递归语言 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、语言与计算理论导引递归可枚举语言和递归语言陶晓鹏Copyright 2003 1 10 递归可枚举语言和递归语言10.1 递归可枚举和递归在本章和后面一章,我们集中讨论图林机识别的语言的外部特征,并且详细研究图林机接受的语言的性质。我们首先形式化说明9.4 节提到的图林机接受语言和识别语言的区别。前面讲到,对于图林机T,记号 L(T) 表示由导致T 停机的字符串组成的语言。定义 10.1 L*是一个语言,图林机T 的输入字母表是,如果 L=L(T) ,则称T 接受 L(accept)。xL: *0,1 是 L 的特征函数, 如果 T 计算 xL,则称 T 识别 L 或判定 L(recogniz
2、e, decide),即*上的任意字符串x 都能导致T 停机,且如果xL,输出 1,否则输出0。如果存在一个图林机接受语言L,则 L 被称为递归可枚举语言;如果存在一个图林机识别语言 L,则 L 被称为递归语言。显然,每个递归语言都是递归可枚举语言。如果存在一个识别语言L 的图林机T,那么很容易构造接受L 的图林机T , 只要将输出0 的停机动作修改成进入崩溃的动作就可以了。但是,反过来的命题就比较复杂了。如果T 是接受 L 的图林机,那么可能存在不属于L 的字符串导致T 崩溃,而没有输出结果。本章后面,我们将讨论无法消除这种可能的语言。现在,我们只需要记住上面的部分结论。这个结论还有如下更通
3、用的形式。定理 10.1 如果 L 被一个非确定型图林机T 接受,并且T 上的每一个可能的移动都导致停机或崩溃,则L 是递归语言。证明:我们构造一个三带图林机T ,它是定理9.2 证明中构造的图林机T2的变形。在9.2定理的证明中, T2 模拟图林机T 的每一个可能的有限的移动序列,如果找到一个导致T 停机的序列,T2 则停机, 否则进入无限循环。我们现在需要的图林机必须在两个方面有所不同:首先,如果 T 发现了 T 的一个停机序列, 则 T 在停机之前应该在第一个磁带上输出1;其次的修改更重要,如果 T 上没有停机序列,则T 必须在适当的时机确定这一点,并且在第一个磁带上输出0,然后停机。下
4、面着重说明第二个修改。在定理 9.2 的证明中, T2 利用第二个磁带上的数字串来跟踪移动序列,其中的第i 个数字指示了第 i 步的选择。显然,如果没有发现停机序列,但是发现一个整数n,每个长度为n 的数字串所表示的移动序列都导致崩溃,则可以判定输入字符串不会被接受。因为如果被接受,则存在一个停机序列,如果停机序列长度小于n,则应该在发现n 之前就找到,矛盾;如果停机序列长度大于n,与长度为n 的序列都带来崩溃矛盾。因此问题转换成如何发现n。T 每次模拟完一个T 的导致崩溃的移动序列,将第二个磁带上表示这个移动序列的数字串复制到第一个磁带的空白部分,因此T 在第一个磁带上保存了所有导致崩溃的序
5、列的历史,每当T 完成某个长度,比如n,的所有序列的模拟(如果T 转移的最大可能数是k,则最后一个长度为n 的数字串为n 个 k-1 数字组成,比如k=2,则由 n 个 1 组成), T 搜索第一个磁带看是否所有长度为n 的序列都在第一个磁带上,如果是,则找到整数n,擦掉第一个磁带的内容,输出0;否则继续下一个长度的搜索。下面给出一些判定语言是否是递归可枚举和递归语言的条件。其中一些结果基于构造能够同时模拟其他两个图林机的图林机的方法。定理 10.2 如果 L1 和 L2 是字母表上的递归可枚举语言,则 L1L2 和 L1L2 也是递归可枚举语言。证明: 设接受 L1 和 L2 的图林机分别是
6、T1=(Q1, , 1, q1, 1)和 T2=(Q2, , 2, q1, 2),现在分别构造接受L1L2 和 L1L2 的图林机。 构造思路与定理3.4 的证明很相似, 我们引入了2名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - 语言与计算理论导引递归可枚举语言和递归语言陶晓鹏Copyright 2003 2 元组状态 Q1 Q2,分别跟踪T1 和 T2 的状态转移。我们在前面也讲到,由于PDA 的栈的限制,这个方法不能用于
7、PDA 的类似的构造。由于图林机的磁带具有极大的灵活性,我们可以使用2带图林机分别模拟T1 和 T2 的磁带。下面以接受L1L2 的图林机为例说明。T=(Q, , , q, )是一个 2 带图林机, Q= Q1Q2,转移函数如下,(p1,p2), (a1,a2)=(q1,q2), (b1,b2), (D1,D2) 其中, (qi, bi, Di)= i(pi, ai), i=1,2 。T 首先将输入字符串从第一个磁带复制到第二个磁带,并且在两个磁带的左端都插入符号#。T 满足下面的条件:1.T1 和 T2 都不停止,则T 不停止;2.T1 和 T2 至少有一个停机,则T 停机;3.如果 T1
8、和 T2 同时崩溃,则T 崩溃;如果其中一个崩溃,则T 放弃这个模拟(忽略相应磁带),继续模拟另一个,如果它停止在停机或崩溃,则T 以相同方式停止。上面的构造使得T 停机时当且仅当T1 和 T2 中至少有一个停机,因此能够推断T 接受语言L1L2 。语言 L1L2 以相似的方式处理,不同的是, T1 和 T2 中只要有一个崩溃,则T 就崩溃,而只有当 T1 和 T2 都停机, T 才停机。并集和交集还保持语言的递归性,即两个递归语言的并集和交集仍然是递归语言,而且递归语言还保持补集的递归性。定理 10.3 如果 L 是一个递归语言,则补集L 也是递归语言。证明:如果T 是识别 L 的图林机,则
9、只要交换停机时的输出结果,得到的图林机就能识别L 。这个简单的构造证明不适用于递归可枚举语言;练习 9.10 没有明确说明递归可枚举语言的补集不一定是递归可枚举的,但是下面的定理预示了这个结果。定理 10.4 如果 L 是一个递归可枚举语言,它的补集也是递归可枚举语言,那么L 是递归语言。证明:设 T1 和 T2 分别是接受L 和 L 的图林机,我们构造一个2 带图林机接受L,首先利用定理 10.2 构造接受并集的图林机的方法,然后适当修改。我们已经知道,对于任意一个字符串, T1 和 T2 中有且只有一个停机,修改T 如下:当T1 或 T2 停机时, T 也停机,并且擦掉第一个磁带内容,如果
10、是T1 停机,输出1,否则输出0。10.2 枚举一个语言枚举一个集合的含义是逐个列出集合中的元素。因此如果称一个集合是可枚举的,意味着存在一个枚举这个集合的算法。事实上,根据这个思路,我们可以提出递归可枚举语言和递归语言相应的特征。首先,我们精确地描述图林机是如何枚举一个语言的。显然,使用多带图林机更方便,其中一个磁带用于输出枚举结果。定义 10.2 T 是一个 k 带图林机, k=2,语言 L*,如果 T 满足下面的条件,则称T 枚举L:1.第一个磁带的磁带头绝对不会左移;2.在任何时候,第一个磁带的内容形式是,x1#x2#.#xn#y ,其中n=0,每个xiL,且各不相同, y 是 L 的
11、另一个元素的前缀;3.对于每个xL,x 最终作为其中的某个xi 出现在第一个磁带上。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - 语言与计算理论导引递归可枚举语言和递归语言陶晓鹏Copyright 2003 3 根据上面的定义,如果 L 是一个有限语言,图林机枚举完所有L 中的字符串后, 或者停机,或者继续移动,不会在第一个磁带上打印任何内容;如果L 是一个无限语言,图林机枚举L 的过程不会停止。上面的定义显然是一种合理的形
12、式化“枚举集合元素”这个概念的方法。定义 10.1 说明能够被图林机接受的语言是递归可枚举语言,而这个名称隐含了递归可枚举语言是能够被图林机枚举的语言,证明的思路是简单的,但是详细证明有些繁琐。一方面,如果存在图林机T 枚举语言L,那么给定一个字符串x,我们能够等待观察x 是否在出现在T 的输出结果中,来判断x 属于 L。如果 x 属于 L,上面策略能够保证T 接受 x,如果不属于L,则保证不接受。另一方面,如果T 是接受L 的图林机,为了枚举L,我们先定义字符串的顺序,比如9.6节引入的规范顺序(canonical order),即短字符串先于长的,长度相同的按照字母表顺序。然后,我们根据这
13、个顺序考虑*上的所有字符串,逐个判定字符串x 是否属于 L,比较复杂的问题是, x 可能导致T 无限循环,下面的证明着重解决这个问题。定理 10.5 语言 L*是递归可枚举当且仅当L 能够被图林机枚举。证明:假设T 是枚举 L 的图林机,构造接受L 的图林机 T1 如下。 T1 的磁带比 T 多一个,第一个磁带是增加的那个磁带,作为输入磁带,然后T1 模拟 T,每当符号 #输出在第二个磁带上, T1 暂停,检查新输出的字符串是否与第一个磁带上的输入字符串相同,如果相同,T1 停机,如果不同,继续上面的“枚举-比较”过程。显然,T1 接受且只接受属于L 的字符串。更具体而言, T1 开始完全模仿
14、T 的动作,忽略第一个磁带,直到输出符号#,则只考虑第一个磁带和第二个磁带,忽略其他磁带,如果不匹配,则回到初始格局。反过来,如果T 接受 L,我们构造一个3 带图林机T1 枚举 L。第一个磁带是输出磁带,第二个磁带用于生成*上的每个字符串x,第三个磁带用于模拟T 处理 x 的动作。为了避免前面提到的难点, T1 模拟 T 的越来越长的有限移动序列,而不是试图完成单个字符串的所有移动。因此,第二个磁带不仅保存目前为止的所有生成的所有字符串,而且保存T 处理每个字符串的移动次数。我们采用*上的规范顺序,比如=a,b ,则字符串的生成顺序是,, a, b, aa, ab, ba, bb, aaa,
15、 aab, ., bbb, aaaa, aaab, . T1 做如下的多趟扫描。第一趟扫描,T1 生成字符串,并且模拟T 在这个输入字符串上的一步移动;第二趟扫描,T1 模拟在上的两步移动,并生成a,模拟 T 在 a 上的一步移动;第三趟扫描, T1 模拟在上的三步移动,模拟在a 上的两步移动,生成b,模拟在b 上的一步移动。第 i 趟扫描完成后,第二个磁带的内容的形式如下,1.1.111.111.1121xbaiii其中字符串后面的1 的数目表示T1 处理该字符串所用的步数。x 是规范顺序中的第i 个字符串。在下一趟扫描中,T1 给第二个磁带上的每个字符串增加一个1,即增加一次移动,然后复制
16、到第三个磁带,模拟 T 处理这个输入字符串的规定数目的前面过程,然后擦掉第三个磁带。如果 T 停机, T1 将这个字符串复制到第一个磁带,并添加符号#,第二个磁带上的内容都模拟完后,添加规范顺序中的下一个字符串(次处是x 的下一个字符串)到第二个磁带,并添加一个 1,复制到第三个磁带,然后类似上面的处理。我们没有明确写出T1 完成这些动作需要的簿记装置,但是它们能够很直观地实现,显然每个被 T 接受的字符串最终会出现在T1 的第一个磁带上,且只有这样的字符串出现在上面。定理 10.5 证明的第二部分,应该注意, 尽管*上的字符串按照规范顺序出现在第二个磁带上,但是 L 中的字符串不是按照规范顺
17、序列举在第一个磁带上。如果给予T 更强的假设,我们能够很容易构造出按照规范顺序列举接受字符串的图林机。这个更强的假设是,如果T 不仅接受 L,而且识别L。反过来可以说,如果存在图林机按照规范顺序列举枚举L,则 L 是递归语言。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - 语言与计算理论导引递归可枚举语言和递归语言陶晓鹏Copyright 2003 4 定理 10.6 L 是递归语言当且仅当存在一个图林机按照规范顺序枚举L。证
18、明:留作练习10.7。练习中还讨论了根据图林机可计算函数得到的一些递归可枚举语言的一些性质。10.3 非递归可枚举语言我们前面讨论的比较简单的计算模型,FA 和 PDA ,能够接受特定类型的语言,发现了一些它们无法接受的语言。对于图林机,我们也要研究是否存在不能接受的语言,但是由于不存在图林机的泵引理,因此图林机的这个问题要难得多。Church-Turing 论题预示了这一点,如果一个想象得到的算法能够被图林机实现,那么它不太可能必须遵循一些相似于FA 和 PDA 泵引理的规律性约束,因为图林机接受语言的能力太灵活了。我们很快将能够展示一个不是递归可枚举的语言。当然,并不是一定先有一个构造性证
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年递归可枚举语言和递归语言 2022 递归 枚举 语言
限制150内