【问题标题】:Regular Expression Simplification Issue正则表达式简化问题
【发布时间】:2024-01-18 19:42:01
【问题描述】:

我试图理解下面定义的正则表达式 α 和 β 之间的等价性,但我因信息冲突而失去理智。

a+b:   a or b
ab:    concatenation of a and b
$:     empty string

α = (1*+0)+(1*+0)(0+1)*($+0+1)

β = (1*+0)(0+1)*($+0+1)

https://ivanzuzak.info/noam/webapps/regex_simplifier/ 说,α 等价于 β

然而,我的学校教导说连接比联合具有更强的约束力,这意味着:

11*+0 =/= 1(1*+0)

这意味着我的 α 看起来像这样带括号:

α = (1*+0) + ( (1*+0)(0+1)*($+0+1) )

还有那个

α =/= ( (1*+0) + (1*+0) ) (0+1)*($+0+1)


我希望很清楚我的问题是什么,我会很感激任何帮助。谢谢。

【问题讨论】:

    标签: regex computer-science finite-automata computation-theory


    【解决方案1】:

    通常,当两个正则表达式匹配同一组单词时,它们被认为是等效的。

    它们如何匹配并不重要。因此,哪个运算符具有更高的优先级并不重要。

    注意相等(书面形式)和等同(具有相同效果)之间的细微差别。

    【讨论】:

    • 您的回答让我明白了我的误解,谢谢。
    【解决方案2】:

    好吧,原来我误解了为什么b+b b。

    如果 L1 是 L2 的子集,那就是 L1∪L2 L2。

    【讨论】: