第三章(续二)正则语言性质

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

通过合并等价的状态进行 DFA 的优化
步骤 1. 删除所有从开始状态不可到达的状态及与其相关的边, 设所得到的 DFA 为 A = (Q, T, , q0 , F ) ; 2. 使用填表算法找出所有等价的状态偶对; 3. 根据 2 的结果计算当前状态集合的划分块,每一划分 块中的状态相互之间等价,而不同划分块中的状态之 间都是可区别的. 包含状态 q 的划分块用 [q] 表示.
4. 构造与 A 等价的 DFA B = (QB, T, B, [q0], FB ) , 其中 QB={ [q] | qQ}, FB = { [q] | qF}, B([q] ,a)=[ (q,a)]
College of Computer Science & Technology, BUPT
15
DFA 的“Pumping”特性
设 DFA D = (Q, T, , q0 , F ), |Q|=n.
对于任一长度不小于 n 的字符串 w = a1a2…am , 其中 mn, akT (1 k m), qQ , 考察如下状态序列
p0=q p1='(q, a1) p2='(q, a1a2) … pn='(q, a1a2…an ) pn+1='(q, a1a2…an+1 ) … pm='(q, a1a2…am ) 由pigeonhole 原理, p0, p1, p2, …, pn 中至少有两 个状态是重复的,即存在 i, j, 0ijn, pi=pj .
B
确定有限自动机DFA的化简(极小化)
对DFA M的极小化是找出一个状态数比M少的 DFA M1,使满足 L(M) = L(M1) 1.状态等价和可区分的概念 设DFA M = (Q,T,δ,q0,F) 对不同的状态q1, q2∈Q 和每个ω∈T*, 如果有 (q1,ω)┣* (q,ε) 必有 (q2,ω)┣* (q,ε) 且q∈F , 则称q1与q2状态等价. 记为q1≡q2 否则,称q1, q2可区分.
College of Computer Science & Technology, BUPT
Fra Baidu bibliotek
9
计算状态集划分的算法— 填表法
填表算法举例
2 3 4 5 6 7
Start 1 a a a b b 6 b 3 b b 2 5 a b b a 7 4 a a
x
x x x x
1
x
x x x x
2
x x x x
– 新的状态集合:
[1], [3], [4], [5], [6]
College of Computer Science & Technology, BUPT
12
最小化的 DFA
课堂练习 最小化下列 DFA:
a 4 a Start 1 a b b 3 b
a Start [1] a b b [3] b [6] b a
College of Computer Science & Technology, BUPT 4
确定有限自动机DFA的化简
2.不可达状态 如果不存在任何ω∈T*,使(q0,ω)┣* (q,ε), 则称状态q∈Q为不可达状态. 3. 最小化 若DFA M不存在互为等价状态及不可达状态,则称 DFA M是最小化的.
a a 7
6
b b 5
a b 2 a
b
参考结果
[4]
a
College of Computer Science & Technology, BUPT
13
第三章
主要内容: DFA的极小化 泵浦引理 右线性语言的封闭性 正则语言判定性质
College of Computer Science & Technology, BUPT
3.9 右线性(正则)语言的性质
主要内容: DFA的极小化 泵浦引理 右线性语言的封闭性 正则语言的判定性质
找到一个等价于某个给定的自动机, 且状态数尽可能少的自动机。 这是数十年来在开关电路设计上的重 要问题---电路成本、状态数。
能够帮助我们识别出哪些 语言不是正则的。 了解FA的局限性,即:某 些语言是不可能用有限自 动机识别的。
对字符a,有δ(q2,a)= q3,δ(q4,a)= q1 对字符b,有δ(q2,b)= q4,δ(q4,a)= q2 (b) 对于π” = { q0, q1, q3}
∴ π’ = { q2, q4} 不能再细分. 可用q2表示π’ 状态.
对a,δ(q0,a)= q1,δ(q1,a)= q1,δ(q3,a)= q3 q1, q3∈同一子集 对b,δ(q0,b)= q3,δ(q1,b)= q2,δ(q3,b)= q4 q3, q2, q4 同一子集.
能够从一些语言出发,通过一定 的运算,构造识别另一些语言的 识别器
College of Computer Science & Technology, BUPT 1
确定有限自动机DFA的化简(极小化)

问题的提出: 1. 是否存在需要化简的DFA?

举例说明:见下页

如何进行化简?---合并同类项(等价状态) 3. 如何找出DFA中的等价状态? 研究思路: 1. 需给出什么是等价状态的定义 2. 提出如何找等价状态的方法---算法 3. 如果算法复杂度高,是否还有其它的变通方法。
College of Computer Science & Technology, BUPT
6
最小化算法
一个DFA M的最小化,是把M的状态集Q构成一个划分。
即: 任何两个子集的状态都是可区分的;同一子集中的任何两个状 态都是等价的。之后,每个子集用一个状态代表,并取一个状态 名. 因为在ε下是可区分 构成划分的步骤: 1. 构成基本划分 ∏={π’, π”}, (∏’为终态集,∏”为非终 态集) 2. 细分 ∏’={π1, π2,…, πn}, π i ∈∏’ πi ={ q1, q2,…, qm} 当输入任意字符a时,若πi中的状态经标a的边可到达的状态集的 元素分属于两个不同的子集中,则将πi 细分为两个子集. 重复步骤(2),直至不可再细分,得到M1.
3
x x x
4
(1) 区别所有终态和非终态
x x
5 6
(2) 区别(1,3), (1,4), (2,3), (2,4), (5,6), (5,7) (3) 区别 (3,4)
(4) 结束. 划分结果:{1,2}, {3}, {4}, {5}, {6,7}
College of Computer Science & Technology, BUPT 10
∴将π’’再分解.π’’={ { q0},{ q1,q3} },{q1,q3} 不可再细分,用 q1表示 ∴ Q={ {q0},{q1},{q2} }Technology, BUPT College of Computer Science &
8
计算状态集划分的算法— 填表法
填表算法(table-filling algorithm)基于如下递归地 标记可区别的状态偶对的过程: 基础 如果 p 为终态,而 q 为非终态,则 p 和 q 标记 为可区别的; 归纳 设 p 和 q 已标记为可区别的, 如果状态 r 和 s 通过某个 输入符号 a 可分别转移到 p 和 q ,即 (r,a)=p , (s,a)=q , 则 r 和 s 也标记为可区别的; 这是因为:若 p 和 q 可为字符串 w 区别, 则 r 和 s 可 为字符串 aw 区别. ( ∵ '(r,aw) ='(p,w) , '(s,aw) ='(q,w) )
“pumping” 特性: 任一长度不小于状态数目 的字符串所标记的路径上, 必然出现重复的状态.
16
College of Computer Science & Technology, BUPT
DFA 的“Pumping”特性
“pumping” 特性:如前,设 DFA D = (Q, T, , q0 , F ), |Q|=n, w = a1a2…am (mn), 则存在 i, j, 0ijn, pi=pj , 其中pk='(p0, a1a2…ak ) , 0km. 若假定p0 = q0 , pmF, 即wL(D). 令 w = xyz, 其中: x = a1a2…ai , y = ai+1ai+2…aj , z = aj+1aj+2…am 则对任何k 0,都有 xykz L(D).
College of Computer Science & Technology, BUPT 7

(1) q5,q6为不可达状态,删除之. (2) Q = { q0,q1,q2,q3,q4}, ∏= {{q2,q4} ,{q0,q1,q3} } (a) 对于π’={ q2, q4}, 构成基本划分 ∏={π’, π”} q1, q3∈ 同一子集. q4, q2∈ 同一子集.
2.
College of Computer Science & Technology, BUPT 2
DFA的化简(极小化)的举例
0 A 0 1 E 1 F 1 0
College of Computer Science & Technology, BUPT 3
1 1 0 0 1 G 0 1 0 1 H C 0 D
College of Computer Science & Technology, BUPT
5
确定有限自动机DFA的化简





新的问题提出:如何判断两个状态p,q等价的算法? 按照定义,需set(p),set(q)中找到合适的字符串x,y, 然后确定另一字符串z,判断是否xz∈L ,yz∈L 显然该算法的时间复杂度很高。 还有其它方法吗? 换个思路,不考虑哪些状态能合并,而是考虑哪些 状态不能合并---可区分。 显然,终止状态与非终止状态是“可区分”。 继续反向推出其它状态是否“可区分”
y = ai+1ai+2…aj
Start
(参考下图)
p0
x = a1a2…ai
pi
z=aj+1aj+2…am
pm
College of Computer Science & Technology, BUPT
17
Pumping 引理的应用
( 用于证明某个语言 L 不是正规语言)
证明步骤 1. 选任意的n. 2. 找到一个满足以下条件的串wL (长度至少为n). 3. 任选满足w = xyz y |xy| n 的x,y,z 4. 找到一个 k 0, 使 xykz L. 将泵浦引理当作“PK” 甲:选择一个想要证明非正则语言L; 乙:选择n; 甲:选择ω,长度至少是n; 乙:将ω分成ω1ω0ω2 ;同时满足泵浦中的限定条件; 如果甲能够选择k使得ω1ωk0ω2 不属于L,那甲就赢得比赛。
11
通过合并等价的状态进行 DFA 的优化
举例
a Start 1 a b b 3 b
a a Start [1] a b b [3] b a b [5] [6] b [4] a
a 6 b b 5 b
4 a a
a
– 等价的状态偶对为: (1, 2),(6, 7)
7
a 2 b
– 划分结果: { 1, 2 }, {3}, {4}, {5}, { 6, 7 }
College of Computer Science & Technology, BUPT 18
例1、 证明L={ anbn | n≥1 }不是正则集. 证明: 由泵浦引理,假设L是正则集,则对足够大的n, anbn可写成ω1ω0ω2,其中: 0< |ω0|≤n,|ω|= 2n > n 若ω0 = a+ 或b+,设|ω0|=k≥1,k为常数, • 取i=0,有ω1ω00ω2 = ω1ω2 = an-kbn 或anbn-k, 此时,a,b字符个数不同,即新组成的串ω1ω2L. 若ω0 = a+b+,可取i=2, 有ω1ω0ω0ω2 = ω1a+b+a+b+ω2 L ∴ 与假设矛盾,故L不是正则集.
14
针对正则语言的 Pumping 引理
正则语言应满足的一个必要条件
用于判定给定的语言不是正则集。
物理意义:当给定一个正则集和该集合上一个足够长的字符串 时,在该字符串中能找到一个非空的子串,并使子串重复,从
而组成新的字符串。该新串必在同一个正则集内。
定理:
设L是正则集,存在常数k,对所有字符串ω∈L 且|ω|≥k ,则ω可写成ω1ω0ω2,其中|ω1ω0|≤k, |ω0|>0,对 所有的i≥0有ω1ω0iω2∈L。 证明 设 L 是 DFA D = (Q, T, , q0 , F ) 的语言, 取 k = |Q| 即 可. • College of Computer Science & Technology, BUPT
相关文档
最新文档