题目
判断下述正规式之间是否等价:
(a | b)*与a* | b*
(ab)*与a*b*
正规表达式
正规表达式(简称正则式)是词法分析的形式化表示方式,它具有一整套带有严格规定的符号体系来描述问题的表达式。
正规式定义中
“|”读为“或”,例如:a|b,表示结果为a或者是b
“.”读为“连接”(“.”可省略),l例如:a.b,表示结果为ab
“*”读为“闭包”(通俗来说就是任意次数重复连接),例如a*,表示结果:
正规集
正规集是根据正规式,得出所有可能存在的结果组成的集合,通俗来讲就是正规式的展开写法,下面我来例举几个例子,方便大家理解。
a的正规集:{a}
a|b的正规集:{a,b}
a*的正规集:{(空集),a,aa,......,任意个a的串}
解题
我们根据正规式,写出正规集,再进行比较,看是否等价
(1) (a | b)*对应的正规集其a、b可任意交替出现,如abbaaaba... ;而a*| b*对应的正规集只可出现任意个a或者任意个b;因此两者不等价。
(2)(ab)*对应的正规集是以任意个ab对出现的,即ababab...;而a*b*对应的正规集则是先出现任意个a后接任意个b,即a...ab...b;因此两者不等价。
总结
本次题目并不难,找到正规式和正规集的关系,就可以轻松转换,主要记住并,连接,闭包三种含义,遇到相应的题目就迎刃而解,目前还处在学习阶段,欢迎大佬指正,感谢大家的支持。