将用于电子邮件验证的NFA转换为DFA

时间:2020-09-18 18:33:17

标签: dfa nfa

任何人都可以帮助将用于此电子邮件验证的NFA转换为DFA吗?

Image For Email Validation NFA

为了进行转换,我首先创建了状态转换表,然后有人可以帮助创建DFA吗?

NFA State Transition Table

1 个答案:

答案 0 :(得分:1)

从您的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"]
}