非常规无上下文语言和无限常规子语言

时间:2009-03-19 00:51:29

标签: regex nlp context-free-grammar

我在大学工作,基本上说:

“证明非正则语言L = {0 ^ n 1 ^ n:n natural}没有无限的常规子语言。”

我通过矛盾证明了这一点。我基本上说有一种语言S是L的子语言,它是一种常用语言。由于S的可能正则表达式是0 *,1 *,(1 + 0)*和(0o1)*。我检查每个语法并证明它们都不是语言L的一部分。

但是,我如何证明任何非常规上下文无关语言都不能包含任何常规的无限子语言?

我本身并不想要证明,我只想指出正确的方向。

5 个答案:

答案 0 :(得分:2)

对于0 ^ n 1 ^ n语言,查看pumping lemma.可能是很有价值的,我认为当我学习它在a ^ nb ^ n语言中使用的泵浦引理时(同样的事情)。泵浦引理可能有助于证明。

另外,您可以考虑在补语,联合,交集和克莱恩星下关闭常规语言。

即如果L1和L2是正则的,那么:

L1 L2 (concatenation) is also regular.
L1 n L2 is regular
L1 U L2 is regular
¬L1 is regular 
L1* is regular

通过使用其中一些规则,您可以证明任何包含常规无限子语言的语言是正常的。

答案 1 :(得分:2)

L = {0 ^ n 1 ^ n:n natural}是非常规的无上下文。

M = 2 * 3 *是无限规则的。

N =L∪M是非常规的无上下文。 N包含M.

答案 2 :(得分:1)

你的直觉很好。这里有两件事。

首先,几乎总是当问题采取“表明L不是常规/不是CF”的形式时,答案将涉及使用泵浦引理。同样地,当你得到一个类似“显示没有X ......”的问题时,简单的路径(几乎总是)将成为矛盾的证明。

答案 3 :(得分:0)

编辑:false语句,仅适用于无上下文语言

答案 4 :(得分:0)

因为你只是想要提示(谢天谢地,因为我忘了自大学以来如何做校样),看看definition of a regular language以及它有哪些属性。只是从那里看,我有足够的信息来证明这个陈述。