第三章 有限状态自动机2014
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014-12-24
18
δ (q0,1)= q0——M在q0读到了一个1,它需要 继续在 q0 “ 等待”可能是子串“ 000”的第 1 个0的输入字符0; δ (q1,1)= q0——M在刚刚读到了一个0后,读 到了一个 1 ,表明在读入这个 1 之前所读入 的 0并不是子串“000”的第1个0,因此, M 需要重新回到状态q0,以寻找子串“000”的 第 1个 0;
24
• 例 构造一个DFA,它接受的语言为 {0n1m2k|n,m,k≥1}。
q0——M的启动状态; q1——M 读到至少一个 0 ,并等待读更多的 0 ; q2——M读到至少一个 0后,读到了至少一个 1,并等待读更多的1; q3——M读到至少一个0后跟至少一个1后, 并且接着读到了至少一个2。
2014-12-24
35
NFA与DFA等价
• NFA M1=(Q,∑,δ 1,q0,F1)与DFA M2=(Q2,∑,δ 2,q0′,F2)的对应关系:
– NFA从开始状态q0启动,我们就让相应的DFA 从状态[q0]启动。所以q0′=[ q0]。 –对于NFA 的一个状态组{q1,q2,…,qn},如 果NFA在此状态组时读入字符a后可以进入状 态组{p1,p2,…,pm},则让相应的DFA在状态 [q1,q2,…,qn]读入字符a时,进入状态[p1, p2,…,pm]。
• 以上的事件以及事件间在一定条件下转化的情况,可以表 示成有限状态系统,每个状态表示某一方所处的局面。
2014-12-24 3
更换物品 预付款
换货 送货 已收货
选物品
已购物
不认可物品 换货 选物品 预付款 取消 确认付款 交易结束 认可物品
不认可物品
退货
已购物 选物品 取消 转帐
取消
已购物 确认付款 认可物品
•
2014-12-24
27
• 接受语言{x|x∈{0,1}*,且当把x看成二进 制数时,x模3与0同余}的DFA如下:
2014-12-24
28
S
0能被3整除 00能被3整除 0 0 11能被3整除
qs
1
q0 1 0 0 q2 1 1
1模3余1 q1 01模3余1 100模3余1
10模3余2 101模3余2
第3章 有限状态自动机
• 主要内容
• 确定的有限状态自动机(DFA) • 不确定的有限状态自动机(NFA) • 带空移动的有限状态自动机(ε-NFA) • 带输出的有限状态自动机
2014-12-24
1
有限状态系统实例
• 指针式钟表共有12*60*60个状态,每过 一秒,钟表就从一种状态到另一种状态。 围棋共有3361个状态,每走一步棋就从一 个状态到另一个状态。
2014-12-24
22
–在状态 q3 紧接着读到的 0 也可能是输入字符串 的最后三个0的第3个0; –如果在状态q1,q2,q3读到的是1,则要重新检 查输入串是否以三个0结尾。
2014-12-24
23
接受语言{x000|x∈{0,1}*}∪{x001|x∈{0,1}*}的FA
2014-12-24
2014-12-24
14
δ:Q×∑Q,对(q,a)∈Q×∑,
δ’:Q×∑*Q,对(q,w)∈Q×∑,
对任意的q∈Q,w∈∑*,a∈∑,定义
(1)δ’(q,)= q (2)δ’(q,wa)= δ( δ’ (q,w),a)
δ’(q,a)= δ’(q, a) = δ( δ’ (q, ),a) = δ(q,a)
3.1 语言的识别
• 推导和归约中的回溯问题将对系统的效率产 生极大的影响 SaA|aB AaA|c BaB|d
系统识别语言{anc|n≥1}∪{and|n≥1}的字符 串过程中状态的变化图示如上
2014-12-24 5
• 识别系统(模型) ⑴ 系统有有限个状态,不同状态代表不同的规 定任务。 ⑵ 输入字符串中出现的字符构成一个字母表。 系统处理的所有字符串都是这个字母表上的字 符串。 ⑶ 系统在任何一个状态下,从输入字符串中 读入字符后,可转到新的状态(或状态不 变)。下一次再读时,会读入下一个字符。
2014-12-24
20
M=({q0,q1,q2,q3},{0,1},{ (q0,0)= q1, δ (q1,0)= q2,δ (q2,0)= q3,δ (q0,1)= q0, δ (q1,1)= q0,δ (q2,1)= q0,δ (q3,0)= q3, δ (q3,1)= q3},q0,{q3})
对于 δ(q0,0)= q1, δ(q1,1)= q2, δ(q2,0)= q3, δ’(q0,010) =δ(δ’ (q0,01),0) =δ(δ(δ’ (q0,0),1),0) =δ(δ(δ(δ’ (q0,ε),0) ,1),0) =δ(δ(δ(q0,0) ,1),0) =δ(δ(q1 ,1),0) =δ(q2 ,0) = q3
符号 状态 q0(初始) q1
0 q1 q2
q2(终止)
q1
• 确定的有限状态自动机
–对于任意的q∈Q, a∈∑,δ (q,a)均有确定 的值,这种FA称为确定的有限状态自动机 (deterministic finite automaton,DFA)
• M接受(识别)的语言
对于x∈∑*如果 δ ’(q0, x)∈F,则称x被M接受。 L(M)={x| x∈∑*且δ (q0,x)∈F} 称为由M接受(识别)的语言
2014-12-24
19
δ (q2,1)= q0——M在刚刚发现了00后,读到了 一个1,表明在读入这个1之前所读入的00并 不是子串“000”的前两个0,因此,M需要重 新回到状态 q0,以寻找子串“ 000”的第 1个0 ; δ (q3,0)= q3——M找到了子串“000”,只用读 入该串的剩余部分。 δ (q3,1)= q3——M找到了子串“000”,只用读 入该串的剩余部分。
7
• 相应的物理模型
一个右端无穷的输入带。 一个有限状态控制器(finite state control,FSC) 。 一个读头。 • 系统的每一个动作由三个节拍构成: 读入读头正注视的字符; 根据当前状态和读入的字符改变有限控制器的状态; 将读头向右移动一格。
2014-12-24
8
3.2有限状态自动机
• 有限状态自动机(finite automaton,FA)是一个五 元组: M=(Q,∑, q0,δ,F) Q——状态的非空有限集合。 q∈Q,q为M的一个状态。 ∑——输入字母表。输入字符串都是∑上的字符串。 q0——q0∈Q,是 M的 开始状态 (初始状态或者启动 状态)。
2014-12-24
•
•
2014-12-24
31
• 希望是接受{x|x∈{0,1}*,且x含有子串00 或11}的FA如下:
2014-12-24
32
• 希望是接受{x|x∈{0,1}*,且x 的倒数第10 个字符为1}的FA如下 :
2014-12-24
33
• 这两个图所给的“ FA” 与前面我们所定义 的FA,即DFA,的区别在于: ⑴ 并不是对于所有的(q,a)∈∑×Q,δ (q, a)都有一个状态与它对应; ⑵ 并不是对于所有的(q,a)∈∑×Q,δ (q, a)只对应一个状态。 • “FA”在任意时刻可以处于有限多个状态。
2014-12-24
21
• 例 构造一个DFA,它接受的语言为 {x000|x∈{0,1}*}。
–状态q0读到的0可能是输入字符串的最后三个0 的第1个0; –在状态 q1 紧接着读到的 0 可能是输入字符串的 最后三个0的第2个0; –在状态 q2 紧接着读到的 0 可能是输入字符串的 最后三个0的第3个0;
10
• 例 有限状态自动机 M1=({q0,q1,q2},{0},δ1,q0,{q2}) 其中 :δ1(q0,0)= q1 δ1(q1,0)= q2, δ1(q2,0)= q1
S 0 q0 0
q1
0
q2
识别 {(00)n|n>=1}
2014-12-24
11
有限自动机的表示 (1)转移图表示法
(2)矩阵表示法
不用区分这两个符号
• 例 构造一个DFA,它接受的语言为 {x000y|x,y∈{0,1}*}
q0——M的启动状态; q1——M 读到了一个 0 ,这个 0 可能是子串“ 000” 的 第 1个 0; q2——M 在 q1 后紧接着又读到了一个 0 ,这个 0 可能 是子串“000”的第2个0; q3——M在q2后紧接着又读到了一个 0,发现输入字 符串含有子串“ 000” ;因此,这个状态应该是终 止状态。
9
δ——状态转移函数(转换函数或移动函数), δ:Q×∑Q,对(q,a)∈Q×∑,δ(q, a)=p表示:M在状态q读入字符a,将状态 变成p,并将读头指向输入字符串的下一个 字符。 F——FQ,是M的终止状态集合。 q∈F,q称M的终止状态(接受状态)。
状态转移图 状态转换图
2014-12-24
2014-12-24
25
• 先设计“主体框 架” •再补充细节
当FA进入qt就无法离开此状态。qt相当于一个陷阱 状态(trap)。一般将陷阱状态用作发现输入串不可 能是该FA所识别的语言的句子时进入的状态。在 此状态下,FA读完输入串中剩余的字符。
2014-12-24 26
• 例 构造一个DFA,它接受的语言为{x|x∈{0,1}*, 且当把x看成二进制数时,x模3与0同余}。
2014-12-24
34
Βιβλιοθήκη Baidu
• 对于一个输入字符,NFA与DFA的差异是 前者可以进入若干个状态,而后者只能进 入一个惟一的状态。虽然从DFA看待问题 的角度来说,NFA在某一时刻同时进入若 干个状态,但是,这若干个状态合在一起 的“总效果”相当于它处于这些状态对应 的一个“综合状态”。因此,我们考虑让 DFA用一个状态去对应NFA的一组状态。
接受的语言是由一切含有偶数个0和偶数个1的字符串组成的集合。
确定有限自动机的程序设计
q=m_q[q][d]
3.3 不确定有限自动机
• 一个非确定的有限自动机(Nondeterministic Finite Automata)简记为NFA,是一个五元组 M=(Q,∑,δ,q0 , F) 其中Q、∑、q0和F与确定的有限自动机的含意相同,只是转 移函数δ的定义不同,它是从Q×∑到2Q(Q的一切子集的集 合)上的映射。 在DFA中,δ的一般形式是δ(q,a)=p (q,p∈Q),而在NFA中 ,δ的一般形式是δ(q,a)={p1,p2,…,pk}(pi∈Q,i=1,2,…k),或 δ(q,a)=φ(空集)。 在NFA中转移函数δ的取值是一个状态集,即使只有一个状 态p,也要写成集合形式{p}。
2014-12-24
6
⑷ 系统中有一个开始状态,系统在这个状态 下开始进行某个给定句子的处理。 ⑸ 系统中有一些状态表示它到目前为止所读 入的字符构成的字符串是语言的一个句子, 把所有将系统从开始状态引导到这种状态 的字符串放在一起构成一个语言,该语言 就是系统所能识别的语言。
2014-12-24
关闭
•
电视开
电视关
打开
2014-12-24
2
有限状态系统——淘宝网上购物
• 顾客、店家和支付宝网三方之间的交互限于以下几种事件:
1、顾客告诉店家购买某种物品,决定预付款购物。 并将钱款转入支 付宝。 2、顾客决定取消预付款。 顾客通知支付宝,把购物这笔钱保留在自 己的银行帐号上。 3、店家送货给顾客。 4、顾客收到货后 (1)确认付款。 通知支付宝将钱款划拨到店家帐号, 转到(5) (2)退货。把购物这笔钱保留在自己的银行帐号上,结束。 (3)换货。寄回店家,店家重送货给顾客。 5、支付宝将这笔钱转帐。 把顾客购物这笔钱划拨给店家的帐号。
• • 分析:换句话说,x要能被3整除。 当二进制数x的位数向右不断增加时,它的值(换算成十进制) 的增加很有规律:x0的值等于2x,x1的值等于2x+1。 – 例如x=100,它的十进制值是4,右边添上0后为1000,它的 十进制值是8;右边添上1后为1001,它的十进制值是9。 – 如x模3余1,则2x模3余2,而2x+1模3余3,即能被3整除了。 – 又如有某个x模3余2,则2x模3余4,而余数4大于3,被3除余 1,所以2x模3余1;而2x+1模3余5,相当于模3余2。 经这样分析以后,FAM除初始状态外,只需要设3个状态:模3 余0状态(即终结状态),模3余1状态,模3余2状态。