证明(a*b*)*=(a|b)*两个正规式是等价的
时间: 2024-09-26 17:00:46 浏览: 39
真左正规型A幺半群的结构 (2007年)
(a*b*)* 可以理解为零个、一个或多个 a 和 b 的连续组合,而 (a|b)* 则表示零个、一个或多个 a 或者 b。这两个正规式的等价意味着可以互相转换并匹配相同的字符串。
证明它们等价可以通过构造一个转换规则:
1. 对于空字符串(ε),(a*b*)* 中 ε 可以由任意组合的 a 和 b 为空时得到,(a|b)* 同样匹配 ε。
2. 对于包含一个 a 或 b 的字符串 s,比如 a 或 b,它可以直接通过 (a|b)* 匹配。
3. 对于包含多个 a 和 b 组合的字符串,如 aab 或 abbb,可以在 (a*b*)* 中先匹配一组 a 和 b,然后剩余的部分仍然可以用同样的规则递归处理,因为 * 运算符允许无限次复制。
反过来,从 (a|b)* 转换到 (a*b*)* 也是类似的:
- 如果字符串只包含 a,那么它是 (a*b*)* 的一种情况。
- 如果字符串只包含 b,同理。
- 如果字符串包含 a 和 b,可以分解成先有 a 再有 b 的形式,即 (a*(b*a)*)*。
由于这两种模式都可以覆盖所有可能的序列组合,我们可以得出结论:(a*b*)* 和 (a|b)* 是等价的正规式。
阅读全文