如何证明这种语言是否正常?
L = {a n b n :n≥1} union {a n b n + 2 :n≥1}
答案 0 :(得分:1)
我会给出一个方法和一个证明的草图,它可能有一些洞,我相信你可以填补自己。
想法是使用nerode's theorem - 表明R L 存在无穷多的等价组 - 并且根据该定理,您可以推导出语言不正常。
定义两种类型的集合:
对于x
中的每个G_illegal
以及{a,b} * 中的每个z
,很容易看到xz
}不在L
。
因此,对于x,y
中的每个G_illegal
以及z
中xz
中的L
yz
L
z
}< - > x
中的y
。
此外,对于{a,b} * 中的每个G_j
- 以及j
中的每个z
,a
[相同]两个xz
:
yz
包含L
,则z
和k+j = n
都不在xz
L
= b j ,那么xz = a n b k b j ,以及y
- yz
位于L
。同样适用于z
,因此k+j+2 = n+2
位于xz
。L
= b j + 2 ,那么xz = a n b k b j + 2 ,因为y
- yz
位于L
。同样适用于x
,因此xz
位于yz
。L
是b i ,使得i≠j且i≠j + 2,并且您得到x,y
和G_j
都不是在z
。因此,对于xz
中的每个j和每个L
以及{a,b} * 中的每个yz
:L
在H_j
< - >中x
中的y
。
使用相同的方法为每个z
证明相同。
此外,很容易证明每个x
G_j U H_j以及G_illegal中的每个y
- xz
= b j , xz在L中,而yz不在L.
对于G_j中的L
和H_i中的yz
,对于z = ab j + 1 - 很容易看出L
不是x
和y
中的x
位于y
。
很容易看出,对于z
,xz
分别位于G_j和G_i或L
,yz
位于H_j,H_i - H_j
= b j :G_j
位于j
,而L
则不是。{/ p>
我们刚刚证明我们创建的集合实际上是来自nerode's theorem的R L 的等价关系,并且因为我们有无限数量的这些集合,每个集合都是R的等价关系 L [我们{{1}}和{{1}}每{{1}}} - 我们可以从nerode的定理推导出{{1}是不规则的。
答案 1 :(得分:0)
您可以将pumping lemma用于常规语言。它基本上说如果你能找到任何给定整数n的字符串和这个字符串的任何分区到xyz,那么| xy | < = n,和| y | > 0,那么你可以抽出字符串的y部分,它必须保持语言,这意味着,如果xy ^ iz它不是某种语言的语言,那么语言就不常规了。
证据就是这样,一种对手的证明。假设有人告诉你这种语言是正常的。然后问他一个数字n>你建立一个长度大于n的方便的字符串,然后你给对手。他以任何他想要的方式对x,y z中的字符串进行分区,只要| xy |即可< = n。然后你必须抽y(重复i次),直到找到一个不是同一种语言的字符串。
在这种情况下,我告诉你:给我一个。你修好了。我告诉你:取字符串“a ^ n b ^ {n + 2}”,并告诉你拆分它。无论如何,您可以拆分此字符串,您将始终必须使y = a ^ k,其中k> 0,因为你强迫制作| xy | < = n,我的字符串以^ n开头。这是诀窍,你给对手一个字符串,这样他就可以分开它,他给你一个你可以抽的部分。所以现在我们抽y,比方说,0次,你得到“a ^ m b ^ {n + 2}”,m< n,不是您的语言。完成。我们也可以抽1次,n次,n!阶乘时间,你需要做的任何事情都要离开语言。
这个定理的证据就是说,如果你有一个常规语言,那么你有一个自动机,n个状态用于某些固定的n。如果一个字符串有超过n个字符,那么它必须在你的自动机中经历一些循环。如果我们在进入循环之前将x命名为字符串的一部分,并且在循环中将该部分命名为y,那么很明显我们可以根据需要多次抽取y,因为我们可以在循环中继续运行我们想要的次数,结果字符串必须是语言,因为它将被该自动机识别。要使用该定理来证明非规则性,因为我们不知道所谓的自动机将如何,我们必须留给对手选择n和自动机内循环的位置(不会有自动机,但你对对手说的话:敢给我一个自动机,我会告诉你它不可能存在。)