L = {a^n a^n b^m |m, n ≥ 0}属于正则语言还是非正则语言?
认知核验与非正则语言证明
认知正确性说明
你的理解没有错误:
- 正则语言的核心等价判定条件就是存在可接收该语言的有限状态自动机(FSA/有限状态机),非正则语言必然没有对应的FSA可以完整识别
- FSA仅能通过有限的状态记录有限信息,没有可扩展的内存组件,无法支持对任意大数值的计数需求,这也是大部分非正则语言无法被FSA识别的核心原因
典型非正则语言数学证明(以维基百科收录的经典示例「由所有n≥0的aⁿbⁿ字符串组成的语言L」为例)
我们采用正则语言的泵引理进行反证,具体流程如下:
正则语言泵引理规则:对任意正则语言L,存在正整数泵长度p,所有长度≥p的字符串s∈L均可拆分为s=xyz三部分,且同时满足三个约束:
|y| > 0(y不能是空字符串)|xy| ≤ p(xy的总长度不超过泵长度p)- 对任意非负整数k,字符串
xyᵏz仍然属于L
证明步骤:
- 假设L={aⁿbⁿ | n≥0}是正则语言,因此满足泵引理,存在对应的泵长度p
- 选取字符串s=
aᵖbᵖ,s的长度为2p≥p,且显然属于L - 根据泵引理的拆分约束,|xy|≤p,因此xy部分只能由字符a构成,y至少包含1个a
- 取k=2,得到新字符串
xy²z=a(p+|y|)bp,此时a的数量大于b的数量,不符合L的构成规则,不属于L,和泵引理的第三条约束矛盾 - 假设不成立,因此L不属于正则语言
内容的提问来源于stack exchange,提问作者Laura Aguiar Martinho
相关产品推荐
相关产品推荐

