[英]DFA to regular expression
我已经阅读了一些关于灵魂的技巧和教程,尤其是关于Stackoverflow的教程,但是在解决特定问题上无济于事。 首先,我有以下DFA:
并可以将其简化为:
这样我在(aa | ba | cc)c处有正则表达式,但是缺少返回的d。 使用http://hackingoff.com/compilers/regular-expression-to-nfa-dfa进行了如此广泛的检查,它看起来就像我的起始DFA,但没有d。 我做了很多尝试,但是非常不确定如何将d写入RE。
正如revo指出的那样,您建议的顺序不太正确。 正确的序列是(aa|ba|c)c
。
整个DFA的正则表达式版本(以编程语言显示)为
/^(?:aa|ba|c)c(?:d(?:aa|ba|c)c)*$/
正式的正则表达式为
(aa|ba|c)c(d(aa|ba|c)c)*
(?:aa|ba|cc)c
是您已经弄清楚的第一个序列(从q0
到q6
所有内容,而没有从q6
返回q0
的d
路径)。
出现d
,基本上您将再次需要上述序列。 包含d
的序列的第二个实例可以重复任意次,因此您可以使用*
量词。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.