测试语言是否正常的算法


11

是否有算法/系统程序来测试语言是否正常?

换句话说,在给定的代数形式指定的语言(想到像L={anbn:nN}),测试语言是否正常。想象一下,我们正在编写一个Web服务,以帮助学生完成所有作业。用户指定语言,然后Web服务将以“常规”,“非常规”或“我不知道”进行响应。(我们希望Web服务尽可能不频繁地回答“我不知道”。)是否有任何好的方法可以自动执行此操作?这容易处理吗?是否可以确定(即是否可以保证我们永远不需要回答“我不知道”)?是否存在合理有效的算法来解决此问题,并且能够针对实际中可能出现的许多大多数语言提供“不知道”以外的答案?

证明语言不规则的经典方法是激进引理。但是,似乎需要在某些时候进行手动洞察(例如,选择要泵送的单词),因此我不清楚是否可以将其转化为算法。

证明一种语言正常的经典方法是使用Myhill-Nerode定理来推导有限状态自动机。这看起来是一种很有前途的方法,但是它确实需要能够以代数形式对语言执行基本操作。对于我来说,目前尚不清楚是否有系统的方法可以对代数形式的语言象征性地执行所有可能需要的操作。


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

L={E:S}

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

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

  • 每个是一个字表达。(此处x r表示字符串x的反方向。)xr,yr,zr,xrx

  • 中的每一个都是单词表达。(示例性地,Σ = { 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|,

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


我还没来得及考虑您选择的语言表达方式。它大致涵盖哪种语言?如果添加单词变量仅出现一次的约束,那么所有这些语言是否都与上下文无关?
吉尔(Gilles)'所以

EE::=cηxEEErη::=n|x|

1
您可以表达所以这远远超出了上下文无关的语言范围。尽管如此,我怀疑问题至少与确定上下文无关语法是否定义了常规语言一样困难。{anbncnnN}
吉尔斯(Gilles)'所以

@jmad,是的,那是完全合理的。我不愿意选择这种语言表达方式:如果您看到其他更合适的内容,请随意选择其他内容。吉尔斯,攻角很大!(对于围观者,已知结果表明测试任意上下文无关语法是否定义了常规语言是不确定的。)如果问题不确定,建议您调整问题以允许Web服务响应“我不知道”。 '不知道”,然后要求一种算法尽可能少地回答“我不知道”。
DW

这个班不是在克莱恩星的陪伴下结束的,是吗?您能表达出圆括号吗?
吉尔(Gilles)'所以

Answers:


13

答案是不。确定给定的上下文无关语法是否生成常规语言是一个不确定的问题。

更新。我对这个一般性问题给予了否定的回答

给定以代数形式指定的语言,请测试该语言是否为常规语言

由于上下文无关的语言是语言中代数方程的解:请参见《 J. Berstel 转换和上下文无关的语言》一书中的第二章,定理1.4和1.5 。

但是,对于确定性上下文无关的语言,同样的问题是可以决定的,这要归功于Stearns [1],并得到Valiant [2]的改进:
[1] RE Stearns,下推式机器,信息和控制的规则 性测试11 323- 340(1967)。DOI:10.1016 / S0019-9958(67)90591-8。
[2] LG Valiant。确定性下推自动机的规律性和相关问题 J. ACM 22(1975),第1-10页。

还有另一个积极的结果,更接近问题第二部分给出的规范。回想一下的半线性子集正是在Presburger算术中可定义的集合。还有的有理子集。特别地,由线性不等式定义的的子集是有理的。现在,给定的有理子集,语言 是常规的。确实,[Ginsburg-Spanier]知道,当且仅当是可识别子集时,是规则的。Ñ ķ Ñ ķ ř Ñ ķ大号[R ={ Ü Ñ 1 1 ü Ñ ķ ķ | Ñ 1 Ñ ķ[R}大号[R - [R Ñ ķ Ñ ķNkNkNkRNk

L(R)={u1n1uknk(n1,...,nk)R}
L(R)RNk,可以确定[Ginsburg-Spanier]是否可以识别的给定有理子集。Nk

S. Ginsburg和EH Spanier。,半群,Presburger公式和语言Pacific J. Math。 16(1966),285-296。

S. Ginsburg和EH西班牙人。有界的常规集,过程。美国数学 Soc。 17,1043至49年(1966年)。

这不能解决问题的第二部分,该问题由于单词变量可能无法确定,但是可以给出一个合理的开头。


(a)Pedantic nit:我不清楚上面的代数语法是否足够通用,可以表达所有上下文无关的语法(正如Gilles和我在评论中所暗示的那样),因此尚不清楚该特定结果是否适用于此处。(b)更重要:请考虑适当地调整问题陈述,以便允许Web服务响应“我不知道”,并且我们希望找到一种很少回答“我不知道”的算法尽可能。我以前在评论中建议过这个。我将编辑问题以使问题本身更清楚。
DW

我怀疑您可以改编该证明,但结果却不成立。我认为有些上下文无关的语言无法用这种形式主义表达:例如,您如何表达圆括号?在克莱恩星的带领下,语言课不是封闭的,是吗?
吉尔(Gilles)'所以

@吉尔斯,是的,我想到了。我现在还不清楚如何修改证明。无法判断上下文无关语法是否正常的标准证明是通过Greibach定理。但是,在我看来,此类语言并不满足Greibach定理的前提(在与常规集合连接的情况下似乎不太可能闭合,而在并集条件下则不可能闭合)。也许还有其他我不熟悉的证明方法。我同意,目前尚不清楚如何以这种代数形式来表达括号中的语言。
DW

刚刚添加了参考。
J.-E.

您的帖子无法回答该问题,因为它涉及的是另一类语言。(据我们所知)此处允许的代数形式(用一个单词表达)不如表达任意上下文无关语言所需要的代数形式一般。对于两者的交集,情况可能是可以确定的。
吉尔斯(Gilles)'所以
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.