有穷状态自动机
2010-06-05 14:58
204 查看
有穷状态自动机(FA—finite automaton)是一个五元组:
M=(Q, Σ, δ, q0, F)
Q——状态的非空有穷集合.∀q∈Q,q称为M的一个状态.
Σ——输入字母表.
δ——状态转移函数,有时又叫作状态转换函数或者移动函数,δ:Q×Σ→Q,δ(q,a)=p.
q0——M的开始状态,也可叫作初始状态或启动状态.q0∈Q.
F——M的终止状态集合.F被Q包含.任给q∈F,q称为M的终止状态.
对有穷状态自动机的介绍主要分为3个部分:确定的有穷状态自动机(DFA),不确定的有穷状态自动机(NFA)和带空移动的有穷状态自动机(ε-NFA).
有穷状态自动机对同一个状态下输入一个符号可以得到的转换是否是确定的分为确定的有穷状态自动机(deterministic finite automaton,DFA)和不确定的有穷状态自动机(non-deterministic finite automaton,NFA).换句话说,对于一个输入字符,NFA与DFA的差异是前者可以进入若干个状态,而后者只能进入一个惟一的状态. NFA和DFA的唯一区别就在于状态转移函数不一样.DFA是NFA的一个特例,它们是等价的.
如果FA的构造允许在某一状态下不读入字符--不移动读头,而只改变状态.在其状态转移图上来看,它允许了出现标记为ε的弧.这种空移动的NFA称为带空移动的NFA.ε-NFA在NFA的基础上,允许直接根据当前状态变换到新的状态.ε-NFA的出现,使某些语言更容易得到状态转移图.
NFA与DFA是等价的,ε-NFA与DFA是等价的.它们统称FA.
FA是正则语言的识别模型.下面是几种构造:
DFA=>右线性文法
(1)删除不可达和陷阱状态
(2)由δ(q,a)=p,得q->ap.若p∈F,增加q->a.开始状态为开始符号q.
(3)考察ε.若有,在保证开始符号不出现在产生式右部前提下,增加q->ε.
DFA=>左线性文法
(1)删除不可达和陷阱状态
(2)由δ(q,a)=p,得p->qa.若q为开始状态,增加p->a.若p∈F,增加Z->qa(Z为新引入开始状态).若q为开始状态,且p∈F,增加Z->a.
(3)考察ε.若有,在保证开始符号不出现在产生式右部前提下,增加q->ε.
右线性文法=>FA
(1)A->aB,得B∈δ(A,a).A->a,得Z∈δ(A,a)(Z为新引入开始状态)开始符号为开始状态S.
(2)考察ε.若有,在保证开始符号不出现在产生式右部前提下,增加Z∈δ(S,ε).
左线性文法=>FA
(1)A->a,得A∈δ(Z,a)(Z为新引入开始状态).A->Ba,得A∈δ(B,a),开始符号为终止符号.
(2)考察ε.若有,在保证开始符号不出现在产生式右部前提下,增加Z∈δ(S,ε).
M=(Q, Σ, δ, q0, F)
Q——状态的非空有穷集合.∀q∈Q,q称为M的一个状态.
Σ——输入字母表.
δ——状态转移函数,有时又叫作状态转换函数或者移动函数,δ:Q×Σ→Q,δ(q,a)=p.
q0——M的开始状态,也可叫作初始状态或启动状态.q0∈Q.
F——M的终止状态集合.F被Q包含.任给q∈F,q称为M的终止状态.
对有穷状态自动机的介绍主要分为3个部分:确定的有穷状态自动机(DFA),不确定的有穷状态自动机(NFA)和带空移动的有穷状态自动机(ε-NFA).
有穷状态自动机对同一个状态下输入一个符号可以得到的转换是否是确定的分为确定的有穷状态自动机(deterministic finite automaton,DFA)和不确定的有穷状态自动机(non-deterministic finite automaton,NFA).换句话说,对于一个输入字符,NFA与DFA的差异是前者可以进入若干个状态,而后者只能进入一个惟一的状态. NFA和DFA的唯一区别就在于状态转移函数不一样.DFA是NFA的一个特例,它们是等价的.
如果FA的构造允许在某一状态下不读入字符--不移动读头,而只改变状态.在其状态转移图上来看,它允许了出现标记为ε的弧.这种空移动的NFA称为带空移动的NFA.ε-NFA在NFA的基础上,允许直接根据当前状态变换到新的状态.ε-NFA的出现,使某些语言更容易得到状态转移图.
NFA与DFA是等价的,ε-NFA与DFA是等价的.它们统称FA.
FA是正则语言的识别模型.下面是几种构造:
DFA=>右线性文法
(1)删除不可达和陷阱状态
(2)由δ(q,a)=p,得q->ap.若p∈F,增加q->a.开始状态为开始符号q.
(3)考察ε.若有,在保证开始符号不出现在产生式右部前提下,增加q->ε.
DFA=>左线性文法
(1)删除不可达和陷阱状态
(2)由δ(q,a)=p,得p->qa.若q为开始状态,增加p->a.若p∈F,增加Z->qa(Z为新引入开始状态).若q为开始状态,且p∈F,增加Z->a.
(3)考察ε.若有,在保证开始符号不出现在产生式右部前提下,增加q->ε.
右线性文法=>FA
(1)A->aB,得B∈δ(A,a).A->a,得Z∈δ(A,a)(Z为新引入开始状态)开始符号为开始状态S.
(2)考察ε.若有,在保证开始符号不出现在产生式右部前提下,增加Z∈δ(S,ε).
左线性文法=>FA
(1)A->a,得A∈δ(Z,a)(Z为新引入开始状态).A->Ba,得A∈δ(B,a),开始符号为终止符号.
(2)考察ε.若有,在保证开始符号不出现在产生式右部前提下,增加Z∈δ(S,ε).
相关文章推荐
- 形式语言与自动机之语言识别机器——有穷状态自动机
- java实现的有穷状态自动机(FA)
- 构造该正规式的有穷状态自动机
- hdu2825(AC自动机+状态压缩dp)
- hdu 3247(ac自动机+状态压缩dp+最短路)
- 【HDU2825】Wireless Password,AC自动机+状态压缩DP
- NEFU704(AC自动机+状态压缩)
- hdu 2825(ac自动机+状态压缩dp)
- K:有限状态自动机
- HDU 4511 (AC自动机+状态压缩DP)
- HDU 2825 Wireless Password(AC自动机+状态压缩DP)
- 用C语言实现有限状态自动机FSM
- HDU 3247 Resource Archiver(AC自动机+状态压缩dp+最短路BFS)
- hdu4057(AC自动机+状态压缩dp)
- BZOJ[1195][HNOI2006]最短母串 AC自动机+状态压缩
- HDU 2825 Wireless Password(AC自动机+状态压缩DP)
- Hdu 4057 Rescue the Rabbit (AC自动机+状态压缩dp) - 2011 ACM-ICPC Dalian Regional Contest Problem G
- HDU 4057 Rescue the Rabbit(11年大连,AC自动机+状态压缩DP)
- HDOJ 4057 - Rescue the Rabbit 简单的AC自动机+状态压缩DP
- hdu 4758 Walk Through Squares(AC自动机+状态压缩DP)