常见自动机综述

来源:互联网 发布:外汇mt4软件下载 编辑:程序博客网 时间:2024/06/07 23:17
有穷自动机

概念定义:有穷自动机涉及一些状态和当响应输入时,在状态之间的转移。

应用范围:用来构造许多不同种类的软件。

简单例子:这个开关的有穷自动机模型如图1-1所示,对所有的有穷状态机都一样,状态用圆圈表示。在这个例子中,命名了状态on(开)和off(关)。状态之间的箭头用输入来标记,表示作用在系统上的外部影响。这2个箭头都用push(按)来标记,表示当用户按这个按钮。这两个箭头的含义是:无论系统处在什么状态,当收到输入push时,就进入另一个状态。

    

图1-2显示的另一个自动机,词法分析器的一部分,这个自动机的任务是识别关键字then。



分类:确定型有穷自动机和非确定型有穷自动机。术语确定型指,在每个输入上存在且存在这样一个状态,自动机可以从当前状态转移到这个状态。

形式化定义:  一个确定型有穷自动机包括  :

1 一个有穷的状态集合 ,通常记作Q

2一个有穷的输入符号集合,通常记作Σ

3一个转移函数,以一个状态和一个输入符号作为变量,返回一个状态。转移函数通常记作δ。

在非形式化表示的自动机的图中,用状态之间的箭弧和箭弧上的标记来表示δ。如果q是一个状态,a是一个输入符号,则δ(q,a)是这样的p,使得p到q有带a标记的箭弧。

4一个终止状态,是Q中状态之一

5一个终结状态或接受状态的集合F。则F是Q的子集合

DFA表示确定型有穷自动机 A={Q, Σ,δ,q0,F}

形式化定义:  一个非确定型有穷自动机包括  :

实质上像DFA那样来表示NFA A={Q, Σ,δ,q0,F}

1其中Q是一个有穷的状态集合

2 Σ是一个有穷的输入符号集合

3q0是初始状态,属于Q

4F是终结状态的集合,是Q的子集合

5转移函数δ是一个Q钟的一个状态和Σ中一个输入符号作为变量并返回Q的一个子集合的函数,注意NFA与DFA之间的唯一区别就是在δ返回值的类型:在NFA的情况下,返回值是一个状态集合;而在DFA的情况下,返回值是单个状态.

下推自动机

定义:有一种类型的自动机能够定义上下文无关的语言,这种自动机称为下推自动机

我们可以非形式化的把下推自动机看作图2-1的装置。“有穷状态控制“用来一次从输入读入一个符号。下推自动机可以观察栈顶的符号,然后基于当前的状态,输入符号和栈顶符号来进行转移。


下推自动机(PDA)形式化定义

p=(Q,Σ,Τ,δ,qo,Z0,F)

Q:状态的有穷集合,就像有穷自动机里面的中的状态

Σ:输入符号的有穷集合

Τ:一个有限的堆栈字母表

δ:转移函数,δ的自变量是一个三元组δ(q,a,x)其中q是Q中的状态,a或者是Σ中的输入符

号,或者是空串ε。X是堆栈符号,属于T中的成员。δ 的输出是序对是(p,y)的有穷集合,其中p是新状态,y是堆栈符号串,y是用来代替栈顶符号X的。例如,如果y=ε,那么栈顶元素弹出;如果y=X,那么堆栈没有改变;如果y=YZ ,那么X 将要被Z代替,然后Y被推入栈中

qo:初始状态,在做任何转移之前,PDA处于这个状态

Z0:初始符号。开始时,PDA的堆栈中包含一个这个符号的一个实例

F:接受状态的集合。

图灵机

定义:一台图灵机是一个七元组,{Q,Σ,Γ,δ,q0,qaccept,qreject},其中 Q,Σ,Γ 都是有限集合,且满足

1.Q 是状态集合;

      2.Σ 是输入字母表,其中不包含特殊的空白符 □;

      3.Γ 是带字母表,其中 □∈Γ且Σ∈Γ ;

      4. δ:Q×「→Q×Γ×{L,R}是转移函数,其中L,R 表示读写头是向左移还是向右移;

      5.q0∈Q是起始状态;

      6. qaccept是接受状态。

      7.qreject是拒绝状态,且。qreject≠qaccept

       图灵机 M =(Q,Σ,Γ,δ,q0,qaccept,qreject) 将以如下方式运作:

  开始的时候将输入符号串 从左到右依此填在纸带的第 号格子上, 其他格子保持空白(即填以空白符)。M 的读写头指向第 0 号格子, M 处于状态 q0。机器开始运行后,按照转移函数 δ 所描述的规则进行计算。例如,若当前机器的状态为 q,读写头所指的格子中的符号为 x, 设 δ(q,x) = (q',x',L), 则机器进入新状态 q', 将读写头所指的格子中的符号改为 x', 然后将读写头向左移动一个格子。若在某一时刻,读写头所指的是第 0 号格子, 但根据转移函数它下一步将继续向左移,这时它停在原地不动。换句话说,读写头始终不移出纸带的左边界。若在某个时刻 M 根据转移函数进入了状态 qaccept, 则它立刻停机并接受输入的字符串;若在某个时刻 M 根据转移函数进入了状态 qreject, 则它立刻停机并拒绝输入的字符串。

图灵机基本术语:

         设M={Q,Σ,Γ,δ,q0,qaccept,qreject}是一台图灵机,

                  1、M的带描述是一个函数F:N->Γ,其中F(i)表示M的带上第i个格子中的符号

                  2、M的格局是一个三元组(F,q,e),其中F:N->Γ是当前的带描述,q∈Q是当前的状态,e∈N是当前读写头所处的位置

                  3、设C1=(F1,q1,e1),C2=(F2,q2,e2)是M的格局,设δ(q1,F1(e1))=(q,x,d),若满足q2=q,


  以及



    则称M从格局C1产生格局C2,记作C1->MC2

     4、设C=(F,q,e)为M的格局,若q=qreject则称C为拒绝格局;若q=qaccept则称C为接受格局;接受格局和拒绝格局

      统称为停机格局。设M是一台图灵机,将字符串w=w0w1…wn-1作为其输入,若存在格局序列C1,C2,…Ck使得

    1、C1是M在输入w上的起始格局,即C1=(F,q0,0),其中


  2、Ci->MCi+1,其中i=1,2,…,k-1

     3、Ck是接受格局

则称M接受字符串w,M所接受的所有字符串的集合称为M的语言,记作L(M)。

线性界限自动机

  1、 线性界限自动机的Σ中包括两个特殊符号#和$,分别表示输入链的左端和右端结束标志。

  2、线性界限自动机M的格局,以及两个格局之间转移关系的定义与图灵机的相同。

  3、线性界限自动机与图灵机的唯一不同是对读/写头位置的限制。

  4、在线性界限自动机中,对于读/写超出输入字符串长度范围时,转移动作没有定义。

  5、对于任何状态q∈Q和A∈Γ,如果映射δ(q,A)包含的成员(下一个状态)不超过一个,则线性界限自动机是确定的。

  如果L是一个上下文相关语言,则L由一个不确定的线性界限自动机所接受。反之,如果L被一个线性界限自动机所接受,则L是一个上下文相关语言。




1 0
原创粉丝点击