我在某处读到{(a ^ p)(b ^ q):p,Q属于N}是一种常规语言。但是,我不认为这是正确的。这可以使用泵浦引理来证明。只是想验证我的解决方案是否正确
让我成为ab。因此,x(y ^ n)z不属于L,因为对于n> = 1,在a之前将存在一些b。但是,表达式不允许这样做。因此,(a ^ p)(b ^ q)不是RL
答案 0 :(得分:7)
不久之前我使用了泵浦引理,但 a p b q 绝对是一种常规语言。为它编写正则表达式甚至是微不足道的! a * b *
类似的 a p b p 虽然不常见,因为当开始消费 b 时 - 符号,你需要记住你消耗了多少个 a 符号,并且有限自动机不能“记住”任意数字。这不是你的问题!
答案 1 :(得分:0)
泵浦引理说: 如果语言A是常规的=>有一个数字p(泵浦长度),其中,如果s是L中的任何字符串,那么| s | > = p,然后s可以分成三段s = xyz,满足以下条件:
表明某种语言L不规则的正确方法是假设L有规律并试图达成矛盾。
如果您试图假设您的语言不规则,则应首先搜索表示语言不规则的字符串。
让我们尝试用 p b n 来获得n> = 0。
我们可以对这个字符串做一些假设:因为| xy |< = p我们知道y只是由a组成的。此时你可以根据自己的喜好抽出多少次,但xy i z是每个i> = 0的语言成员。
如果你为n> = 0选择 n b p ,你也不会遇到矛盾。
L = {a n b n | n> = 0}不规则,但你没有p和q的约束(我的意思是,不需要计算a和b的两次出现)。
然而,当且仅当语言可以用正则表达式表达时,语言是常规的。在这种情况下,您可以这样做:a * b *。因此,您可以得出结论,这种语言是常规的。
编辑: 对于p< = q,语言不规则,但你正在考虑任何p和q。