1、12022-11-26College of Computer Science&Technology,BUPT3.9(part 2)右线性语言的封闭性右线性语言的封闭性 3.10 双向和有输出的有限自动机双向和有输出的有限自动机 22022-11-26College of Computer Science&Technology,BUPT右线性语言的封闭性右线性语言的封闭性 上节从文法产生的角度证明了右线性语言及其并,积,闭上节从文法产生的角度证明了右线性语言及其并,积,闭包是正则集;本节用有限自动机接受的语言来证明。包是正则集;本节用有限自动机接受的语言来证明。(书书P103)1.1.设设和和是
2、右线性语言,证明是右线性语言,证明为右线性语言为右线性语言 构造NFA M(Q,T,q0,F)QQ1Qq0 q0是新的起始状态当,q 否则 F=M形如形如:32022-11-26College of Computer Science&Technology,BUPT右线性语言的封闭性右线性语言的封闭性 2.设设和和是右线性语言,证明是右线性语言,证明为右线性语言为右线性语言(书书P104)构造NFA M(Q,T,q0,F),其中Q=QQ q0=q1 当q2F2 当q2F2 F=M形如形如:42022-11-26College of Computer Science&Technology,BUPT
3、右线性语言的封闭性右线性语言的封闭性 3.设设是右线性语言,证明是右线性语言,证明L*是右线性语言是右线性语言(书书P106)构造构造NFA M(Q,T,q0,F),Q=Q1q q是新的起始状态是新的起始状态,F=1qL*形如形如 52022-11-26College of Computer Science&Technology,BUPT右线性语言的封闭性右线性语言的封闭性 4.设设是右线性语言,证明是右线性语言,证明 L 是右线性语言是右线性语言证明:证明:构造接受构造接受1的的M(Q,T,q0,F)其中其中Q=Q1 是一个新状态是一个新状态 T T1 q0=q1 (Q11)(即将即将1的终
4、止状态变为的终止状态变为M的非终止状态的非终止状态)定义为定义为:当当aT1,则则(q,a)=1(q,a)保留原有函数保留原有函数 当当aT1 且且1(q,a)=,则则(q,a)=当当aTT1,则则(q,a)=遇到原来没有的字符全转至遇到原来没有的字符全转至.对任意对任意aT,(,a)62022-11-26College of Computer Science&Technology,BUPT右线性语言的封闭性右线性语言的封闭性 例例:(:(书书P108)P108)对下图的对下图的1,求求(1 1)72022-11-26College of Computer Science&Technology
5、,BUPT右线性语言的封闭性右线性语言的封闭性 例例:设设DFA1(q,q,,q,q,q)对,对,,求求(1)82022-11-26College of Computer Science&Technology,BUPT右线性语言的封闭性右线性语言的封闭性 5.证明证明1是封闭的是封闭的 证明:证明:11 得证得证6.证明右线性语言对于置换是封闭的证明右线性语言对于置换是封闭的.(略略-自学自学)92022-11-26College of Computer Science&Technology,BUPT有关正则语言的几个判定性质n 判定正判定正则则语言是否为空语言是否为空n 判定正判定正则则语言
6、中是否包含特定的字符串语言中是否包含特定的字符串n 判定两个正判定两个正则则语言是否相等语言是否相等102022-11-26College of Computer Science&Technology,BUPT 判定正判定正则则语言是否为空语言是否为空 可由如下步骤递归地计算可达状态集合:可由如下步骤递归地计算可达状态集合:n 判定算法判定算法 测试从测试从 初态是否可达某一终态初态是否可达某一终态.先求所有可先求所有可 达状态的集合,若其中包含终态,则该正规语言非空,达状态的集合,若其中包含终态,则该正规语言非空,否则为空语言。否则为空语言。n 算法复杂度算法复杂度 设有限自动机的状态数目为
7、设有限自动机的状态数目为 n,上述判定上述判定 算法的复杂度为算法的复杂度为 O(n2).基础基础:初态是可达的:初态是可达的:归纳归纳:设状态:设状态 q 是可达的,若对于某个输入符号或是可达的,若对于某个输入符号或 ,q 可转移到可转移到 p,则则 p 也是可达的:也是可达的:112022-11-26College of Computer Science&Technology,BUPT 判定正判定正则则语言中是否包含特定的字符串语言中是否包含特定的字符串n 判定算法判定算法 从初态开始,处理输入字符串从初态开始,处理输入字符串 w,如果可如果可 以结束于某一终态,则该正规语言中包含以结束于
8、某一终态,则该正规语言中包含 w,否则不否则不 包含包含 w。n 算法复杂度算法复杂度 设输入字符串设输入字符串w 的长度的长度|w|=n,上述判定上述判定 算法的复杂度为算法的复杂度为 O(n).n 以以 DFA 表示正规语言表示正规语言n 以正规表达式表示正规语言以正规表达式表示正规语言将其转化为等价将其转化为等价的的 NFA,然后执行上述过程然后执行上述过程.n 以以 NFA(或或NFA)表示正规语言表示正规语言 可以将其转化为可以将其转化为等价的等价的 DFA,然后执行上述过程;也可以直接模拟其处然后执行上述过程;也可以直接模拟其处理字符串的过程,判定算法的复杂度为理字符串的过程,判定
9、算法的复杂度为 O(n2s),其中其中n为为字符串的长度,字符串的长度,s为为NFA(或或NFA)的状态数目的状态数目.122022-11-26College of Computer Science&Technology,BUPT 判定两个正判定两个正则则语言是否相等语言是否相等n 判定算法判定算法 可由采取如下步骤:可由采取如下步骤:n 算法复杂度算法复杂度 以上算法的复杂度即填表算法的以上算法的复杂度即填表算法的 复杂度,其上限为复杂度,其上限为O(n4);可以适当设计填表可以适当设计填表 算法的数据结构,使其复杂度降为算法的数据结构,使其复杂度降为 O(n2).1.先将两个正规语言的表达
10、形式都转化为先将两个正规语言的表达形式都转化为 DFA,问题问题 转化为两个转化为两个DFA是否是等价的;是否是等价的;2.适当重命名,使两个适当重命名,使两个DFA没有重名的状态;没有重名的状态;3.将两个将两个DFA相并,相并,构造一个新的构造一个新的DFA,原来的终态原来的终态仍是终态,转移边不发生任何变化,取任何一个状态仍是终态,转移边不发生任何变化,取任何一个状态为初态;为初态;4.对新构造的对新构造的DFA运用填表算法,如果原来运用填表算法,如果原来DFA的两个的两个初态不可区别,则这两个正规语言相等,否则不相等初态不可区别,则这两个正规语言相等,否则不相等.132022-11-2
11、6College of Computer Science&Technology,BUPT双向有限自动机双向有限自动机(2DFA)定义定义:n读入一个字符之后,读头既可以左移一格,也可以右移一格,或者不移动的有限自动机,为双向有限自动机.n确定的双向有限自动机:每读入一字符,必须向左或右移动,不考虑不移动的情况.142022-11-26College of Computer Science&Technology,BUPT2DFA的形式定义2DFA M(Q,T,q0,F)是从是从QTQL,R的映射的映射.即即(q,a)=(p,R)或或 (q,a)=(p,L)(在状态在状态q,读入读入a,进入状态进
12、入状态p,读头向右读头向右(向左向左)移一格)移一格)用格局描述用格局描述:设有设有1q2 1 -已输入串已输入串q -当前状态当前状态 2 -待输入串待输入串(q,am+1)=(p,R)的格局表示的格局表示:a1 a2am q am+1an a1 a2am+1 p am+2an(q,am+1)=(p,L)的格局表示的格局表示:a1 a2am q am+1an a1 a2am-1 p am am+1an 152022-11-26College of Computer Science&Technology,BUPT2DFA2DFA接受的字符串集合是接受的字符串集合是:L(M)=|q*q,q F例
13、例:书书P113 例例1.其状态图为其状态图为b,R162022-11-26College of Computer Science&Technology,BUPT有输出的有限自动机有输出的有限自动机 有输出的有限自动机是有限自动机的一个类型有输出的有限自动机是有限自动机的一个类型.这类自动机在有字符输入时,不仅存在状态转换,这类自动机在有字符输入时,不仅存在状态转换,同时引起字符输出同时引起字符输出.根据输入字符,自动机状态,输出字符三者之根据输入字符,自动机状态,输出字符三者之间关系,可有两类有输出的自动机间关系,可有两类有输出的自动机:n 米兰机米兰机(Mealy):输出字符与输入字符及状
14、态有关输出字符与输入字符及状态有关.n 摩尔机摩尔机(Moore):输出字符仅与状态有关输出字符仅与状态有关.最大优点最大优点:节省状态节省状态!172022-11-26College of Computer Science&Technology,BUPT米兰机米兰机米兰机米兰机形式定义形式定义:M(Q,T,R,g,q0)其中其中 Q 有限状态集合有限状态集合 T 有限输入字母表有限输入字母表 R 有限输出字母表有限输出字母表 :QTQ 转换函数转换函数 g:QTR 输出函数输出函数 q0:初始状态初始状态 q0 Q和和g函数共同描述了米兰机的工作状况函数共同描述了米兰机的工作状况.18202
15、2-11-26College of Computer Science&Technology,BUPT米兰机米兰机米兰机米兰机图形表示图形表示:(p(p,a)=qa)=q g(pg(p,a)=ba)=b Pqa/b例例:(P115 例2)设计米兰机,其输出是输入字符个数的模3数解解:输出字母表R=0,1,2.设输入字母表T=a,M的状态数应有3个,记录已输入字符个数的模3数.Q=q0,q1,q2 分别表示输入字符数模3=0,1,2192022-11-26College of Computer Science&Technology,BUPT米兰机米兰机例例:(P115 例3)设计米兰机,其输入0,
16、1*,当输入串有奇数个1时,输出1.当输入串有偶数个1时,输出0.解解:需二个状态q0,q1 q0 表示输入串有偶数个1,q1 表示输入串有奇数个1202022-11-26College of Computer Science&Technology,BUPT课堂练习课堂练习 设语言L由0,1组成,且字符串的最后两个字符相同.构造米兰机M,输出Y/N表示输入串是否属于L.解解:设状态集Q为 初始状态q0 状态p0 表示输入串最后字符为0 状态p1 表示输入串最后字符为1212022-11-26College of Computer Science&Technology,BUPT课堂练习课堂练习练
17、习练习:(书书P122 19题题)设计米兰机,输入是0,1组成的串,要求输出串对输入串延迟两个时间单位.解:M(Q,T,R,g,q0),T=0,1 R=0,1 分析分析:可能的状态-即一个输入在输出前可能处于的状态 Q:00 q00 01 q01 10 q10 11 q11 Q=q00,q01,q10,q11222022-11-26College of Computer Science&Technology,BUPT课堂练习课堂练习初始情况初始情况:刚开始工作时输入前两个字符,输出为 232022-11-26College of Computer Science&Technology,BUPT
18、摩尔机摩尔机 摩尔机的输出只与到达的状态有关摩尔机的输出只与到达的状态有关 形式定义形式定义:M(Q,T,R,g,q0)g:Q R:Q T Q 图形表示图形表示:(q(q,a)=pa)=p g(p)=bg(p)=b2 2 q,b1p,b2a242022-11-26College of Computer Science&Technology,BUPT摩尔机摩尔机例例:(书P117 例4)设计自动机,其输入串0,1*,输出是(n1-n0)mod 4,n0是中含0的个数,n1是中含1的个数。四个状态 q0,q1,q2,q3 分别输出0,1,2,3 解解:需四个状态,取输出字母表 R=0,1,2,3.
19、252022-11-26College of Computer Science&Technology,BUPT课堂练习课堂练习 设计摩尔机,接受0,1组成的串,串的首符为1,串中出现且只出现一个0。若接受输出Y,否则输出N。解解:L的串应为11*01*M(Q,T,R,g,q0)T=0,1,R=Y,N 设计状态 初始状态 拒绝接受 可能接受 接受Q:262022-11-26College of Computer Science&Technology,BUPT米兰机和摩尔机的变换米兰机和摩尔机的变换 n 已知摩尔机可构造等价的米兰机已知摩尔机可构造等价的米兰机设 摩尔机(Q,T,R,g,q0)米兰
20、机(Q,T,R,g,q0)如果中有(q,a)=p,g(p)=b则中有g(q,a)=b=g(q,a)例例:摩尔机摩尔机米兰机米兰机 272022-11-26College of Computer Science&Technology,BUPT米兰机和摩尔机的变换米兰机和摩尔机的变换 n 由米兰机也可构造等价的摩尔机(略)由米兰机也可构造等价的摩尔机(略)n 小结小结 双向自动机,米兰机,摩尔机的共同优点是描述问题清晰,且节省状态.例如例如:对L=(0+1)*(00+11)(前面米兰机的例子)米兰机只需三个状态 而用DFA则不会少于5个状态282022-11-26College of Computer Science&Technology,BUPT作业:Chap3 习题 1,9,18题