我想为具有以下约束的密码设计DFA:
[a-z]
[A-Z]
[0-9]
[!.@*_]
如何设计此DFA?
答案 0 :(得分:3)
此语言的任何DFA都需要至少记住
这至少给你至少18个状态,甚至不考虑长度限制。我认为你不会为这种语言找到一个简单的DFA。它会变得很大。
现在,您可以通过为每个限制构建一个DFA(这些都不是太糟糕)构建一个相当简单但非常庞大的DFA,然后进行多向产品构建以构建整个语言的DFA。我认为这是理论上最优雅的方法,实际上很容易用软件来表示。如果我必须真正构建DFA,我就是这样做的。