正则表达式中全字的最小DFA

时间:2017-07-05 18:12:34

标签: regex dfa

在为正则表达式创建DFA时,我注意到整个单词会增加状态数,即使在分析上,它们看起来与状态较少的正则表达式类似。

例如,对我来说,(a | b)+看起来与(hello | world)+

相同

如果我有一个匹配的字符串,用“a”和“b”反复找到/替换“hello”与“a”和“world”相反。所以我的问题是,为什么“你好”和“世界”不算作单一状态?

1 个答案:

答案 0 :(得分:1)

因为使用更简单的状态定义来实现DFA是非常简单的,以牺牲更多状态为代价。您的建议可以很好地描述您希望DFA如何工作,并与传统的DFA保持直接对应。但它不允许你再说什么了。

它类似于使用NFA:它们更容易设计和(可能)思考,但没有更多的功能,并且有一个明确定义的算法将它们转换为DFA(再次,成本介绍国家)。

将DFA想象为使用单字符转换作为正则表达式的“机器语言”(与正则表达式不同,为了得到迂腐)。