正则表达式简化问题

时间:2018-12-09 08:30:00

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

我试图理解下面定义的正则表达式α和β之间的等价关系,但我对冲突的信息不屑一顾。

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)< / p>


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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

好吧,事实证明我误解了为什么b + b <=> b。

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