我试图理解下面定义的正则表达式α和β之间的等价关系,但我对冲突的信息不屑一顾。
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>
我希望很清楚我的问题是什么,我将感谢您的任何帮助。谢谢。
答案 0 :(得分:1)
通常,当两个正则表达式匹配同一组单词时,它们被认为是等效的。
它们如何匹配并不重要。因此,哪个运算符具有更高的优先级并不重要。
请注意,相等(书面形式)和相等(具有相同效果)之间的细微差别。
答案 1 :(得分:0)
好吧,事实证明我误解了为什么b + b <=> b。
如果L1是L2的子集,那就是L1∪L2<=> L2。