(0*1*)* 等于 (0 | 1)* 吗?

Is (0*1*)* equal to (0 | 1)*?

正则表达式(0*1*)*(0 | 1)*是一样的吗?

有人可以为此提供证据或直觉反驳吗?我觉得这是真的,但我正在努力写一步一步的证明。

两个不同的正则表达式或两个语法可以生成与这些相同的语言,但正则表达式或语法并不相同。有一种从正则表达式构造非确定性有限状态自动机和从构造确定性有限状态自动机的标准方法。该方法将为所讨论的正则表达式生成两个不同的自动机。虽然每个人都会识别相同的字符串,但他们在这样做时会经历不同的状态。

正则表达式是等价的。

我没有完全严格的证明,但挥手如下。

R1 = (0*1*)*R2 = (0 | 1)*。这些都是字母表 A = {0, 1}.

上的正则表达式

第 1 部分:

0 | 1是集合{0, 1}00*1* 的一个元素(因为 0 ∈ 0*ɛ ∈ 1*0 ∘ ɛ = 0)所以 1.

因此0 | 10*1*的子集,也就是说(0 | 1)*(0*1*)*的子集,即R2 ⊆ R1.

第 2 部分:

R2 涵盖了字母表 A 中所有可能的单词。也就是说,每个只包含字符 01 的字符串都在 R2 中。 (这对我来说似乎很明显;证明可能涉及 * and/or 归纳法的定义。)

因此R1 ⊆ R2.

通过合并第 1 部分和第 2 部分,我们得到 R1 = R2