形式语言06章有限状态自动机和有限状态语言
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有限状态自动机将输入串扫描结束停 机时,如果有限状态自动机处于某一 个接收状态,则表示接收整个串;
有限状态自动机将输入串扫描结束停机时,如 果有限状态自动机没有处于任何的接收状态, 则表示不接收整个输入串;
有限状态自动机没有扫描完整个输入串就停机, 一定不会接收整个输入串;如果此时有限状态 自动机处于某一个接收状态,则说明已经扫描 过的串(是整个串的子串,而不是整个输入串) 能够被有限状态自动机接收。
有限状态自动机的动作简化为:
FSC根据当前的状态和当前带上的字符, 进行FSC状态的改变。
定义6-1 有限(有穷)状态自动机(接收机) 的定义
字母表∑上的有限状态接收机(FSAM)是 一个五元式,FSAM=(Q,∑,δ,q0,F),
其中: Q是一个有限状态的集合; ∑是字母表,也就是输入带上的字符的集合; q0∈Q是开始状态; FСQ是接收状态(终止状态)集合;
δ*(q, w) =δ*(q, xα) =δ*(δ(q, x),α)
定义6-7 FSAM接收的语言的定义 L(M)表示被FSAM=(Q,∑,δ,q0,
F)接收的语言,它在字母表∑上, 即L(M)С∑*,则 L(M)={w|w∈∑*且δ*(q0, w) ∈F}。
若语言LС∑*,对于某个有限状态自 动机M,有L=L(M),则称语言L为一个 有限状态语言(FSL)。
定义6-6 扩展的状态转换函数的形式 定义
δ*(q,ε)=q;
δ*(q, x)=δ(q, x);其中x 是一个字母;
对于串w=αx(x是一个字母,α是一 个字符串);
δ*(q, w) =δ*(q, αx) =δ(δ*(q, α),x);
或者:对于串w= xα(x是一个字母, α是一个字符串);
(4)系统中有一个状态,它是系统的开始状态。 (5)系统中还有一些状态表示它到目前为止所读
入的字符构成的字符串是语言的一个句子 有限状态自动机物理模型如图6-1所示。
一个输入存储带,带被分解为单元,每个单元 存放一个输入符号(字母表上的符号),整个 输入串从带的左端点开始存放,而带的右端可 以无限扩充;
第六章 有限状态自动机和有限状态语言
已经介绍过从产生语言的角度定义语言的 形式;下面从识别语言的角度来定义语言。
有限状态自动机(FSM “finite state machine” 或者FSA “finite state automaton”)是为研究有限内存的计算过 程和某些语言类而抽象出的一种计算模型。
Leabharlann Baidu
有限状态自动机拥有有限数量的状态,每 个状态可以迁移到零个或多个状态,输入 字串决定执行哪个状态的迁移。有限状态 自动机可以表示为一个有向图(称之为状 态转换图)。
有限状态自动机是自动机理论的研究对象。
有多种类型的有限状态自动机:接受器判 断是否接受输入;转换器对给定输入产生 一个输出。常见的转换器有Moore机与 Mealy机。Moore 机对每一个状态都附加 有输出动作,Mealy 机对每一个转移都附 加有输出动作。
标记。
一个圆圈代表一个状态,’→’指向的状 态是开始状态,两个圆圈代表的状态是接 收状态;在比较明确的情况下,可以用状 态图表示一个有限状态自动机,而有向边 的数目就是状态转换函数的个数。
6.2 有限状态自动机识别语言
定义6-3 有限状态自动机接收串的定义 对于有限状态自动机M,给定字母表∑上
注意2:
有限状态自动机的某个状态q,如果对于字母表 上的字母x没有对应的δ函数的定义,可以省略 掉该δ函数;或者定义一个特殊的状态:陷阱 状态qt。
对于陷阱状态,定义δ(q,x)=qt。 陷阱状态qt,仅仅有入口边,没有出口边,一定
不是开始状态。 此时,δ函数的个数 = |Q| * |∑|。
表示为函数形式:
δ(q0,0)=q1;δ(q0,1)=q1; δ(q1,0)= q1;δ(q1,1)= q0;
或者表示为状态矩阵的形式。如图6-2所 示。
Q
01
q0
q1 q1
q1
q1 q0
或者表示为状态图的形式。如图6-3所示。 状态图是一个有向、有循环的图。一个节点
表示一个状态;若有δ(q,x)= q′,则 状态q到状态q′有一条有向边,并用字母x作
定义6-8 有限状态自动机的瞬 时描述(格局)的定义
瞬时描述是一个二元式:qy;y∈∑*, 其中: y是输入带上还没有被扫描到的字符
串,FSC当前状态为q,读头将马上扫 描y串的最左边第1个符号。
格局可以发生转换(改变),格局发生转 换的原因是由于δ函数的一次作用。
如果当前格局为:qar,有δ函数:δ(q, a)= q′,则下一格局为: q′r ;
FSAM′=(Q,∑,δ,q0,Q-F),所以L2也是 FSL语言(右线性语言)。证毕。
注意: 此时的FSAM1的δ函数的个数 = |Q| * |∑|;即
需要陷阱状态。
6.3 有限状态自动机识别语言的例子
例6-12 接收语言L={ab}的有限状态自动机
思考
如果将该自动机的所有状态都设置为接收 状态(包括陷阱状态),那么,自动机接 收的语言是什么?
格局的转换可以记为:qar => q′r;
有限状态自动机初始格局为:q0w;
接收格局为:qαε
其中:
q0是开始状态,qα是某个接收状态;
使用=>*代表格局的多次转换。
也可以使用格局的转换方式定义有限 状态自动机接收的语言。
有限状态自动机接收的语言L(M)={w| q0w =>* qαε;w∈∑*且qα∈F}。
q2: 有限状态自动机在q1后又读到1个0(读到连 续的2个0);
q续3:的有3个限0状)态;自惟动一机的在接q2收后状又态读。到1个0(读到连
因此,基本的状态转移函数为:
δ(q0,0)=q1 δ(q1,0)=q2 δ(q2,0)=q3
δ是Q×∑→Q的状态转换函数,即δ(q, x)= q′;代表自动机在状态q时,扫描字符 x后到达状态q′。
理论上,有限状态自动机的状态转换函数 的个数应该为|Q|*|∑|。因为对于Q中的每 个状态,都应该定义扫描字母表∑上的每 个字母的状态转换函数。
例6-2 有限状态自动机FSAM=({ q0,q1}, {0,1},δ,q0,{q0}),其中δ为:
定义6-4 有限状态自动机接收的语言 的定义
对于字母表∑上的有限状态自动机M, 它能识别的所有串的集合,称为自动 机M能识别的语言。记为L(M)。
定义6-5 扩展的状态转换函数的定义
给定FSAM,定义扩展的状态转换函数 δ*:Q×∑*→Q为:δ*(q,w)=q′
即自动机在一个状态q时,扫描串w后 到达唯一确定的状态q′。
定义6-9 有限状态自动机停机的定义
有限状态自动机在下面两种情况下停机:
(1)有限状态自动机将输入串扫描结束时,或
(2)有限状态自动机的当前格局为:qar,而 有限状态自动机没有对应的δ函数的定义,即 δ(q,a)=? (此时,一定没有扫描完输入串)
注意1:
有限状态自动机停机时,并不一定接 收扫描过的串(已经读入的符号串);
U{ q→x|δ(q, x)∈F }
特别地,若开始状态也是接收状态, 则有q0→ε;
对于串w=w1w2…wn: 自动机M: δ(q0, w1)=q1 δ(q1, w2)=q2 …
δ(qn-2,wn-1)=qn-1 δ(qn-1, wn)=qn
则文法有
q0→w1q1; q1→w2q2;
定理6-10 每个FSL都是一个右线性语言。
证明思路:
假设L是字母表∑上的有限状态语言,且 L=L(FSAM ) , FSAM= ( Q , ∑ , δ , q0 , F),构造右线性文法G=(∑,Q,q0,P) (将自动机的状态当作是文法的非终结 符),其中P为:
{q→xq′|δ(q, x)=q′}
定理 右线性语言对补运算是封 闭的
证明: 假 设 L1 是 字 母 表 ∑ 上 的 有 限 状 态 语 言 , 且
L1=L(FSAM1),FSAM1=(Q,∑,δ,q0,F),而
FSAM2=(Q,∑,δ,q0,Q)接收的语言是右线
性语言L1的对应的全集。 对 L1 的 补 运 算 得 到 的 语 言 L2=L(FSAM′) ,
(1)系统具有有穷个状态,不同的状态代表不同的 意义。按照实际的需要,系统可以在不同的状态 下完成规定的任务。
(2)我们可以将输入字符串中出现的字符汇集在一 起构成一个字母表。系统处理的所有字符串都是 这个字母表上的字符串。
(3)系统在任何一个状态下,从输入字符串中读 入一个字符,根据当前状态和读入的这个字符 转到新的状态。
的串w=w1w2…wn;初始时,自动机M处于开 始 状 态 q0 ; 从 左 到 右 逐 个 字 符 地 扫 描 串 w ; 在δ(q0,w1)= q1的作用下,自动机M处于 状态q1,在δ(q1,w2)=q2的的作用下,自 动机M处于状态q2,…;
当将串w扫描结束后,若自动机处于某一 个接收状态,则称有限状态自动机能够接 收(识别)串w。对于自动机而言,从开 始状态开始,在扫描串的过程中,状态逐 个地变化,直到某个接收状态,我们把状 态的变化过程称为自动机的一条路径,而 这条路径上所标记的字符的连接,就是自 动机所识别的串。
如果将该自动机的接收状态和非接收 状态对调,即将状态S、M、和陷阱状态qt 都设置为接收状态,而将原来的接收状态 F设置为非接收状态,那么,自动机接收 的语言是什么?
构造有限状态自动机M,识别{0,1}上的 语言L={x000y|x,y∈{0,1}*}。
分析:
语言L={x000y|x,y∈{0∈0∈{0,1}*}, 该语言的特点是语言中的每个串都包含连 续的3个0(即每个串都包含子串000),
…
qn-2→wn-1qn-1 qn-1→wnqn
或 qn-1→wn (qn是接收状态)
所以 对自动机M: δ*(q, α)= q′ δ*(q0, w)∈F
对文法: q=>*αq′
q0=>*w
FSL={(0,1)0*1}*,接收该语言的有限状态自 动机
构造右线性文法产生该语言:
q0→0q1|1q1|ε q1→1q0|0q1|1
有限状态自动机还可以分成确定与非确定 两种。非确定有限状态自动机可以转化为 确定有限状态自动机。
有限状态自动机识别的语言是正则语言 RL。
有限状态自动机除了它在理论上的价值, 还在数字电路设计、词法分析、文本编辑 器程序等领域得到了应用。
6.1 有限状态自动机
有穷状态自动机是具有离散输入和输出的系统的 一种数学模型。其主要特点有以下几个方面:
一个有穷状态控制器(FSC),该控制器的状 态只能是有穷多个;FSC通过一个读头和带上 单元发生耦合,可以读出当前带上单元的字符。 初始时,读头对应带的最左单元,每读出一个 字符,读头向右移动一个单元(读头不允许向 左移动)。
有限状态自动机的一个动作为:
读头读出带上当前单元的字符;FSC根据 当前FSC的状态和读出的字符,改变FSC 的状态;并将读头向右移动一个单元。
因此,对于任何输入串,有限状态自动机 的任务就是要检查该输入串中是否存在子 串000,一旦发现输入串包含有000,则表 示输入串是个合法的句子(是属于语言中 的一个串),因此,在确认输入串包含 000后,就可以逐一地读入输入串的后面 的字符,并接收该输入串。
问题的关键是如何发现子串000。
由于字符是逐一读入的,当从输入串 中读入一个0时,它就有可能是000子 串的第1个0,就需要记住这个0;如 果紧接着读入的是字符1,则刚才读 入的0就不是子串000的第1个0,此时, 需要重新寻找000子串的第1个0;
如果紧接着读入的还是字符0,它就 有可能是000子串的第2个0,也就需 要记住这个0,继续读入字符,如果 还是0,则表明已经发现子串000,否 则,需要重新寻找子串000。
FSC的状态极其意义
q0: 有限状态自动机的开始状态;也是重新寻找 子串000时的状态
q1: 有限状态自动机读到第1个0,有可能是子 串000的第1个0;;
有限状态自动机将输入串扫描结束停机时,如 果有限状态自动机没有处于任何的接收状态, 则表示不接收整个输入串;
有限状态自动机没有扫描完整个输入串就停机, 一定不会接收整个输入串;如果此时有限状态 自动机处于某一个接收状态,则说明已经扫描 过的串(是整个串的子串,而不是整个输入串) 能够被有限状态自动机接收。
有限状态自动机的动作简化为:
FSC根据当前的状态和当前带上的字符, 进行FSC状态的改变。
定义6-1 有限(有穷)状态自动机(接收机) 的定义
字母表∑上的有限状态接收机(FSAM)是 一个五元式,FSAM=(Q,∑,δ,q0,F),
其中: Q是一个有限状态的集合; ∑是字母表,也就是输入带上的字符的集合; q0∈Q是开始状态; FСQ是接收状态(终止状态)集合;
δ*(q, w) =δ*(q, xα) =δ*(δ(q, x),α)
定义6-7 FSAM接收的语言的定义 L(M)表示被FSAM=(Q,∑,δ,q0,
F)接收的语言,它在字母表∑上, 即L(M)С∑*,则 L(M)={w|w∈∑*且δ*(q0, w) ∈F}。
若语言LС∑*,对于某个有限状态自 动机M,有L=L(M),则称语言L为一个 有限状态语言(FSL)。
定义6-6 扩展的状态转换函数的形式 定义
δ*(q,ε)=q;
δ*(q, x)=δ(q, x);其中x 是一个字母;
对于串w=αx(x是一个字母,α是一 个字符串);
δ*(q, w) =δ*(q, αx) =δ(δ*(q, α),x);
或者:对于串w= xα(x是一个字母, α是一个字符串);
(4)系统中有一个状态,它是系统的开始状态。 (5)系统中还有一些状态表示它到目前为止所读
入的字符构成的字符串是语言的一个句子 有限状态自动机物理模型如图6-1所示。
一个输入存储带,带被分解为单元,每个单元 存放一个输入符号(字母表上的符号),整个 输入串从带的左端点开始存放,而带的右端可 以无限扩充;
第六章 有限状态自动机和有限状态语言
已经介绍过从产生语言的角度定义语言的 形式;下面从识别语言的角度来定义语言。
有限状态自动机(FSM “finite state machine” 或者FSA “finite state automaton”)是为研究有限内存的计算过 程和某些语言类而抽象出的一种计算模型。
Leabharlann Baidu
有限状态自动机拥有有限数量的状态,每 个状态可以迁移到零个或多个状态,输入 字串决定执行哪个状态的迁移。有限状态 自动机可以表示为一个有向图(称之为状 态转换图)。
有限状态自动机是自动机理论的研究对象。
有多种类型的有限状态自动机:接受器判 断是否接受输入;转换器对给定输入产生 一个输出。常见的转换器有Moore机与 Mealy机。Moore 机对每一个状态都附加 有输出动作,Mealy 机对每一个转移都附 加有输出动作。
标记。
一个圆圈代表一个状态,’→’指向的状 态是开始状态,两个圆圈代表的状态是接 收状态;在比较明确的情况下,可以用状 态图表示一个有限状态自动机,而有向边 的数目就是状态转换函数的个数。
6.2 有限状态自动机识别语言
定义6-3 有限状态自动机接收串的定义 对于有限状态自动机M,给定字母表∑上
注意2:
有限状态自动机的某个状态q,如果对于字母表 上的字母x没有对应的δ函数的定义,可以省略 掉该δ函数;或者定义一个特殊的状态:陷阱 状态qt。
对于陷阱状态,定义δ(q,x)=qt。 陷阱状态qt,仅仅有入口边,没有出口边,一定
不是开始状态。 此时,δ函数的个数 = |Q| * |∑|。
表示为函数形式:
δ(q0,0)=q1;δ(q0,1)=q1; δ(q1,0)= q1;δ(q1,1)= q0;
或者表示为状态矩阵的形式。如图6-2所 示。
Q
01
q0
q1 q1
q1
q1 q0
或者表示为状态图的形式。如图6-3所示。 状态图是一个有向、有循环的图。一个节点
表示一个状态;若有δ(q,x)= q′,则 状态q到状态q′有一条有向边,并用字母x作
定义6-8 有限状态自动机的瞬 时描述(格局)的定义
瞬时描述是一个二元式:qy;y∈∑*, 其中: y是输入带上还没有被扫描到的字符
串,FSC当前状态为q,读头将马上扫 描y串的最左边第1个符号。
格局可以发生转换(改变),格局发生转 换的原因是由于δ函数的一次作用。
如果当前格局为:qar,有δ函数:δ(q, a)= q′,则下一格局为: q′r ;
FSAM′=(Q,∑,δ,q0,Q-F),所以L2也是 FSL语言(右线性语言)。证毕。
注意: 此时的FSAM1的δ函数的个数 = |Q| * |∑|;即
需要陷阱状态。
6.3 有限状态自动机识别语言的例子
例6-12 接收语言L={ab}的有限状态自动机
思考
如果将该自动机的所有状态都设置为接收 状态(包括陷阱状态),那么,自动机接 收的语言是什么?
格局的转换可以记为:qar => q′r;
有限状态自动机初始格局为:q0w;
接收格局为:qαε
其中:
q0是开始状态,qα是某个接收状态;
使用=>*代表格局的多次转换。
也可以使用格局的转换方式定义有限 状态自动机接收的语言。
有限状态自动机接收的语言L(M)={w| q0w =>* qαε;w∈∑*且qα∈F}。
q2: 有限状态自动机在q1后又读到1个0(读到连 续的2个0);
q续3:的有3个限0状)态;自惟动一机的在接q2收后状又态读。到1个0(读到连
因此,基本的状态转移函数为:
δ(q0,0)=q1 δ(q1,0)=q2 δ(q2,0)=q3
δ是Q×∑→Q的状态转换函数,即δ(q, x)= q′;代表自动机在状态q时,扫描字符 x后到达状态q′。
理论上,有限状态自动机的状态转换函数 的个数应该为|Q|*|∑|。因为对于Q中的每 个状态,都应该定义扫描字母表∑上的每 个字母的状态转换函数。
例6-2 有限状态自动机FSAM=({ q0,q1}, {0,1},δ,q0,{q0}),其中δ为:
定义6-4 有限状态自动机接收的语言 的定义
对于字母表∑上的有限状态自动机M, 它能识别的所有串的集合,称为自动 机M能识别的语言。记为L(M)。
定义6-5 扩展的状态转换函数的定义
给定FSAM,定义扩展的状态转换函数 δ*:Q×∑*→Q为:δ*(q,w)=q′
即自动机在一个状态q时,扫描串w后 到达唯一确定的状态q′。
定义6-9 有限状态自动机停机的定义
有限状态自动机在下面两种情况下停机:
(1)有限状态自动机将输入串扫描结束时,或
(2)有限状态自动机的当前格局为:qar,而 有限状态自动机没有对应的δ函数的定义,即 δ(q,a)=? (此时,一定没有扫描完输入串)
注意1:
有限状态自动机停机时,并不一定接 收扫描过的串(已经读入的符号串);
U{ q→x|δ(q, x)∈F }
特别地,若开始状态也是接收状态, 则有q0→ε;
对于串w=w1w2…wn: 自动机M: δ(q0, w1)=q1 δ(q1, w2)=q2 …
δ(qn-2,wn-1)=qn-1 δ(qn-1, wn)=qn
则文法有
q0→w1q1; q1→w2q2;
定理6-10 每个FSL都是一个右线性语言。
证明思路:
假设L是字母表∑上的有限状态语言,且 L=L(FSAM ) , FSAM= ( Q , ∑ , δ , q0 , F),构造右线性文法G=(∑,Q,q0,P) (将自动机的状态当作是文法的非终结 符),其中P为:
{q→xq′|δ(q, x)=q′}
定理 右线性语言对补运算是封 闭的
证明: 假 设 L1 是 字 母 表 ∑ 上 的 有 限 状 态 语 言 , 且
L1=L(FSAM1),FSAM1=(Q,∑,δ,q0,F),而
FSAM2=(Q,∑,δ,q0,Q)接收的语言是右线
性语言L1的对应的全集。 对 L1 的 补 运 算 得 到 的 语 言 L2=L(FSAM′) ,
(1)系统具有有穷个状态,不同的状态代表不同的 意义。按照实际的需要,系统可以在不同的状态 下完成规定的任务。
(2)我们可以将输入字符串中出现的字符汇集在一 起构成一个字母表。系统处理的所有字符串都是 这个字母表上的字符串。
(3)系统在任何一个状态下,从输入字符串中读 入一个字符,根据当前状态和读入的这个字符 转到新的状态。
的串w=w1w2…wn;初始时,自动机M处于开 始 状 态 q0 ; 从 左 到 右 逐 个 字 符 地 扫 描 串 w ; 在δ(q0,w1)= q1的作用下,自动机M处于 状态q1,在δ(q1,w2)=q2的的作用下,自 动机M处于状态q2,…;
当将串w扫描结束后,若自动机处于某一 个接收状态,则称有限状态自动机能够接 收(识别)串w。对于自动机而言,从开 始状态开始,在扫描串的过程中,状态逐 个地变化,直到某个接收状态,我们把状 态的变化过程称为自动机的一条路径,而 这条路径上所标记的字符的连接,就是自 动机所识别的串。
如果将该自动机的接收状态和非接收 状态对调,即将状态S、M、和陷阱状态qt 都设置为接收状态,而将原来的接收状态 F设置为非接收状态,那么,自动机接收 的语言是什么?
构造有限状态自动机M,识别{0,1}上的 语言L={x000y|x,y∈{0,1}*}。
分析:
语言L={x000y|x,y∈{0∈0∈{0,1}*}, 该语言的特点是语言中的每个串都包含连 续的3个0(即每个串都包含子串000),
…
qn-2→wn-1qn-1 qn-1→wnqn
或 qn-1→wn (qn是接收状态)
所以 对自动机M: δ*(q, α)= q′ δ*(q0, w)∈F
对文法: q=>*αq′
q0=>*w
FSL={(0,1)0*1}*,接收该语言的有限状态自 动机
构造右线性文法产生该语言:
q0→0q1|1q1|ε q1→1q0|0q1|1
有限状态自动机还可以分成确定与非确定 两种。非确定有限状态自动机可以转化为 确定有限状态自动机。
有限状态自动机识别的语言是正则语言 RL。
有限状态自动机除了它在理论上的价值, 还在数字电路设计、词法分析、文本编辑 器程序等领域得到了应用。
6.1 有限状态自动机
有穷状态自动机是具有离散输入和输出的系统的 一种数学模型。其主要特点有以下几个方面:
一个有穷状态控制器(FSC),该控制器的状 态只能是有穷多个;FSC通过一个读头和带上 单元发生耦合,可以读出当前带上单元的字符。 初始时,读头对应带的最左单元,每读出一个 字符,读头向右移动一个单元(读头不允许向 左移动)。
有限状态自动机的一个动作为:
读头读出带上当前单元的字符;FSC根据 当前FSC的状态和读出的字符,改变FSC 的状态;并将读头向右移动一个单元。
因此,对于任何输入串,有限状态自动机 的任务就是要检查该输入串中是否存在子 串000,一旦发现输入串包含有000,则表 示输入串是个合法的句子(是属于语言中 的一个串),因此,在确认输入串包含 000后,就可以逐一地读入输入串的后面 的字符,并接收该输入串。
问题的关键是如何发现子串000。
由于字符是逐一读入的,当从输入串 中读入一个0时,它就有可能是000子 串的第1个0,就需要记住这个0;如 果紧接着读入的是字符1,则刚才读 入的0就不是子串000的第1个0,此时, 需要重新寻找000子串的第1个0;
如果紧接着读入的还是字符0,它就 有可能是000子串的第2个0,也就需 要记住这个0,继续读入字符,如果 还是0,则表明已经发现子串000,否 则,需要重新寻找子串000。
FSC的状态极其意义
q0: 有限状态自动机的开始状态;也是重新寻找 子串000时的状态
q1: 有限状态自动机读到第1个0,有可能是子 串000的第1个0;;