问题描述
任何人都可以帮助将用于此电子邮件验证的NFA转换为DFA吗?
为了进行转换,我首先创建了状态转换表,然后有人可以帮助创建DFA吗?
解决方法
从您的epsilon瓶盖生产DFA似乎很直接。每个闭包形成单个DFA状态,并且DFA中的转换是NFAε闭包中节点的转换的集合。这是您的e-closures中DFA的转换表:
| a-z | 0-9 | @ | _ | . | com
---|-----|-----|---|----|----|-----
A^ | AB | | | | |
AB | AB | AB | C | | |
C | CD | CD | | CD | |
CD | CD | CD | | CD | CE |
CE | CD | CD | | CD | | F
F$ | | | | | |
这是此表(view on graphviz)的DFA:
digraph G {
rankdir=LR;
node [shape=point]; qi;
node [shape=doublecircle]; F;
node [shape=circle];
qi -> A;
A -> AB [label="a-z"]
AB -> AB [label="a-z | 0-9"];
AB -> C [label="@"]
C -> CD [label="a-z | 0-9 | _"]
CD -> CD [label="a-z | 0-9 | _"]
CD -> CE [label="."]
CE -> CD [label="a-z | 0-9 | _"]
CE -> F [label="com"]
}