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

时间:2019-08-17 10:13:33

标签: state-machine regular-language automata finite-automata

正则表达式(0*1*)*(0 | 1)*是否相同?

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

2 个答案:

答案 0 :(得分:3)

两个不同的正则表达式或两个语法可以生成与它们相同的语言,但是正则表达式或语法不相同。有一种从正则表达式构造非确定性有限状态自动机的标准方法,也有从构造确定性有限状态自动机的标准方法。该方法将为所讨论的正则表达式产生两个不同的自动机。尽管每个人都可以识别相同的字符串,但是它们会经历不同的状态。

答案 1 :(得分:0)

正则表达式是等效的。

我没有完全严格的证明,但是挥舞着手。

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中。 (这对我来说似乎很明显;证明可能涉及*和/或归纳法的定义。)

因此R1 ⊆ R2

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