(a ^ p)(b ^ q)是常规语言

时间:2011-11-01 13:46:53

标签: nlp regular-language

我在某处读到{(a ^ p)(b ^ q):p,Q属于N}是一种常规语言。但是,我不认为这是正确的。这可以使用泵浦引理来证明。只是想验证我的解决方案是否正确

让我成为ab。因此,x(y ^ n)z不属于L,因为对于n> = 1,在a之前将存在一些b。但是,表达式不允许这样做。因此,(a ^ p)(b ^ q)不是RL

2 个答案:

答案 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,满足以下条件:

    对于每个i> = 0 ,
  1. xy i z为L
  2. | y |> = 0
  3. p> = | xy |
  4. 表明某种语言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。