有限状态自动机
三、不确定有限自动机(NFA)(续)
不确定有限自动机所接收的语言
自动机的等价
两个自动机能够接收相同的语言,则称这两个自 动机等价.
四、NFA与DFA的变换
1. 实例
NFA与DFA的变换实例
例:AN=(S,,’,K,F) 其中: S={S0, S1, S2}; ={a,b} K= {S0, S1}; F={S2}; 转换函数: ’(S0,a)= S1; ’(S0,b)= {S0, S2}; ’(S1,b)= S2; ’(S2,b)=S1;
终止状态
b
aa,aaa,aab,aaabb,...
二、确定有限自动机(DFA)(续3)
确定有限状态机:确定有限状态机定义为一个五元 组:AD=(S,,,K,F) 其中: S:状态的非空集; :输入字母表 :状态转换函数. S S的单值映射; (Si,a)=Sj, Si, SjS K:初始状态;KS F:终止状态; FS
2.在状态之间插入一些状态,使得任意两个状态之间至多 产生一个符号.
3.按下面的方法构造状态图;
语法图与自动机(续)
3.按下面的方法构造状态图; 如 si a sj 则 Si 则 Si
a
Sj Sj
如
si
sj
4.消除空串边,从而得到状态图
实例P71
语法图与自动机(续)
正则表达式 自动机
二、确定有限自动机(DFA)(续5)
状态转换矩阵:
输入 状态
a S1 S0 S2 S1
b
c
S0 S1 S2 S3
S2 S1 S3
S3
二、确定有限自动机(DFA)(续6)
状态转换图:
a
a b
S1 S2
S0
a
b c
a
b
S3
AD所接收的语言:(P57) ab abaa ac acab acbbbb
语法图:
<标识符> <字母>
<字母>
<数字>
语法图与自动机(续)
文 法:G=({字母,a,b,…z},{a,b,…z},字母,P) P: <字母>::= a|b|c|d|….|z
语法图:
<字母>
a
b
c
d
...
z
语法图与自动机(续)
文 法:G=({数字,0,1,2,…9},{0,1,2,…9},数字,P) P: <数字>::= 0|1|2|3|….|9
aa
aaa
aca
acabb
二、确定有限自动机(DFA)(续7)
状态机所接收的语言:(符号串的集合)
S0 S0 S0
a
a a
a
S1 S1
L(DFA)={,a,aa,aaa...}
a L(DFA)={a,aa,aaa...}
a
S1
a
S2
L(DFA)={aa,aa,aaa,aab,aaabbab...}
1.至少存在一个初始结点 2.存在一些终止结点(可空) 3.在每个边上有字母表上的符号串(也可以是 空串)
约定:初始结点:
终止结点:
一、转换图(TG)(续1)
转换图:
01
2
00
1 10
3
11
路:转换图中从某一初始结点到某一终止结点的序列. 对于某一符号串a,在转换图中如存在一条路产生a,则称 转换图接收(或识别)符号串a,否则符号串a不能被接收. 例如字符串0111为该自动机接收(红色路径表示).
3、重复2,直至1中所指出的边消除 4、如果还有边,则一定有闭路,如图1。此时把这个闭路中的状态合并为 一个结点。如图2。
S
a
A
B
图1
S
a
A
图2
语法图与自动机
语法图:文法中各个语法成分的图解表示. 方框----->语法成分 圆框----->单词. 例:文 法:G=({标识符,字母,数字},{字母,数字},标识符,P) P: <标识符>::=<字母>{<字母>|<数字>}
S0
S0
S1
S
S1
e e1 e2
e 1 |e 2
e
S
S1
e1
e1
S1
e2
S1
S2
S
e2
例:AD=(S,,,K,F) 其中: S={[S0,S1],[S1],[S0,S2],[S2],[S0,S1,S2]}; ={a,b} K= {[S0,S1]}; F={[S0,S2],[S2],[S0,S1,S2]};
NFA与DFA的变换实例(续)
状态转换矩阵:
输入 状态 [S 0 ,S 1 ] [S 1 ] [S 0 ,S 2 ] [S 2 ] [S 0 ,S 1 ,S 2 ] [S 1 ] [S 1 ] a [S 1 ] b [S 0 , S 2 ] [S 2 ] [S 0 ,S 1 ,S 2 ] [S 1 ] [S 0 ,S 1 ,S 2 ]
(三)
自动机
一、转换图 二、确定有限自动机(DFA) 三、不确定有限自动机(NFA) 四、NFA与DFA的变换 五、-自动机 六、语法图与自动机
引言
程序设计语言: 。生成系统:文 法 。识别系统:自动机
自动机:具有离散输入输出系统的一种数学模型。
一、转换图(TG)
转换图:字母表上的有向图。 条件:
NFA与DFA的变换实例(续)
状态转换矩阵:
输入 状态
a S1
b S 0, S 2 S2 S1
S0 S1 S2
NFA与DFA的变换实例(续)
状态转换图:
a
S0
b
a
S1
b
b
S2
b
NFA与DFA的变换实例(续)
[S1]
K=[S0 ,S1]
[S2]
[S0 ,S2]
[S0 ,S2, S2]
NFA与DFA的变换实例(续)
为另一状态,则改变后的状态被称为后继状态. 如果有限状态机每次转换后的状态是唯一的则称之 为确定有限状态机(DFA);如果转换后的后继状态不 是唯一的则称之为不确定有限自动机(NFA);
二、确定有限自动机(DFA始状态
a
S1
a
S2
a
S0的后继状态
b
三、不确定有限自动机(NFA)
不确定有限状态机:不确定有限状态机定义为一个五元
组:AD=(S,,,K,F) 其中: S:状态的非空集; :输入字母表 :状态转换函数. S S的映射; (Si,a)={Sj, Sk, Sm, Sn...} Si, Sj, Sk, Sm, Sn S K:初始状态集;KS F:终止状态集; FS DFA与NFA的区别:(1)NFA允许多个初始状态;(2)同一输入 字符可以有多个后继状态;
B
ai
图1
2、设状态B的直接后继状态为S1,S2,。。。Sk,如图2,其中ai
A
ai
B
Si
图2
则:1)消除边,引进新边,如图3
A
Si
图3
2)如果B为终止状态,则A即为终止状态 3)如果存在一条从初始状态到A的空路,则B为初始状态,即图4 ai 图4 B Si
由FA构造等价FA步骤:
语法图:
<数字>
0
1
2
3
...
9
语法图与自动机(续)
<字母>
<标识符> <字母>
<数字>
L L 正则表达式 L(L|D)* D
语法图与自动机(续)
正则表达式与自动机
对于任一正则表达式e,总存在一确定有限自动机A使 得L(A)=L(e),反之亦然. 语法图与自动机: 由语法图构造自动机步骤:
1.分别在语法图的入口与出口引进初始状态和终止状态.
NFA与DFA的变换实例(续)
S ,S
0
b
1
S0 ,S2
b
S0 ,S1 ,S2
a
S1
a
b
b
S2
b
五、-自动机
1、-自动机:边上有空符号串的自动机. FA
2、由FA构造等价FA。
由FA构造等价FA步骤:
1、在FA中寻找边,(图1)如果状态B没有边输出,则步骤2,否则步骤4
A
被转换图TG所接收的符号串集合记为L(TG)
二、确定有限自动机(DFA)
有限自动机(Finite Automata):
a b c d d e e f g ……..
输入带
控制器 有限自动机=有限控制器+字符输入带
二、确定有限自动机(DFA)(续1)
初始状态: 终止状态(接收状态): 后继状态:有限状态机在读入一个字符时,其状态改变
二、确定有限自动机(DFA)(续4)
例:AD=(S,,,K,F) 其中: S={S0, S1, S2, S3}; ={a,b,c} K= S0; F={S2, S3}; 转换函数: (S0,a)= S1; (S1,a)= S0; (S1,b)= S2; (S1,c)= S3; (S2,a)= S2; (S2,b)=S1; (S3,a)= S1; (S3,b)= S3;