NFA确定化为DFA 并最小化DFA

把 NFA 确定化为 DFA 的算法实现

1)转换思路

由非确定的有限自动机出发构造与之等价的确定的有限自动机的办法是确定的有限自动机的状态对应于非确定的有限自动机的状态集合,即要使转换后的DFA的每一个状态对应NFA的一组状态。该DFA使用它的状态去记录在NFA读入一个输入符号后可能到达的所有状态,也就是说,在读入符号串a1a2a3…an之后,该DFA处在这样一个状态,该状态表示这个NFA的状态的一个子集T,而T是从NFA的开始状态沿着某个标记为a1a2a3…an的路径可以到达的那些状态。

2)消除空转移

消除N—>ε形式的产生式,即消除空转移。状态集合I的a弧转换Ia:定义为一状态集,是指从状态集I出发先经过a弧后再经过若干条ε弧而能到达的状态的集合。可以写作:Ia= ε-closure(J),J=move(I,a),其中,J是从I中任一状态出发经过一条a弧到达的状态集合记为move(I,a)。

s 表示NFA的状态,T 表示NFA的状态集合,a表示一个input symbol

ε-transition(ε转换)就是说input symbol为ε时的transition(转换) 

3)数据流程图

NFA确定化为DFA 并最小化DFA_第1张图片

 

 

 

 

 

 

 

 

 

 

实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)

5. 把 NFA 确定化为 DFA 的算法实现

实现NFA例题为:

NFA M=({S,P,Z},{0,1},f,{s,p},{z})

其中

f(s,0)={p}        f(z,0)={p}          f(p,1)={z}

f(z,1)={p}        f(s,1)={s,z}

根据例题输入NFA各边的信息得出DFA结果如下图

NFA确定化为DFA 并最小化DFA_第2张图片

 

NFA转DFA 源代码见https://download.csdn.net/download/gyx1549624673/10840160

你可能感兴趣的:(实验讲解附代码)