有时你可能会为同一个任务设计出两个不同的正则表达式,我想知道如何检查这两个正则表达式是否描述了相同的模式?
谢谢。
有没有一些算法可以进行检查?
有没有一些(在线)工具可以进行检查?
谢谢。
有没有一些算法可以进行检查?
有没有一些(在线)工具可以进行检查?
正则语言的等价性是可判定的(见Hopcroft,Motwani,Ullman:自动机理论、语言和计算导论,第4.4章),这也是最小化DFA的基础。直观地说,如果最小化后的DFA相等(重命名状态除外),那么由正则语言生成/接受的语言也是相同的。所以,你的第一个问题的答案是肯定的。
我确信有在线工具可以做到这点,但在最坏的情况下,您可以要求“flex”或类似工具来最小化自动机,并实现一个简单的工具来检查它们是否可以一致地重命名。
这个SO条目也相关: