我一直在 YouTube 上观看 Coderisland 关于有限状态机、DFA 和 NFA 的讲座,在一次讨论中,他谈到了如何使用抽水引理来展示一种语言是如何不规则的。我不太清楚如何应用引理,并想了解我是否做得对。如果我有类似的东西:
w = {a n b k , n =/= k}
我是否正确,我可以这样说:
h = {a n b n + r , r > 0} 是w的子集,因此如果我通过引理证明h不规则,那么w一定不是规则的,因为h是w的子集。
我要展示的方式如下:
- h = xyz
- |xy| <= n
- x = n-r
- y = a r
- z = b n + r
- xyz = a n-r a r b n + r
- xy 2 z = a n-r a 2r b n + r = a n + r b n + r
因此h不可能是正则的,因为 a n + r b n + r不是 {a n b n + r , r > 0} 的形式,并且由于h不是正则w一定不是正则的,因为h是w。
我是否正确应用了它?我了解如何将它应用于像 {an b n }这样的简单语言,因为我可以将引理直接应用于这种语言,但我能想到的语言的唯一方法是创建一个属于我的语言的子集, 并将引理应用于此。
如果我没有正确应用它,有没有办法表明我的语言不规则(或规则),使用另一个引理,或者可能具有闭包属性?
这是一个非常棒的话题,即使我不完全理解抽水引理,我也很高兴能进一步探索它!