有穷状态自动机

来源:互联网 发布:百度电脑软件管家 编辑:程序博客网 时间: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,ε).

 

原创粉丝点击