有穷状态自动机
来源:互联网 发布:百度电脑软件管家 编辑:程序博客网 时间:2024/05/16 23:55
有穷状态自动机(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,ε).
- 有穷状态自动机
- java实现的有穷状态自动机(FA)
- 有穷自动机
- 有穷自动机
- 确定有穷自动机
- 形式语言与自动机之语言识别机器——有穷状态自动机
- 用有穷自动机解析Cookie
- 有穷自动机的构造实验
- 利用有穷自动机匹配字符串
- 有穷自动机的相关概念
- 正则表达式与有穷自动机
- 确定有穷自动机测试代码
- 自动机理论、语言和计算导论---有穷自动机:确定型有穷自动机(DFA)
- 用有穷自动机解一道面试题
- 确定的有穷自动机正则表达式求值
- 不确定有穷自动机正则表达式求值
- 自己动手开发编译器(三)有穷自动机
- 编译原理,确定有穷自动机DFA最小化
- Ubuntu 7.10配置SSH服务
- 邻接矩阵(Adjacency Matrix)
- Struts1.x 跨站脚本(XSS)漏洞的解决
- 使用Memory Analyzer tool(MAT)分析内存泄漏(一)
- 邻接多重表(Adjacency Multilist)
- 有穷状态自动机
- 广度优先遍历和深度优先遍历
- Huffman编码
- 十字链表
- 切实反思“形式化方法”-David Lorge Parnas
- 编程新手编写代码注意事项
- 如何在vi 中设置tab键为4,显示行号
- Cross Words
- policy-based design