非上下文无关的递归可枚举语言示例

Posted

技术标签:

【中文标题】非上下文无关的递归可枚举语言示例【英文标题】:Example of a recursively enumerable language that is not context free 【发布时间】:2016-01-23 14:21:53 【问题描述】:

什么是非上下文无关的递归可枚举语言的简单示例?我的教科书在明确提供这样一个例子方面很糟糕。

要明确,这不是一个 hmk 问题。

【问题讨论】:

【参考方案1】:

递归可枚举类确实非常广泛。它包括任何具有图灵机的语言,该图灵机将停止并接受该语言中的任何字符串(如果给定一个不是该语言的字符串,则不需要图灵机停止)。因此,递归可枚举语言的一个示例是在给定输入上停止的图灵机的描述集(在某种形式上)。由于存在模拟任何图灵机的图灵机(即所谓的通用图灵机),H中的有效字符串当然可以被识别,但Halting Problem的不可判定性表明 H 不是递归的。

任何图灵机都可以表示为不受限制的形式语法(因此形式语法是对图灵机的描述)。 (如果不是艰巨的,实际的构造是乏味的,我不建议尝试它。)因此,任何无法确定停止问题的图灵机都定义了一种递归可枚举的语言,它不是上下文无关的(甚至是上下文敏感的)。

在更迂腐的层面上,不是上下文无关的上下文相关语言的示例包括:

 ap | p is prime 
 anbncn | n ≥ 0 
 α | α ∈ a, b, c* ∩ #a(α) = #b(α) ∩ #b(α) = #c(α) 

(在最后一个中,#<sub>x</sub>(α)xα中出现的次数。换句话说,它是包含相同数量的as、bs和cs.)

【讨论】:

以上是关于非上下文无关的递归可枚举语言示例的主要内容,如果未能解决你的问题,请参考以下文章

非正则语言的补语总是递归语言吗?

在非上下文类中使用上下文类构造函数[重复]

错误:在渲染器中加载非上下文感知本机模块:@serialport\bindings\build\Release\bindings.node'

3.2语法分析-上下文无关文法

3.2语法分析-上下文无关文法

如何用以下条件表明语言 L 不是上下文无关的?