NFA到DFA的转换.ppt

2.2.3 NFA到DFA的转换 定义2.26 有限自动机的等价 对于给定的限自动机M1和 M2,如果有 L(M1) = L(M2),则称有限自动机M1和 M2等价。 定理2.5 对于每一个非确定自动机M,存在一个确定自动机M’,使得L(M)=L(M’)。 NFA确定化:由NFA构造出与其等价的DFA称为NFA确定化。 介绍两个重要函数: 状态集I的?_闭包 设I是NFA M状态集的子集,定义I的 ?闭包?_CLOSURE(I)为: 若q ∈I ,则q ∈?_CLOSURE(I) 若q ∈I,那么从q出发经任意条ε弧而能到达的任何状态q’都属于?_CLOSURE(I)。 例: ?_CLOSURE({1})={1,2} 状态子集I的a转换 若I={S1,…, Sm }是NFA的状态集的一个子集(状态子集),a??, 则定义: Ia = ?_CLOSURE(J ) 其中: J = f (S1,a) ? f (S2,a)…?f(Sm,a) 例: {1,2}a =?_CLOSURE(J ) J=f(1,a) ? f(2,a)={4,5} {1,2}a =?_CLOSURE({4,5} )={4,5,7,6,2} NFA A‘到DFA A的转换过程(确定化): 1.令I0= ?_CLOSURE(S0 )作为DFA的初始状态。其中S0 为NFA初始状态集。 2.若DFA中的每个状态都经过本步骤处理过.则转步骤3;否则任选一个未经本步骤处理的DFA状态Si,对每一个a??,进行下述处理: ①计算 Sj = Sia ② 若Sj≠Φ ,则令f(Si,a)= Sj , 若Sj不为当前DFA的状态,则将其作为DFA的一个状态。 转步骤2。 3.若S’ =[S1,…,Sn]是A的一个状态,且其中存在一个Si是A’的终止状态,则令S’为A的终止状态。 例:将如下的NFA转化为DFA 练习题:将如下的NFA转化为DFA 2.2.4 DFA的化简 DFA的化简的必要性 等价状态 定义1 设DFA M 的两个状态q1和q2 , 如果对任意输入的符号串x,从q1和q2出发,总是同时到达接受状态或拒绝状态中,则称q1和q2是等价的。如果q1和q2不等价,则称q1和q2是可区分的。 定义1的另一种表示: 对DFA中的两个状态S1和S2,如果将它们看作是初始状态,所接受的符号串相同,则定义S1和S2是等价的。 注意:DFA的终止状态和非终止状态是不等价的。 无关状态(多余状态) 从有限自动机的初始状态开始,任何输入序列都不能到达的那些状态称为无关状态(多余状态) 。 最小的DFA(化简了的DFA) 如果DFA M 没有无关状态,也没有彼此等价的状态,则称DFA M 是最小的(或规约的)。 无关状态(多余状态)的消除 例:消除下列自动机的无关状态 状态分离法 状态子集I对a(a∈Σ)是不可区分的 若I中元素对输入符a都转到相同的状态集中. 状态子集I对a(a∈Σ)是可区分的 若I中元素对输入符a转到不同的状态集中. 状态子集I对a(a∈Σ)进行划分 若I中元素对输入符a转到不同的状态集中,则分别将转到相同状态集中的状态组成一个新的状态集. 状态分离法的目标 S=S1 ∪S2 ∪…… ∪ Sn 其中: Si∩ Sj=Φ (i ≠ j时); 每个状态子集Si对任意a(a∈Σ)是不可区分的 ; 任何两个不同子集中的状态都是可区分的。 状态分离法算法 STEP1.求初始划分: S=非终止状态集∪终止状态集。 STEP2.若S中的每个子集对每一个a(a∈Σ)都是不可区分的,则转STEP3;否则对可分的子集按相应的a(a∈Σ)进行划分。 转STEP2。 STEP3.每个子集中元素合并为一个状态,含初始状态的集合为一个初始状态,只含终态的集合为一个终态,对边作相应的调整。 例: 对下图所示的DFA M进行最小化。 消除无关状态后的状态转换图: 最小化结果如下: * * 确定化的结果如下: b b b a a ? ? ? ? ? ? ? ? 0 1 2 4 3 5 6 7 8 9 10 1 2 3 4 5 6 7 a b c c b d 7 a b c b d 1 2 3 4 5 6 c 7 a b c b d 1 2 3 4 5 6 c a b c d 1 2 3 4 s6 s3 s8 s1 so S7* so s8 s6 s1 s3 s5 s6 s5 s4 s7 s

文档评论(0)

1亿VIP精品文档

相关文档