The Wayback Machine - https://web.archive.org/web/20221025113730/https://baike.sogou.com/kexue/d11116.htm

递归语言

编辑

在数学、逻辑和计算机科学中,如果一种形式语言(从固定字母表中取出的一组符号集合组成的有限序列),是该语言字母表中所有可能有限序列集合的递归子集,那么它就被称为递归语言。同样地,如果有一种通用图灵机(一旦遇到给定输入就进入停止状态的图灵机),当输入一个有限符号序列时,如果该序列属于该语言,图灵机就进入接受状态,反之它就进入拒绝状态,那么这个形式语言也是递归的。递归语言也被称为可判定语言

可判定性这种概念可以扩展到其他计算模型。例如,人们也可以在非确定性图灵机上讨论语言的可判定性。因此为了避免歧义,通常使用的“递归语言”也可被称作图灵可判定语言,而不是简单的可判定的

所有递归语言的类通常被称为R,但是这个名称也用于RP类。

这种语言类型在乔姆斯基层级()中没有定义。所有递归语言也都是递归可枚举的。所有正则语言,上下文无关语言的和上下文有关语言都是递归的。

1 定义编辑

递归语言有两个等价的主要定义:

  1. 它是一种递归的形式语言,就是说是一种该语言字母表中所有可能的单词集合的递归子集。
  2. 作为一种递归的形式语言,有一种针对这种语言的图灵机,当给出任何有限的字符串输入时,如果字符串属于该语言,图灵机进入停止状态并接受该输入,否则它就进入停止状态并拒绝该输入。这种图灵机最终都会进入停止状态。因为能判定一种语言是否属于递归语言,因此这种图灵机被认为是决定者。

根据第二个定义,任何判定问题都可以用一个对于所有输入,都会最终进入停止状态的算法来证明它是否可判定。一个不可判定问题是一个不可判定的问题。

2 例子编辑

如上所述,每种上下文有关语言都是递归的。因此,递归语言的一个简单例子是集合 L={abc, aabbcc, aaabbbccc,...};更正式的表达方式是,集合

 

是上下文有关的,因此它是递归的。

关于非上下文有关的可判定语言的例子,则更难描述一些。这里有一个需要熟悉数理逻辑知识的例子:Persburger算法是带有加法(但没有乘法)的自然数的一阶理论。当Persburger算法中的这套合式公式上下文无关时,对于某个常数c> 0(),每台接受Persburger算法中真命题集的确定性图灵机,都有一个最小为  的最差运行时间。这里的n表示给定公式的长度。因为每种上下文有关语言都可以被一个线性有界自动机接受,并且确定性图灵机能够模拟这种自动机,然而这种图灵机在给定某个常数c的情况下,却具有最大为  的最差运行时间,所以Presburger算法中的这组有效公式并非为上下文有关的。从正面来说,我们知道存在一种确定性图灵机,运行时间为最多n的三次方,这里n可以决定Persburger算法()中的这组永真公式。所以说,这个例子就是关于一种可判定但却非上下文有关语言的。

3 闭包属性编辑

递归语言是在下列运算中是闭合的。也就是说,如果LP是两个递归语言,那么下列语言也是递归的:

  • L的克莱尼星号  
  • L的非删除同态象φ(L)
  • L和P的串联  
  • L和P的并集(  
  • L和P的交集(  
  •  的补集
  • L和P的差集  

注意最后一条属性,差集可以用交集和补集来表示。

阅读 78
版本记录
  • 暂无