形式语言与自动机课件-第04章 正则表达式
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不能因为从初始状态q0到达终结状态qf ,所以这个NFA 只能接受 空集。
正则表达式和有穷自动机的关系
(2)r=ε, 对应的 NFA M是:
因为q0既是初始状态,又是终结状态,同时M也没有其他转移 动作,所以这个NFA 只能接受{ε}。 (3)r=a (a∈∑), 对应的 NFA M是:
因为这个NFA只有一个转移r函数δ(q0 ,a)={qf},而qf又是终 结状态,所以这个NFA 只接受{a}。
正则表达式和有穷自动机的关系
对于新构造的这个ε-NFA M,可以形象地用图表示如下:
可以看出,M从q0出发有两个ε转移,一个是进入M1的初始状态 q1 ,开始模拟M1的动作;另一个是直接到M的终结状态f0,使M 能接受空串ε。当M1到达它的终结状态f1后,又有两个ε转移,一 个是返回到M1的初始状态q1,继续模拟M1的动作,以保证M能重 复接受M1所能接受的一切字符串;另一个是到M的终结状态f0,结 束M的动作。因此,M所接受的集合恰好是 M1所接受集合的闭包, 即L(M)=L(M1)*。定理证完。
正则表达式和有穷自动机的关系
对于新构造的这个ε-NFA M,可以形象地用图表示如下:
可以看出,M从它的初始状态q1(也是M1的初始状态)出发,开 始模拟M1的动作,到达M1的终结状态f1以后,不用读任何符号马 上转移到M2的初始状态q2 ,然后继续模拟M2的动作,到达M2的 终结状态f2,也就是到达了M的终结状态。显然,M接受的集合恰 好是M1接受的集合和M2接受的集合的连接,也就是L(M)= L(M1)L(M2)。
正则表达式和有穷自动机的关系
定理4.1 设r是一个正则表达式,则存在一个具有ε-转移的有穷自 动机接受L(r)。
证明 我们对构成r的构造数目作归纳法证明一个比定理更强的命 题:存在一个具有ε-转移的有穷自动机 M,M只有一个终结状态 且没有从该状态出发的任何转移动作,使得 L(M)=L(r)。 归纳基础 设构成r的构造数目为0,即r是没有经过任何“+”、 “连接”和“*”构造的正则表达式,因此它只能是 φ,ε 或 ∑中 的某个符号a,下面针对这三种情况分别讨论。 (1)r=φ, 对应的 NFA M是:
正则表达式和有穷自动机的关系
归纳步骤 设对少于i(i≥1)次构造构成的正则表达式命题成立,现在的正 则表达式r由i次构造构成。根据r最后一次构成的形式,分三种情况讨论:
情况1 r = r1 + r2 。这里r1 和r2都是由少于i次构造构成的正则表达式, 所以根据归纳法假设,存在NFA M1 =( Q1 ,∑1 ,δ1 ,q1 ,{f1}),使得 L(M1)=L(r1);存在NFA M2 =( Q2 ,∑2 ,δ2 ,q2 ,{f2}),使得 L(M2)=L(r2)。不妨假定Q1 , Q2不相交,现构造新的NFA M = (Q1 ∪ Q2∪{q0 ,f0}, ∑1∪∑2 ,δ,q0 ,{f0}),其中δ定义为: (1)δ(q0 ,ε)={q1 ,q2}; (2)对于Q1-{f1}中的q ,∑1∪{ε}中的a, δ(q ,a)= δ1(q ,a); (3)对于Q2-{f2}中的q ,∑2∪{ε}中的a, δ(q ,a)= δ2(q ,a); (4)δ(f1 ,ε)={f0},δ(f2 ,ε)={f0}。
正则表达式的定义
为了尽量减少括号,我们做如下的约定:
(1)每个正则表达式最外层的一对括号可以省略。
(2)规定正则表达式构造的优先次序为:
①*
最高级
② 连接(如 rs )
次高级
③+
最低级
凡是符合此种顺序的,括号可以省略。
(3)同一种构造(如同为 +,连接或 *)连续出现时,规定从左到右依
次构造,中间的括号可以省略。
然后,再把r1表示成r3 r4 的形式,此时,r3 =1,r4 =0* 。对应于 r3的NFA也很容易得到,它是:
正则表达式和有穷自动机的关系
下面,r4是r5*的形式,此时r5 =0。对应于r5的NFA是:
为了构造一个对应于r4 =r5* 的NFA,根据定理4. 2. 1中情况3的 做法,得到如下的NFA:
正则表达式的定义
0*1+1*0,为什么是一个正则表达式,它代表的集合 应该是什么?
根据定义,因为字母表是{0,1},所以其字母0和1本 身都是正则表达式,它们代表的集合分别是{0}和{1}; 然后由0构造(0*),由1构造(1*),得到两个新的正则表 达式,它们代表的集合分别是{0}*和{1}*;再由(0*) 和1连接,得到((0*)1), 由(1*)和0连接,得到((1*)0), 它们代表的集合分别是{0}*{1}和{1}*{0};最后由 ((0*)1) 和((1*)0)这两个正则表达式通过“+”号, 构造出正则表达式(((0*)1)+((1*)0)) 它们代表的集合 就是{0}*{1}∪{1}*{0}。
正则表达式的定义
定义 4.1 设∑是一个字母表,∑上的正则表达式以及 由它们代表的集合,递归地定义如下: (1) φ是一个正则表达式,它代表空集。 (2) ε是一个正则表达式,它代表集合{ε}。 (3) 对于∑中每个符号a , a是正则表达式,它代表集合 {a}。 (4) 如果r和s是正则表达式,它们分别代表集合R和S, 则(r+s),(rs)和(r*)是正则表达式,并分别代表集合 R∪S, RS和R*。 正则表达式R代表的集合记为L(R)。
正则表达式和有穷自动机的关系
例4.6 根据定理4.1给出的构造方法,对正则表达式10*+0构造 一个对应的NFA。根据构造的优先次序约定,这个正则表达式的 构造顺序应当是(1(0*))+0,因为最后一次构造是“+”,所以它 具有r = r1 + r2 的形式,这里r1=10*,r2=0。对应于r2的NFA 是很容易得到的,它是:
其次,我们还可以看出,正则表达式和它所代表的集合形式上有 很大的相似性。大致上,正则表达式的“+”相当于集合中的并运 算符“∪”,正则表达式的“*”与集合中的闭包运算符一致,正 则表达式的“连接”相当于集合的连接运算。
正则表达式(((0*)1)+((1*)0))中的括号是如何被逐步省略掉的。 根据约定,首先最外层括号可以去掉,变成((0*)1)+((1*)0);然 后根据构造的优先次序,“*”的优先级高于“连接”的优先级, 所以(0*)与1连接和(1*)与0连接都不用打括号,这就使正则表达 式变成(0*1)+(1*0);再根据构造的优先次序,“连接”的优先 级高于“+”的优先级,这最后一对括号也可以省略,正则表达式 变成了最简单的形式0*1+1*0,这正是我们在例4.1中所给出的。
即使构造一个NFA接受这个S,也要设11个状态和20个δ函数,若 是用DFA那就更复杂了。要用一个正则表达式来代表S,变得简单 多了。
这个正则表达式就是: (0+1)*1(0+1)(0+1)(0+1)(0+1)(0+1)(0+1)(0+1)(0+1)(0+1)
它为什么能代表集合S,很容易解释清楚:主要注意点是保证字符 串倒数第十个符号必须是“1”,在它之前有多少个符号,是什么 符号,都不必关心它。而“1”的后面只能有9个符号(0,1都可 以)!这用正则表达式来表示非常清楚。
例4.2 在字母表{a,b}上,(a+b)*aaa(a+b)*是一个将要定义 的正则表达式,它表示具有下述性质的字符串的集合:开头出现 若干个(也可以不出现)a或b,然后必须连续出现三个a,然后再 出现若干个(也可以不出现)a或b。换句话说,串中至少要连续 出现三个a。这个集合用集合的表示形式就是 {a,b}*{aaa}{a,b}*,我们可以将它和正则表达式的形式再做一 番比较,看看它们的相似之处和不同之处。
例如((0(1*))+0)就可写成01*+0,(((a*)(b)(a*))就可写成 a*ba*。但是,(a+b)* 不可写成a+b*,因为前者表示先构造(a+b),后 构造(a+b)*,结果代表集合{a,b}*;而后者根据优先次序的约定,表示 先构造b*, 再构造a+b*,结果代表集合{a,{b*}};这两个集合显然是不 相等的。
正则表达式的定义
正则表达式中括号对的个数和构造这个正则表达式时所用的构造 次数是相等的。以0和1为基础,构成正则表达式 (((0*)1)+((1*)0))的过程,总共用了5次构造,其中用了两次 “*”构造,两次“连接”构造,一次“+”构造。而正则表达式 (((0*)1)+((1*)0))中,正好有5对括号。
形式语言与自动机
第四章 正则表达式
正则表达式的定义 正则表达式和有穷自动机的关系 正则表达式的等价变换 正则表达式的应用
正则表达式的定义
例4.1 在字母表{0,1}上,0*1+1*0是一个将要定义的正则表 达式,它表示出现若干个0后以一个1结尾,或者出现若干个1后以 一个0结尾的一切字符串的集合。这个集合用集合的表示形式就是 {0}*{1}∪{1}*{0},我们从中可以发现正则表达式表示法和集 合表示法的相似之处和不同之处。
正则表达式的定义
例4.3 给出∑={a,b},则对∑上的一些正则表达式与它们各自所 代表的集合列表示于图4.1中:
正则表达式r 代表的集合L(r)
φ ε a b (a+b) (ab) (a*) ((a+b)*) (a(b*)) ((((a*)b)(a*)))
φ {ε} {a} {b} {a,b} {ab} {a}* {a,b}* {a}{b}* {a}*{b}{a}*
要构造一个正则文法(3型文法)产生上述的十进制正整数的集合, 至少需要29个产生式;要构造一个接受上述集合的DFA , 至少需 要3个状态和30个δ函数;要构造一个接受上述集合的NFA,也至 少需要两个状态和19个δ函数。
正则表达式的定义
例4.5 构造一个正则表达式,使它能代表如下的集合S:S的每个 元素都是倒数第十个字符是1的0、1串。
正则表达式和有穷自动机的关系
对于新构造的这个ε-NFA M,可以形象地用图表示如下:
可以看出,M从它的初始状态q0出发,不用读任何符号即可同时进 入M1和M2,然后,完全模拟M1和M2的动作,直到达到它们各自 的终结状态f1和f2 。M在这两个状态上,也不用读任何符号即可进 入它自己的终结状态f0 。显然,M接受的集合恰好是M1和M2接受 的集合的并集,即L(M)= L(M1)∪L(M2)。
正则表达式的定义
例4.4 构造一个正则表达式,使它能代表十进制正整数的集合。 十进制正整数,根据正则表达式的表现方式,可以用R=
(0+1+2+3+4+5+6+7+8+9)* 来表示。 但有两点欠缺:
包含有空串ε; 包含有由若干个0开头的串。
使之变为 (1+2+3+4+5+6+7+8+9)(0+1+2+3+4+5+6+7+8+9)*, 这个正则表达式代表的集合是 {1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}*,
正则表达式和有穷自动机的关系
情况3 r = r1* 。r1是由少于i次构造构成的正则表达 式,所以根据归纳法假设,存在NFA M1 = ( Q1 ,∑1 ,δ1 ,q1 ,{f1}),使得L(M1)=L(r1)。现在构 造ε-NFA M =(Q1 ∪{q0,f0},∑1 ,δ1 ,q0 ,{f0}),其 中δ定义为: (1)δ(q0 ,ε)={q1,f0}; (2)对于Q1-{f1}中的q ,∑1∪{ε}中的a, δ(q ,a)= δ1(q ,a); (3)δ(f1,ε)={q1,f0}。
正则表达式和有穷自动机的关系
情况2 r = r1 r2 。设M1和M2与在情况1中的表示相同, 仍假定Q1 , Q2不相交,现构造新的NFA M = (Q1 ∪ Q2 , ∑1∪∑2 ,δ,q1 ,{f2}),其中δ定义为: (1)对于Q1-{f1}中的q ,∑1∪{ε}中的a, δ(q ,a)= δ1(q ,a); (2)δ(f1 ,ε)={q2}; (3) 对于Q2中的q ,∑2∪{ε}中的a, δ(q ,a)= δ2(q ,a)。
正则表达式和有穷自动机的关系
(2)r=ε, 对应的 NFA M是:
因为q0既是初始状态,又是终结状态,同时M也没有其他转移 动作,所以这个NFA 只能接受{ε}。 (3)r=a (a∈∑), 对应的 NFA M是:
因为这个NFA只有一个转移r函数δ(q0 ,a)={qf},而qf又是终 结状态,所以这个NFA 只接受{a}。
正则表达式和有穷自动机的关系
对于新构造的这个ε-NFA M,可以形象地用图表示如下:
可以看出,M从q0出发有两个ε转移,一个是进入M1的初始状态 q1 ,开始模拟M1的动作;另一个是直接到M的终结状态f0,使M 能接受空串ε。当M1到达它的终结状态f1后,又有两个ε转移,一 个是返回到M1的初始状态q1,继续模拟M1的动作,以保证M能重 复接受M1所能接受的一切字符串;另一个是到M的终结状态f0,结 束M的动作。因此,M所接受的集合恰好是 M1所接受集合的闭包, 即L(M)=L(M1)*。定理证完。
正则表达式和有穷自动机的关系
对于新构造的这个ε-NFA M,可以形象地用图表示如下:
可以看出,M从它的初始状态q1(也是M1的初始状态)出发,开 始模拟M1的动作,到达M1的终结状态f1以后,不用读任何符号马 上转移到M2的初始状态q2 ,然后继续模拟M2的动作,到达M2的 终结状态f2,也就是到达了M的终结状态。显然,M接受的集合恰 好是M1接受的集合和M2接受的集合的连接,也就是L(M)= L(M1)L(M2)。
正则表达式和有穷自动机的关系
定理4.1 设r是一个正则表达式,则存在一个具有ε-转移的有穷自 动机接受L(r)。
证明 我们对构成r的构造数目作归纳法证明一个比定理更强的命 题:存在一个具有ε-转移的有穷自动机 M,M只有一个终结状态 且没有从该状态出发的任何转移动作,使得 L(M)=L(r)。 归纳基础 设构成r的构造数目为0,即r是没有经过任何“+”、 “连接”和“*”构造的正则表达式,因此它只能是 φ,ε 或 ∑中 的某个符号a,下面针对这三种情况分别讨论。 (1)r=φ, 对应的 NFA M是:
正则表达式和有穷自动机的关系
归纳步骤 设对少于i(i≥1)次构造构成的正则表达式命题成立,现在的正 则表达式r由i次构造构成。根据r最后一次构成的形式,分三种情况讨论:
情况1 r = r1 + r2 。这里r1 和r2都是由少于i次构造构成的正则表达式, 所以根据归纳法假设,存在NFA M1 =( Q1 ,∑1 ,δ1 ,q1 ,{f1}),使得 L(M1)=L(r1);存在NFA M2 =( Q2 ,∑2 ,δ2 ,q2 ,{f2}),使得 L(M2)=L(r2)。不妨假定Q1 , Q2不相交,现构造新的NFA M = (Q1 ∪ Q2∪{q0 ,f0}, ∑1∪∑2 ,δ,q0 ,{f0}),其中δ定义为: (1)δ(q0 ,ε)={q1 ,q2}; (2)对于Q1-{f1}中的q ,∑1∪{ε}中的a, δ(q ,a)= δ1(q ,a); (3)对于Q2-{f2}中的q ,∑2∪{ε}中的a, δ(q ,a)= δ2(q ,a); (4)δ(f1 ,ε)={f0},δ(f2 ,ε)={f0}。
正则表达式的定义
为了尽量减少括号,我们做如下的约定:
(1)每个正则表达式最外层的一对括号可以省略。
(2)规定正则表达式构造的优先次序为:
①*
最高级
② 连接(如 rs )
次高级
③+
最低级
凡是符合此种顺序的,括号可以省略。
(3)同一种构造(如同为 +,连接或 *)连续出现时,规定从左到右依
次构造,中间的括号可以省略。
然后,再把r1表示成r3 r4 的形式,此时,r3 =1,r4 =0* 。对应于 r3的NFA也很容易得到,它是:
正则表达式和有穷自动机的关系
下面,r4是r5*的形式,此时r5 =0。对应于r5的NFA是:
为了构造一个对应于r4 =r5* 的NFA,根据定理4. 2. 1中情况3的 做法,得到如下的NFA:
正则表达式的定义
0*1+1*0,为什么是一个正则表达式,它代表的集合 应该是什么?
根据定义,因为字母表是{0,1},所以其字母0和1本 身都是正则表达式,它们代表的集合分别是{0}和{1}; 然后由0构造(0*),由1构造(1*),得到两个新的正则表 达式,它们代表的集合分别是{0}*和{1}*;再由(0*) 和1连接,得到((0*)1), 由(1*)和0连接,得到((1*)0), 它们代表的集合分别是{0}*{1}和{1}*{0};最后由 ((0*)1) 和((1*)0)这两个正则表达式通过“+”号, 构造出正则表达式(((0*)1)+((1*)0)) 它们代表的集合 就是{0}*{1}∪{1}*{0}。
正则表达式的定义
定义 4.1 设∑是一个字母表,∑上的正则表达式以及 由它们代表的集合,递归地定义如下: (1) φ是一个正则表达式,它代表空集。 (2) ε是一个正则表达式,它代表集合{ε}。 (3) 对于∑中每个符号a , a是正则表达式,它代表集合 {a}。 (4) 如果r和s是正则表达式,它们分别代表集合R和S, 则(r+s),(rs)和(r*)是正则表达式,并分别代表集合 R∪S, RS和R*。 正则表达式R代表的集合记为L(R)。
正则表达式和有穷自动机的关系
例4.6 根据定理4.1给出的构造方法,对正则表达式10*+0构造 一个对应的NFA。根据构造的优先次序约定,这个正则表达式的 构造顺序应当是(1(0*))+0,因为最后一次构造是“+”,所以它 具有r = r1 + r2 的形式,这里r1=10*,r2=0。对应于r2的NFA 是很容易得到的,它是:
其次,我们还可以看出,正则表达式和它所代表的集合形式上有 很大的相似性。大致上,正则表达式的“+”相当于集合中的并运 算符“∪”,正则表达式的“*”与集合中的闭包运算符一致,正 则表达式的“连接”相当于集合的连接运算。
正则表达式(((0*)1)+((1*)0))中的括号是如何被逐步省略掉的。 根据约定,首先最外层括号可以去掉,变成((0*)1)+((1*)0);然 后根据构造的优先次序,“*”的优先级高于“连接”的优先级, 所以(0*)与1连接和(1*)与0连接都不用打括号,这就使正则表达 式变成(0*1)+(1*0);再根据构造的优先次序,“连接”的优先 级高于“+”的优先级,这最后一对括号也可以省略,正则表达式 变成了最简单的形式0*1+1*0,这正是我们在例4.1中所给出的。
即使构造一个NFA接受这个S,也要设11个状态和20个δ函数,若 是用DFA那就更复杂了。要用一个正则表达式来代表S,变得简单 多了。
这个正则表达式就是: (0+1)*1(0+1)(0+1)(0+1)(0+1)(0+1)(0+1)(0+1)(0+1)(0+1)
它为什么能代表集合S,很容易解释清楚:主要注意点是保证字符 串倒数第十个符号必须是“1”,在它之前有多少个符号,是什么 符号,都不必关心它。而“1”的后面只能有9个符号(0,1都可 以)!这用正则表达式来表示非常清楚。
例4.2 在字母表{a,b}上,(a+b)*aaa(a+b)*是一个将要定义 的正则表达式,它表示具有下述性质的字符串的集合:开头出现 若干个(也可以不出现)a或b,然后必须连续出现三个a,然后再 出现若干个(也可以不出现)a或b。换句话说,串中至少要连续 出现三个a。这个集合用集合的表示形式就是 {a,b}*{aaa}{a,b}*,我们可以将它和正则表达式的形式再做一 番比较,看看它们的相似之处和不同之处。
例如((0(1*))+0)就可写成01*+0,(((a*)(b)(a*))就可写成 a*ba*。但是,(a+b)* 不可写成a+b*,因为前者表示先构造(a+b),后 构造(a+b)*,结果代表集合{a,b}*;而后者根据优先次序的约定,表示 先构造b*, 再构造a+b*,结果代表集合{a,{b*}};这两个集合显然是不 相等的。
正则表达式的定义
正则表达式中括号对的个数和构造这个正则表达式时所用的构造 次数是相等的。以0和1为基础,构成正则表达式 (((0*)1)+((1*)0))的过程,总共用了5次构造,其中用了两次 “*”构造,两次“连接”构造,一次“+”构造。而正则表达式 (((0*)1)+((1*)0))中,正好有5对括号。
形式语言与自动机
第四章 正则表达式
正则表达式的定义 正则表达式和有穷自动机的关系 正则表达式的等价变换 正则表达式的应用
正则表达式的定义
例4.1 在字母表{0,1}上,0*1+1*0是一个将要定义的正则表 达式,它表示出现若干个0后以一个1结尾,或者出现若干个1后以 一个0结尾的一切字符串的集合。这个集合用集合的表示形式就是 {0}*{1}∪{1}*{0},我们从中可以发现正则表达式表示法和集 合表示法的相似之处和不同之处。
正则表达式的定义
例4.3 给出∑={a,b},则对∑上的一些正则表达式与它们各自所 代表的集合列表示于图4.1中:
正则表达式r 代表的集合L(r)
φ ε a b (a+b) (ab) (a*) ((a+b)*) (a(b*)) ((((a*)b)(a*)))
φ {ε} {a} {b} {a,b} {ab} {a}* {a,b}* {a}{b}* {a}*{b}{a}*
要构造一个正则文法(3型文法)产生上述的十进制正整数的集合, 至少需要29个产生式;要构造一个接受上述集合的DFA , 至少需 要3个状态和30个δ函数;要构造一个接受上述集合的NFA,也至 少需要两个状态和19个δ函数。
正则表达式的定义
例4.5 构造一个正则表达式,使它能代表如下的集合S:S的每个 元素都是倒数第十个字符是1的0、1串。
正则表达式和有穷自动机的关系
对于新构造的这个ε-NFA M,可以形象地用图表示如下:
可以看出,M从它的初始状态q0出发,不用读任何符号即可同时进 入M1和M2,然后,完全模拟M1和M2的动作,直到达到它们各自 的终结状态f1和f2 。M在这两个状态上,也不用读任何符号即可进 入它自己的终结状态f0 。显然,M接受的集合恰好是M1和M2接受 的集合的并集,即L(M)= L(M1)∪L(M2)。
正则表达式的定义
例4.4 构造一个正则表达式,使它能代表十进制正整数的集合。 十进制正整数,根据正则表达式的表现方式,可以用R=
(0+1+2+3+4+5+6+7+8+9)* 来表示。 但有两点欠缺:
包含有空串ε; 包含有由若干个0开头的串。
使之变为 (1+2+3+4+5+6+7+8+9)(0+1+2+3+4+5+6+7+8+9)*, 这个正则表达式代表的集合是 {1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}*,
正则表达式和有穷自动机的关系
情况3 r = r1* 。r1是由少于i次构造构成的正则表达 式,所以根据归纳法假设,存在NFA M1 = ( Q1 ,∑1 ,δ1 ,q1 ,{f1}),使得L(M1)=L(r1)。现在构 造ε-NFA M =(Q1 ∪{q0,f0},∑1 ,δ1 ,q0 ,{f0}),其 中δ定义为: (1)δ(q0 ,ε)={q1,f0}; (2)对于Q1-{f1}中的q ,∑1∪{ε}中的a, δ(q ,a)= δ1(q ,a); (3)δ(f1,ε)={q1,f0}。
正则表达式和有穷自动机的关系
情况2 r = r1 r2 。设M1和M2与在情况1中的表示相同, 仍假定Q1 , Q2不相交,现构造新的NFA M = (Q1 ∪ Q2 , ∑1∪∑2 ,δ,q1 ,{f2}),其中δ定义为: (1)对于Q1-{f1}中的q ,∑1∪{ε}中的a, δ(q ,a)= δ1(q ,a); (2)δ(f1 ,ε)={q2}; (3) 对于Q2中的q ,∑2∪{ε}中的a, δ(q ,a)= δ2(q ,a)。