测试语言是否无上下文的算法


18

是否有一种算法/系统程序来测试一种语言是否不受上下文限制?

换句话说,在给定的代数形式指定的语言(想到像),测试的语言是否是与否上下文无关。想象一下,我们正在编写一个Web服务,以帮助学生完成所有作业。您指定语言,Web服务将输出“无上下文”或“无上下文”。有没有什么好的方法可以自动执行此操作?L={anbnan:nN}

当然,还有一些用于手动证明的技术,例如抽运引理,奥格登引理,帕里克引理,互换引理等等。但是,它们每个人都需要在某个时候进行手动洞察,因此尚不清楚如何将它们中的任何一种转化为算法。

我看到Kaveh在其他地方写过,非上下文无关的语言集不是可递归枚举的,因此似乎没有希望任何算法都能在所有可能的语言上运行。因此,我认为Web服务将需要能够输出“无上下文”,“非上下文”或“我无法分辨”。在教科书中很可能会看到的多种语言上,是否有除“我无法分辨”以外的其他算法通常能够提供答案?您将如何构建这样的Web服务?


为了使这个问题更好地解决,我们需要确定用户如何指定语言。我愿意接受建议,但我在想这样的事情:

L={E:S}

其中是一个单词表达式,S是一个在长度变量上的线性不等式的系统,具有以下定义:ES

  • 每个就是一个字表达。(这些代表可以容纳∗中任何单词的变量。)x,y,z,Σ

  • 中的每一个都是单词表达。(示例性地,Σ = { a b c },因此a b c 表示基础字母中的单个符号。)a,b,c,Σ={a,b,c,}a,b,c,

  • 是一个字表达式中,如果η是一个长度可变。aη,bη,cη,η

  • 单词表达的串联是单词表达。

  • 每个的是一个长度可变。(这些代表可以包含任何自然数的变量。)m,n,p,q,

  • 每个是长度可变的。(这些代表相应单词的长度。)|x|,|y|,|z|,

这似乎足以处理我们在教科书练习中看到的许多情况。当然,如果愿意,您可以替换以代数形式指定语言的任何其他文本方法。


从语言的规律性开始会更容易吗?
Yuval Filmus

@YuvalFilmus,肯定会!既然您提到了,那是个好主意。您认为该问题对于常规语言是否可行?如果您认为这可能很有价值,我很乐意向您询问有关常规语言的信息。
DW

2
对于常规语言来说肯定会更容易。顺便说一句,一般的不可判定性不一定适用于您提到的形式的语言。
Yuval Filmus 2013年

4
恐怕这个问题可能是开放的,至少一个特定的情况是:cstheory.stackexchange.com/questions/17976。对于您的一般性问题,也许可以通过某种方式获得不确定性,但是我看不到。
sdcvvc 2013年

举例说明该语言可能会有所帮助。建议在计算机科学聊天中进行
vzn 2014年

Answers:


0

根据赖斯定理,判断图灵机接受的语言是否具有任何非平凡的属性(此处为上下文无关)是无法决定的。因此,您将不得不限制您的识别机制(或描述)的功能,以使图灵不完整,无法期望得到答案。

对于某些语言描述,答案很简单:如果使用正则表达式,则为正则,因此上下文无关。如果是上下文无关的语法,则同上。


1
我同意您的所有评论,但是不确定我能看到它如何回答这个问题,或者不确定如何使用它来回答这个问题。我知道所有这些事实。我描述了一种指定语言的特殊方式。您是否建议图灵完成?在我看来,这似乎不是图灵完整的。线性不等式的系统不是图灵完备的,因此我怀疑/推测我已经对其进行了足够的限制,以使其不是图灵完备的。另外,对于我提供的用于指定语言的方法来说,它也不是小事,因为它不是正则表达式,也不是上下文无关的语法。
DW

-2

下推自动机接受任何语言,即CFL。这是确定语言是否为CFL的详细分类。检查语言是否为CFL


这不是算法。
xskxzr

我看不出这如何回答问题。我知道一种语言是上下文无关的,前提是它可以被PDA接受,但这似乎对查找问题中要求的形式的算法没有帮助。您链接到的geeksforgeeks文章并未提供有关此问题的完整算法;它只是列出了较简单的非穷举特殊情况(并且它不是很好的参考,因为它的某些陈述有些粗略/可疑)。
DW

AFAIK,目前还没有结构良好的算法。(如果我错了,请纠正我)。我们能做的最好的就是检查情况。
SiluPanda

-3

如果您只想检查CFG,请尝试JFLAP软件。您甚至可以要求JFLAP开发人员为您提供该软件的代码或算法。您可以从此处http://www.jflap.org/jflaptmp/获得JFLAP,它是免费的,但是需要JDK或JRE或其他东西。或者,您可以尝试其他一些类似的软件及其开发人员。


1
我不确定这是否能回答问题。JFLAP没有功能可以接受数学符号的语言,并告诉您该语言是否与上下文无关。
Yuval Filmus

Sipser书中的THEOREM 2.20一种语言是上下文无关的,当且仅当某些下推式自动机识别出该语言时才如此。您可以通过语法在JFLAP中构建PDA
Haseeb Hassan Asif

您可能对不能放在JFLAP中的数学符号表示正确,但是您仍然可以放入所有语法规则,并且可以将其转换为PDA或说它不是CFG或其他错误
Haseeb Hassan Asif

{anbncn:nN}

2
我认为JFLAP可以将无上下文语法转换为等效的PDA,但这绝对没有帮助。
Yuval Filmus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.