给定一种语言,我如何不看生产规则就直接说这种语言不是常规语言?
我可以使用抽引式引理,但有些人说只是看语法,这不是常规语法。这怎么可能?
给定一种语言,我如何不看生产规则就直接说这种语言不是常规语言?
我可以使用抽引式引理,但有些人说只是看语法,这不是常规语法。这怎么可能?
Answers:
DFA / NFA的主要特性是缺乏无限内存。如果您查看一种语言,并且可以想到的唯一算法(以后应将其翻译成有限自动机)就需要此属性,也就是说,您会觉得识别该算法的任何算法都需要记住任意数量的事物(例如您的示例中的),那么该语言可能不是正常的。
当然,您应该始终记住,数学直觉可能是错误的,而确保直觉的唯一方法就是证明这一点。
编辑:由于空间不足,我将在这里评论中回答最后一个问题。
你们在谈论无限内存,这是为什么内存不规则的原因。但是如果我想,一个^ nb ^ m也可以有无限的内存,不是吗?这仍然没有给我和平。
问题不是单词可以得到多大(您通常会遇到无限的常规语言,因为每种有限的语言都是常规语言,这很无聊),而是DFA需要记住多少。
在示例中,无需记住m ,n。算法只需要确保它们是肯定的,并且单词的顺序正确即可。这是一个有限的列表,列表中的每个项目都需要固定数量的内存。
将此与a n b n进行比较,为此需要一个简单的算法来记住a的数量等于b的数量
的。这将需要无限制的内存。当我查看一种语言并发现我能想到的任何算法都需要无限制的内存时,我对语言不规则的直觉越来越强。如果在合理的时间内(取决于您的合理时间)找不到“智能”算法(需要恒定内存量的算法),我将尝试证明该语言不是常规语言。
希望这可以使它更加清晰。
实际上,您可以使用相当简单的计算方法来确定某种语言是否正常,而不用做一个完整的证明。您只需要应用一个非常强大的标准:当且仅当它具有有限的商数时,该语言才是规则的。