两种语言的交集是什么?

What is the intersection of two languages?

给定语言

L<sub>1</sub>={a<sup>n</sup>b<sup>2m</sup>|n,m≥1}
L<sub>2</sub>={a<sup>n</sup>b<sup>3n</sup>|n≥0}

L = L<sub>1</sub> ∩ L<sub>2</sub>

我知道 L<sub>1</sub> 是常规语言 L<sub>2</sub>可以用PDA表示。

但我不明白 L{a<sup>2n</sup>b<sup>6n[=29 的答案=]|n≥1}。这个解是如何计算出来的?

语言只是一组(有效字符串),所以我们这里实际上只是整数算术中的一个简单问题。只需脱去形式语言的华美外衣,就能触及问题的本质。

两个集合L<sub>1</sub>L<sub>2</sub>{acount(a)bcount(b)|j,k≥0}[= 的子集46=];也就是说,它们由一些 a 后跟一些 b 组成。 L<sub>1</sub> 的条件限制 count(b) 为正偶数,因为对于某个整数它必须是 2m m≥1L<sub>2</sub> 的条件限制 count(b) 正好是 3×count(a)

现在,用谓词定义的两个集合的交集是使两个谓词都为真的元素集合。所以count(b)必须既能被2整除又能被3整除,也就是必须能被6整除;换句话说,对于某个正整数 n,它必须是 6n。这意味着 count(a) 必须是 2n,因为 b 正好是其三倍。这给了你所提供的答案。

L<sub>2</sub>L不是正则的,但是可以用非常相似的PDA实现。