第4章正则语言的性质讲解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

a
a
Start
b q
0
a
q
q
1
2
b b
q
3
a,b
19
正则代换(regular substitution) 设∑、Δ是两个字母表,映射
f : 2*
被称为是从∑到Δ 的代换。如果对于a∈∑,f(a) 是Δ 上的 RL ,则称f为正则代换。
20
先将f的定义域扩展到∑*上:
f : * 2*
10
例3 设L是由正则表达式(0+1)0*表示的语言,根据连接规则 可知 LR是(0*)R(0+1)R表示的语言,而(0*)R=0*,0或1的反 转是它自身, 即(0+1)R=(0+1),因此LR的正则表达式为0*(0+1)。 定义4.2 假设 和 是两个字母表。函数
h:* 如果对于x,y,都有h(xy)=h(x)h(y), 则称h为到*的同态映射(homomorphism)。 对于L*, h(L)=∪{h(x)} * 称为L的同态像。 对于w*, h-1( w)={x|h(x)=w} 称为w的同态原像。 对于L*, h-1(L)={x|h(x)L} 称为L的同态原像, 并称h-1(L)为L的逆同态。
定理4.1 如果L1和L2是正则语言,那么L1∪L2也是正则语言。 证明:如果L1和L2是正则的,那么一定存在正则表达式r1和r2,
使得L1=L(r1),L2=L(r2)。根据定义,r1+r2是表示语言
L1∪L2的正则表达式。因此,正则语言对于并运算是封闭的。
2
定理4.2 如果L是字母表上的正则语言,则L’=*-L是正则
11
例4 已知={0,1}和={a,b,c},定义h为 h(0)=ab h(1)=bcc
那么h(010)=abbccab。L={00,010}的同态像为 语言h(L)={abab,abbccab}。
例5 已知={0,1}和={a,b,c}。同态映射 h为
h(0)=dbcc h(1)=bbc 如果L是正则语言,使用正则表达式 r=(0+1*)1* 表示,那么 r1=(dbcc+(bbc)*) (bbc)* 表示的语言是正则语言h(L)。
0
q
它把上图中的终结状态变为非
0
1
q
q
1
2
终结状态,非终结状态变为终
0
结状态。 1
4
定理4.3 如果L1和L2是正则语言,则L1∩L2是正则语言。 证明: 用构造证明的方法: 设L1=L(M1),L2=L(M2), 其中DFA M1=(Q1,,1,q0,F1),
DFA M2=(Q2,,2,p0,F2), 构造DFA M=(Q1Q2,,,<q0,p0>,F1 F2) , 其中δ:(Q1Q2)Q1Q2 对 p1Q1,p2Q2,a (<p1,p2>,a)=< 1(p1,a),2(p2,a)>, 由定义可以看出,w被M接受当且仅当w同时被M1和M2接 受,因此,L1∩L2是正则的。
15
例6 设 L1={anbm:n1,m0}{ba} L2={bm:m1}
L2中的符号串至少包含一个b。因此,先找出L1中其后缀为 bt(t1)的串,这些串在{anbm:n1,m1}中,将这些串 去掉形为bt( t1)的后缀, 得到
L1/L2={anbm:n1,m0} 如果L1,L2是正则语言,L1/L2还是正则的吗?
8
证法2: 设L由正则表达式r定义,对r的构造次数进行归纳证明: (1)设r的构造次数为0,即r是,或者a,则R=, {}R={},{a} R={ a},此时rR和r相同。 (2)设定理在r的构造次数小于k时成立,讨论r的构造次数 等于k时, 情况① 设r=r1+r2,其中r1和r2的构造次数都小于k, 由归纳假设,可以构造r1R和r2R,使得L(r1R)=L(r1)R, L(r2R)=L(r2)R, 因为L(r)=L(r1)L(r2),所以L(r)R=L(r1)R L(r2)R, 因此r1R + r2R就是代表L(r)R的正则表达式。 情况② 设r=r1r2,其中r1和r2的构造次数都小于k, 由归纳假设,可以构造r1R和r2R,使得L(r1R)=L(r1)R, L(r2R)= L(r2)R, 由于L(r)=L(r1)L(r2),因此L(r)R=L(r1)R L(r2)R,所以r1Rr2R就 是代表L(r)R的正则表达式。
L1=L(r1),L2=L(r2)。根据正则表达式的定义,r1r2 和r1*分别是表示语言L1L2和L1*的正则表达式。因此,正 则语言在连接和星闭包运算上都是封闭的。
7
定理4.6 如果L是正则语言,则L的逆LR={ w| wT L}(wT 表示w的倒序)也是正则语言。 证明: 证法1(用构造自动机的方法) 假设L是正则语言, M是接受L的自动机,通过下面方法构 造一个接受LR的自动机M’: (1)M’中的弧是M中所有弧的方向反转构成; (2)M’的终结状态是M的初始状态; (3)如果M不止一个终结状态,则在M’中创建一个新的 初始状态,从该状态出发到M的所有终结状态都建立一个 转移。 修改后的NFA M’接受wT,当且仅当M接受w。因此,M’接 受LR,从而证明了逆运算的封闭性。
9
情况③ 设r=r1*,其中r1的构造次数小于k, 由归纳假设,可以构造r1R,使得L(r1R)= L(r1)R, 因为L(r)= L(r1)*, 对于w L(r),w=w1w2…wm,每个wi L(r1)。 wR= wmRwm-1R…w1R,其中每个wiR L(r1)R, 因此wR L((r1 R)*)。 反之,wL((r1 R)*),w都有w1w2…wn的形式, 其中wi L(r1)R。 因此,wR= wnRwn-1R…w1R L(r1*)=L(r), 因此(r1 R)*就是代表L(r)R的正则表达式。
L(M’)= L1/L2 所以,L1/L2是正则的。
17
例7 已知
L1=L(a*baa*) L2=L(ab*)
求L1/L2。 首先找到接受L1的DFA如图,
a
a
Start
b q
0
a
q
q
1
2
b b
q
3
a,b
18
定理4.9的方法构造DFA M’=(Q, , ,q0,F’), 由于F’={qi| qi Q且 y L2,使得 (qi,y)F} 从前图中可以看出,q1,q2 F’ 因此,接受L1/L2的自动机如下图。这个自动机接受由正 则表达式a*b+a*baa*表示的语言,将a*b+a*baa*简化成 a*ba*。因此L1/L2=L(a*ba*)。
5
例2 设有如图下的两个DFA,M1接受所有包含0的串, M2接受所有包含1的串,
1
0, 1
0
0, 1
Start
0
Start
1
p
q
r
s
a)
b)
按定理4.3的构造方法,构造出 的DFA M如右图所示,M接受的同 时含有0和1的串。
1
Start
1
p
p
r
s
0
0
q
q
0, 1
r
1
s
0
6
定理4.4 如果L1和L2是正则语言,那么L1-L2也是正则语言。 证明: 根据集合差运算的定义有
12
定理4.7 如果L是字母表上的正则语言, h是到 上的同态映射,则h(L)也是上的正则语言。即正则 语言在同态运算上是封闭的。 证明: 设L是用正则表达式r表示的正则语言。 用h(r)表示把r中的每个符号a,用h(a)来代替后的 表达式。 根据正则表达式的定义,h(r)也是正则表达式。 下面证明h(r)定义的语言是h(L), 即L(h(r))=h(L(r))。 对r的构造次数进行归纳:
语言。 证明:如果L是正则的,设接受L的DFA为
M=(Q,,,q0,F)。
下面构造DFA M’: 取M’与M的终结状态集互为补集,除了终结状态集为Q-F外, M’的其余结构都与M相同,即
M’=(Q,,,q0,Q-F)
显然,对于M接受的串,M’将不接受,对于M’接受的串,M
将不接受。因此L(M’)=*-L 所以*-L是正则语言。
13
(1)设r的构造次数为0,即r是, 或者a, 当r是或者 时,L(r)中或者只含空串,或者没有串,此时 L(h(r))=L(r),所以L(h(r))=h(L(r))。 当r是a时,L(r)={a},所以h(L(r))=h({a }) 另一方面,h(r)是由符号串h(a )表示的上的正则表达式,因此 L(h(r))={h(a)}, 所以L(h(r))=h(L(r))。 (2)设定理在r的构造次数小于k时成立,讨论r的构造次数等于k时, 设r=r1+r2,其中r1和r2都是构造次数都小于k的正则表达式, 由同态的定义,有h(r) =h(r1+r2)= h(r1)+ h(r2) 所以L(h(r))=L(h(r1)+ h(r2))= L(h(r1)) ∪L( h(r2)) 把h作用到一个语言上时,相当于把它单独作用到语言的每一个字符串, 因此 h(L(r))= h(L(r1) ∪L(r2))= h(L(r1)) ∪ h(L(r2)) 由归纳假设,L(h(r1))= h(L(r1)), L( h(r2))= h(L(r2)) 所以,有L(h(r))=h(L(r))。 对于r=r1r2,和r=r1*,可以类似地证明
16
下面证明L(M’)=L1/L2, 由L1/L2的定义,对xL1/L2,一定存在yL2, 使得xy L1,即
(q0,xy)F 因此,一定存在某个qQ,使得
并且
(q0,x)=q
(q,y)F
因此,根据构造可知qF’,并且M’接受x。
反之,对于M’接受的任意x,我们都有
(q0,x)=qF’ 根据M’的构造,一定存在一个y L2, 满足(q0,xy)F 。 因此,xy属于L1,x属于L1/L2。得到
第4章 正则语言的性质
1
一、正则语言的封闭性质
定义4.1 如果属于某一语言类的任何语言在某一特定运算下所 得的结果仍然是该类语言,则称该语言类对此运算是封闭的, 并称该语言类对此运算具有封闭性(closure property)。 给定正则语言L1和L2,它们的并集、交集、连接是否仍然是正 则语言?
⑴ f(ε )={ε };
⑵ f(xa)=f(x)f(a)。
再将f的定义域扩展到
2*
f : 2* 2*
对于L∑*
f (L) ∪ f (x)
xL
21
例 8 设∑={0,1},Δ ={a,b},f(0)=a,f(1)=b*, 则 f(010)=f(0)f(1)f(0)=ab*a f({11,00})=f(11)∪f(00) =f(1)f(1)∪f(0)f(0)=b*b*+aa=b*+aa f(L(0*(0+1)1*))=L(a*(a+b*)(b*)*) =L(a*(a+b*)b*)=L(a*ab*+a*b*b*) =L(a*b*)
L1-L2= L1∩L2’ 如果L1和L2是正则的,根据定理4.2,L2’是正则的, 再由定理4.3,L1∩L2’也是正则的。所以,正则语言在差运算
上是封闭的。 定理4.5 如果L1和L2是正则语言,那么L1L2和L1*也都是正则
语言。 证明: 如果L1和L2是正则的,那么一定存在正则表达式r1和r2,使得
3
例1 设DFA M如图所示
1
0
Start
它接受的语言为L={w01| w{0,q 0
1}* },即接受所有以01结尾的0 和1组成的串, 用正则表达式的形式描述就是
L(M)=(0+1)*01
0
1
Biblioteka Baidu
q
q2
1
0
1
*-L就是所有不以01结尾的由0
1
0
和1组成的串。
右图给出了*-L (M)的自动机, Start
14
定理4.8 设 h是字母表到上的同态映射, L是字母表 上的正则语言,则h-1(L)也是字母表上正则语言。即正 则语言在逆同态运算上是封闭的。 (证明略) 定义4.3 设L1和L2是定义在同一个字母表上的语言,我 们称
L1/L2={x|xy L1对于某个y L2} 为L1和L2的右商(right quotient)。 由定义可以看出, L1和L2的右商中的符号串可以这样求 出:先找出L1中所有其后缀属于L2的符号串,由每个这 样的符号串去掉后缀后形成的符号串都属于L1/L2。
定理4.9 如果L1和L2是正则语言,那么L1/L2也是正则语言。 即正则语言在右商运算上是封闭的。 证明: 设M=(Q, , ,q0,F)是DFA,且L1=L(M) 构造一个DFA M’=(Q, , ,q0,F’), 其中F’={qi| qi Q且 y L2,使得 (qi,y)F}
相关文档
最新文档