鉴于语言
L1={anb2m|n,m≥1}
L2={anb3n|n≥0}
L = L1 ∩ L2
我知道L1
是常规语言,L2
可以由PDA代表。
但我不明白答案说明L
是{a2nb6n|n≥1}
。这个解决方案是如何计算的?
答案 0 :(得分:4)
语言只是一组(有效字符串),所以我们这里只是整数算术中的一个简单问题。只需要删除正式语言的优雅服装以达到问题的本质。
L1
和L2
这两个集都是{acount(a)bcount(b)|j,k≥0}
的子集;也就是说,它们由一些 a 组成,后跟一些 b s。 L1
的条件将count(b)
限制为正数偶数,因为某个整数2m
必须为m≥1
。 L2
的条件将count(b)
限制为3×count(a)
。
现在,使用谓词定义的两个集合的交集是一组元素,这两个谓词都是真的。因此count(b)
必须可被2和3整除,这意味着它必须可被6整除;换句话说,对于某个正整数6n
,它必须是n
。这意味着count(a)
必须是2n
,因为 b 的确是正确数量的三倍。这给了你提供的答案。
与L2
一样,L
不常规,但可以使用非常相似的PDA实现。