- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例3.10
NDFA =(Q,,t,Q0,F)其中 Q={q0, q1, q2, q3}, ={x, y}, Q0={q0}, F={q1}. t(q0,x)={q1, q2}, t(q0,y )={q0}, t(q1, x)={q0}, t(q1,y )={q1,q2}, t(q2,x)={q3}, t(q2,y) ={q3}, t(q3,x)={q1,q3}, t(q3,y)={q3} DFA =(Q’, , t’,q0, F’). (1) ={x,y}; (2)Q’={[q0], [q1], [q2], [q3], [q0, q1], [q0, q2], [q0, q3], [q1, q2], [q1, q3], [q2, q3], [q0, q1, q2], [q0, q1, q3], [q0, q2, q3], [q1, q2, q3], [q0, q1, q2, q3]} (3)定义映射t’: t’([q0], x)=[q1,q2], t’([q0], y)=[q0], t’([q1], x)=[q0], t’([q1], y)=[q1, q2], t’([q2], x)=[q3], t’([q2], y)=[q3], t’([q3], x)=[q1, q3], t’([q3], y)=[q3], t’([q0, q1], x)=[q0, q1,q2], t’([q0, q1], y)=[q0, q1,q2], …. t’([q0, q1 , q2 , q3], x)=[q0, q1,q2 ,q3], t’([q0, q1 , q2 , q3], y)=[q0, q1,q2 ,q3]. (4)DFA的开始状态q0’=[q0] (5) DFA的开始状态集合F=[q1], [q0, q1], [q2, q1], [q3, q1], [q0, q1, q2], [q0, q1, q3], [q1, q2, q3], [q1, q2, q3 , q4]
例3.1状态转换表
DFSA 例3.2
DFA A=({q0, q1, q2, q3}, {a,b}, t, q0, {q0})其 中 t 定义为:
t(q0 ,a)= q1 t( q2 ,a)= q3
t(q0 ,b)= q3
t(q1 ,a)=q0
t( q2 ,b)= q1
t( q3 ,a)= q2
t(q1 ,b)= q2
t( q3 ,b)= q0
状态转换表
t(q0 ,a)= q1 t(q0 ,b)= q3 t(q1 ,a)=q0 t(q1 ,b)= q2
状态 字符
t( q2 ,a)= q3 t( q2 ,b)= q1 t( q3 ,a)= q2 t( q3 ,b)= q0
q0 q1 q2 q3
a q1 q0 q3 q2
DFSA 可接受的符号串
DFSA=(Q, ∑, t, q0, F), 扩充的映射t: Q×Σ*→Q 定义为:
(1)t(q,)= q
q∈Q, a∈∑, ∈ ∑*
(2) t(q, a)=t(t(q,a), ) 其中
DFSA=(Q, ∑, t, q0, F),如果t(q0, )=q∈F,则符号
x
q2
y
x,y
y
q1
x
q3
x,y
NDFSA与DFSA的区别
• NDFSA有一个开始状态集合,而DFA只有一个 开始状态; • NDFSA的映射是Q Q的子集,是一个多值 映射,而DFSA是Q Q的一个单值映射。
例3.7 证明符号串xyx能被例3.6中的NDFSA,所 接受。 证明:因为t(q0, xyx)=t(q1,yx) t(q2,yx) (∵t(q0, x)={q1, q2})=t(q1,x) t(q2,x) t(q3,x) (∵t(q1, y)={q1, q2}, t(q2, y)={q3})={q0} {q3}
q0
q1
a b
q2
a
q4
a b
a
q0
q2
b
b
q3
b
q3
b
(1)
(2)
确定化-子集法(自学)
• 给定一个NDFSA A=(Q, ∑, t, Q0, F)是一个非确定的有穷 自动机,一定可以构造一个和它等价的确定有穷自动机 DFSA A’=(Q’, ∑, t’, q0, F’),即L(A)=L(A’)。
例子
NDFSA N=({S,P,Z},{0,1},t,{S,P}, {Z}) 其中 N状态图表示 t(S,0)={P} 1
t(S,1)={S,Z} t(P,1)={Z} t(Z,0)={P} t(Z,1)={P}
1 S 0,1 Z 1
0
P
例子3.6
NDFSA =(Q,,t,Q0,F)其中 Q={q0, q1, q2, q3}, ={x, y}, Q0={q0}, F={q1}. t(q0,x)={q1, q2}, t(q0,y )={q0}, t(q1,x)={q0}, t(q1,y )={q1,q2} t(q2,x)={q3}, t(q2,y)={q3} t(q3,x)={q1,q3}, t(q3,y)={q3} NDFA状态图表示 y q0 x x
非确定的有穷自动机NDFSA
• 定义3.4 一个非确定的有穷自动机是一个五元组, NDFA=Q,,t,Q0,F,其中Q为状态的有穷非空集, 为有穷输入字母表,t为Q 到Q的子集(多值映射), Q0Q是初始状态集,F Q为终止状态集。
一个确定的有穷自动机(DFSA)M是一个五元组:M=(Q,Σ,t,q0,F) 其中
{q1, q3}={q0, q1, q3}
∵q1∈ t(q0, xyx)={q0, q1, q3}, q1 ∈F 所以xyx能被该NDFSA所接受。
空移环路的寻找
• 如果自动机的弧上允许标记,则称此自动 机为自动机,记为NDFSA或DFSA.
q1 q2 q1
q2
q3
(a)
q1 q2
3 t是转换函数,是在Q×Σ→Q上的映射,即,如: t=(q,x)=q’,(q,q’Q)就意味着,当前状态为q, 输入符为x时,将转换为下一个状态q’,我们把q’称作q 的一个后继状态;
4 q0 Q是唯一的一个开始状态; 5 F Q是一个终止状态集,它至少由一个终止状态组成。
状态转换表
FSA例3.1 :识别一个由带符号或无符号十进制数组成的语言。
终止状态
开始状态
有穷自动机DFSA定义3.1: 一个确定的有穷自动机(DFSA)M是一个五元组:M= (Q,Σ,t,q0,F)其中 1 Q是一个有穷集,它的每个元素称为一个状态; 2 Σ 是一个有穷字母表,它的每个元素称为一个输入符 号,所以也称Σ 为输入符号字母表;
确定化-造表法
子集法的确定,如果状态数n很大,确定化 后的状态数将更大2n-1,并且其中很多是不可到 达的状态而造表法,更加简单而有效。 步骤: 确定DFSA的开始状态,从开始状态开始分别计算 对不同输入字母的映象,如果产生新的状态,则 继续计算新状态的映象,重复这个过程一直到没 有新的状态出现为止。
b q3 q2 q1 q0
DFSA 的状态图表示
t(q0 ,a)= q1 t(q0 ,b)= q3 t( q2 ,a)= q3 t( q2 ,b)= q1
t(q1 ,a)=q0
t(q1 ,b)= q2
t( q3 ,a)= q2
b
t( q3 ,b)= q0
q2
a a
b
q1
a
a
q3
b
q0
b
DFSA 例3.3:DFSA M=({0,1,2,3},{a,b}, f,0,{3}), 其中:f素称为一个状态;
2 Σ 是一个有穷字母表,它的每个元素称为一个输入符号,所以也称Σ 为 输入符号字母表; 3 t是转换函数,是在Q×Σ→Q上的映射,即,如: t=(q,x)=q’,(q, q’Q)就意味着,当前状态为q,输入符为x时,将转换为下一个状态q’, 我们把q’称作q的一个后继状态; 4 q0 Q是唯一的一个开始状态; 5 F Q是一个终止状态集,它至少由一个终止状态组成。
第3章 有穷自动机
• • • • • • 有穷自动机形式定义 NDFSA DFSA 的转换 正规文法与有穷自动机 正规表达式与FA DFSA在计算机中的表示 小结
有穷自动机 有穷自动机(也称有限自动机)作为一种识别装 置,它能准确地识别正规集,即识别正规文法 所定义的语言和正规式所表示的集合,引入有 穷自动机这个理论,正是为词法分析程序的自 动构造寻找特殊的方法和工具。 有穷自动机分为两类:确定的有穷自动机 (Deterministic Finite State Automata)和不确定 的有穷自动机(NonDeterministic Finite State Automata) 。
t(q0 ,a)= q1
t(q0 ,b)= q3 t(q1 ,a)=q0
t( q2 ,a)= q3
t( q2 ,b)= q1 t( q3 ,a)= q2
t(q1 ,b)= q2
t( q3 ,b)= q0
q2 a a
b b
q1
a a
b b
q3
q0
自动机的等价
定义3.2 给定两个有穷自动机M和M’,如果L(M)=L(M’),则 称自动机M和M’等价。 例3.4 DFSA M=({q0,q1}, {a,b}, t, q0, {q0} ), 其中t(q0,a)=q1, t(q1,b)=q0. DFSA M’=({q0’,q1’,q2’}, {a,b}, t’, q0’, {q2’} ), 其中 t’(q0’,a)=q1’, t’(q1’,b)=q2’, t’(q2’,a)=q1’. 则L(M)=L(M’)={(ab)n|n1}, 所以自动机M,M’等价。