形式语言与自动机 5 DFA与NFA等价性及正则运算封闭性

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

www.yule520.net
4
UJS



―自己即自动化机”——如果我们自己是一台 DFA自动机,如何模拟这台NFA? 在处理输入串的过程中,你需要记住什么?— —放着手指的状态的集合——NFA中用多个 “手指”放在每一个可能的活动状态上,用这 种方法记住各个计算分支 设k是NFA的状态数,它有2k个状态子集。每 一个子集对应模拟这台NFA的DFA必须记住的 一种可能性,即这个DFA有2k个状态。幂集? 还需要给出起始状态和接受状态

6/13/2012 10:16 PM
www.yule520.net
10
UJS

说明:
– 上述证明使用的构造较为简单,可以比较显 然的观察到其正确性。 – 对于更复杂的构造,需要证明它是否如所声 称的那样工作。 – 通常这种证明采用对计算的步数做归纳的方 式进行,后面将给一个这样的例子。
6/13/2012 10:16 PM
www.yule520.net
17
UJS
第五章 DFA与NFA等价性 及正则运算封闭性
5.1 NFA 与DFA的等价性 5.2 正则语言类在正则运算下的封闭性

– 5.2.1并运算下的封闭性 – 5.2.2 连接运算下的封闭性 – 5.2.3 星号运算下的封闭性
6/13/2012 10:16 PM

6/13/2012 10:16 PM www.yule520.net 3
UJS
定理1 每一台非确定型有穷自动机都有一 台等价的确定型有穷自动机 证明思路:设一个语言被一台NFA识别, 必须证明存在一台DFA也识别这个语言。 基本想法就是把NFA转换成模拟它的 DFA。

6/13/2012 10:16 PM
www.yule520.net
20
UJS
证明:设N1 = (Q1, ∑, δ1, q1, F1 )识别A1,N2 = (Q2, ∑, δ2, q2, F2 )识别A2。构造识别A1∪A2 的自动机N = (Q, ∑, δ, q0, F )。 (1) Q = { q0}∪Q1∪Q2 (2) q0是N的起始状态 (3) F = F1∪F2 (4) 定义δ如下:对于每一个q∈Q每一个a∈∑ε, 下式成立:

– 5.2.1并运算下的封闭性 – 5.2.2 连接运算下的封闭性 – 5.2.3 星号运算下的封闭性
6/13/2012 10:16 PM
www.yule520.net
2
UJS
NFA、DFA识别相同的语言类。这个等 价性是出人意料的——因为NFA好像比 DFA的能力强,因此我们猜想它能识别 更多的语言,但是却是非常有用的—— 因为对于给定的语言,描述识别这个语 言的NFA又是比描述识别这个语言的 DFA要容易得多。 如果两台机器识别相同的语言,则称它 们是等价的。
δ’ (R, a) = { q∈Q |存在r∈R,使得q∈E(δ (r, a))}
6/13/2012 10:16 PM
www.yule520.net
9
UJS
此外,还需要修改M的起始状态,增加 由N的起始状态出发沿着ε箭头可以到达 的所有状态上。从形式上说,就是把q0 改为E({q0}) 至此,完成与NFA等价的DFA的构造, 在计算的每一步,M进入的状态明显地 对应于N此时可能处于的状态子集。证毕。
6/13/2012 10:16 PM www.yule520.net 13
UJS
a ,b
空 集 b { 3} a a {1} b b { 1,3} b a { 2,3} b b {2} a ,b a a { 1,2,3} { 1,2}
a
可以简化这台机器, 删掉没有箭头射入的两个状态:{1},{1, 2}
6/13/2012 10:16 PM
www.yule520.net
7
UJS

q0’ = { q0}
M开始时所在的状态对应于只含有N的起始 状态的集合

F’= { R∈Q’| R包含N的一个接受状态}
如果当时N的可能状态中有一个接受状态, 则机器M接受
6/13/2012 10:16 PM
www.yule520.net
显然,A1∪A2是自动机N识别的语言, 因此是正则语言。
6/13/2012 10:16 PM
www.yule520.net
22
UJS
第五章 DFA与NFA等价性 及正则运算封闭性
5.1 NFA 与DFA的等价性 5.2 正则语言类在正则运算下的封闭性

– 5.2.1并运算下的封闭性 – 5.2.2 连接运算下的封闭性 – 5.2.3 星号运算下的封闭性
6/13/2012 10:16 PM
www.yule520.net
16
UJS源自文库
前面已经说过,正则语言在正则运算下 是封闭的。正则运算有三个运算:并运 算、连接运算以及星号运算。我们仅完 成了并运算的证明,而放弃了连接运算 封闭性的证明,因为太复杂。 有了非确定性,能让证明容易多了。

6/13/2012 10:16 PM
6/13/2012 10:16 PM www.yule520.net 24
UJS
N1
N2

N2
N
N1
A 1 o A 2的 N F A 构 造
6/13/2012 10:16 PM
www.yule520.net
25
UJS

证明:设N1 = (Q1, ∑, δ1, q1, F1 )识别A1, N2 = (Q2, ∑, δ2, q2, F2 )识别A2。构造识 别A1oA2的自动机N = (Q, ∑, δ, q0, F )。
6/13/2012 10:16 PM www.yule520.net 19
UJS

新机器用这种非确定性地猜想这两台老机器中 哪一台接受这个输入。如果他们两台中有一个 接受,那么N也接受。下图给出了这个构造。

N1 N1

N2
N
A1 ∪ A2 的 N F A 构 造
N2
6/13/2012 10:16 PM
– (1) Q = Q1∪Q2 – (2) q1是N的起始状态 – (3) F = F2
6/13/2012 10:16 PM
www.yule520.net
26
UJS

(4) 定义δ如下:对于每一个q∈Q每一个 a∈∑ε, 下式成立:
1 ( q , a ), 1 ( q , a ), (q, a ) { q1 , q 2 } { q 2 }, ( q , a ), 2 q Q 1 , q F1 q F1 , a q F1 , a q Q2
www.yule520.net
11
UJS
推论:一个语言是正则的,当且仅当由 一台非确定型有限状态自动机识别它。 例题1:用前面例子上的机器N4来说明把 NFA转换成DFA的过程。

a
3
a

1
b
a, b
2
N 4的 功 能
6/13/2012 10:16 PM www.yule520.net 12
UJS
6/13/2012 10:16 PM
www.yule520.net
21
UJS
1 ( q , a ), 2 ( q , a ), (q, a ) { q 1 , q 2 }, ,

q Q1 q Q2 q q0 , a q q0 , a
a ,b
空 集 b b { 3} a b {1,3} b a
{2} a {2,3} b a { 1,2,3}
a
14
6/13/2012 10:16 PM
www.yule520.net
UJS

重新排列:
a
a ,b
空 集 b {3}
{2} a b b a {1,3} b a
{ 1,2,3} b a {2,3}
6/13/2012 10:16 PM
www.yule520.net
28
UJS

定理3:正则语言类在星号运算下封闭。 证明思路:有正则语言A1,要证明A1*是正则 的。想法是对A1取台NFA,记为N1,构造一 台新的NFA,记为N,能识别A1*。
– 当输入分为若干段,每一段都被N1接受时,机器N 接受。 – 机器N1的每一个接受状态都添加回到起始状态的ε 箭头。 – 增加一个新状态为N的起始状态,添加一个指向N1 的起始状态的ε箭头(使接受ε),
www.yule520.net 5
6/13/2012 10:16 PM
UJS
证明:设N = (Q, ∑, δ, q0, F )是识别语言 A的NFA,要构造一台DFA为M,识别A。 在给出完整的构造以前,现考虑比较容 易的情况,假设N没有空语句ε箭头。以 后再把ε箭头考虑进来。 构造M = (Q’, ∑, δ’, q0’, F’ ) (1) Q’=P(Q) 幂集,表示的M状态是N的一 个状态子集。
6/13/2012 10:16 PM
www.yule520.net
27
UJS
第五章 DFA与NFA等价性 及正则运算封闭性
5.1 NFA 与DFA的等价性 5.2 正则语言类在正则运算下的封闭性

– 5.2.1并运算下的封闭性 – 5.2.2 连接运算下的封闭性 – 5.2.3 星号运算下的封闭性
8
UJS

上述工作完成了没有ε箭头的NFA转化成DFA 机器M。现在考虑ε箭头,现引入一个记号:
E(R) = { q | 从R出发沿着0个或多个ε箭头可以到达q }

对于M的任意一个状态R, E(R)为从R出发只 沿着ε箭头可以达到的状态集合,修改M的转移 函数,使得在每一步之后,在沿着ε箭头可以 达到的所有状态集合上也“放上手指”,用 E(δ (r, a))代替δ (r, a):
N4 = {{1,2,3},{a,b},δ,1,{1}} {1,2,3}为3个元素的状态集,所以相应的DFA 的状态集有23个元素 空集,{1}, {2}, {3}, {1,2},{1,3},{2,3},{1,2,3} 相应DFA的起始状态E({1}), 表示状态1本身加 上由1出发通过ε箭头能到达的所有状态 相应DFA的接受状态是上述状态中所有包含N4 接受状态1的状态子集。 {1},{1,2},{1,3},{1,2,3} 相应DFA的转移函数——每一个状态遇到输入 a到一个地方,遇到输入b到一个地方。
Jiangsu University
形式语言与自动机
授课 人: 王 良 民 MAIL:wanglm@ujs.edu.cn
6/13/2012 10:16 PM
www.yule520.net
1
UJS
第五章 DFA与NFA等价性 及正则运算封闭性
5.1 NFA 与DFA的等价性 5.2 正则语言类在正则运算下的封闭性
6/13/2012 10:16 PM
www.yule520.net
23
UJS
定理2:正则语言类在连结运算下封闭。 证明思路:有两个正则语言A1和A2,要 证明A1οA2是正则的。想法是对A1和A2 取两台NFA,记为N1和N2,把他们合并 为一台新的NFA,记为N。

– 当输入分为两段,第一段被N1接受,而第二 段被N2接受时,机器N接受。 – 新机器以N1的起始状态为起始状态, – N1的每一个接受状态增加一个ε箭头到N2的 起始状态。

6/13/2012 10:16 PM
www.yule520.net
6
UJS
(2) 对于R∈Q’和a∈∑,令
δ’(R, a) = { q∈Q | 存在r∈R,使得q∈δ (r, a)}
– 如果R是M的一个状态,则它是N的一个状态子集。 – 当M在状态R读到符号a时,δ’(R, a)给出a把R中的状 态转移到…… – 由于每一个状态可以转移到一个状态子集,所以取 所有这些子集的并。 – 上述表达式也可以写成:
www.yule520.net
18
UJS
定理1:正则语言类在并运算下封闭。 证明思路:有两个正则语言A1和A2,要 证明A1∪A2是正则的。想法是对A1和 A2取两台NFA,记为N1和N2,把他们合 并为一台新的NFA,记为N。

– 当N1或N2接受输入时,机器N应该接受这个 输入。 – 新机器有新的起始状态,用空串ε箭头到老 机器的起始状态。
6/13/2012 10:16 PM
www.yule520.net
15
UJS
第五章 DFA与NFA等价性 及正则运算封闭性
5.1 NFA 与DFA的等价性 5.2 正则语言类在正则运算下的封闭性

– 5.2.1并运算下的封闭性 – 5.2.2 连接运算下的封闭性 – 5.2.3 星号运算下的封闭性
相关文档
最新文档