Professional Documents
Culture Documents
正则语言的性质
计算机科学与技术学院
哈尔滨工业大学(深
圳)
汤步洲
问题: Regular or Nonregular
• 如何判定一个语言是否是正则语言 (Regular
Language) ?
• 一个正则语言可以有多种描述形式,能否找到最
小的一个 DFA ?
主要内容
• 正则语言的泵引理
• 正则语言的封闭性
• 正则语言的判定性质
• 自动机的最小化
主要内容
• 正则语言的泵引理
• 正则语言的封闭性
• 正则语言的判定性质
• 自动机的最小化
正则语言的证明
• 思考:如何证明一个语言 L 不是正则语言?
证明没有任何一个 DFA 或 NFA 或 RE 能够接
受L
• 难点:实现困难,需要证明无数 DFA/NFA/RE
4 只鸽子
3 个鸽巢
鸽巢原理
• 如果要把每只鸽子都放到鸽巢中,那么必定有一
个鸽巢中存在至少两只鸽子。
鸽巢原理
n 只鸽子
必定有一个鸽巢中
m 个鸽巢 存在至少两只鸽子
nm
...........
有限状态、无限字符串的情况下,
会是什么情况呢?
正则语言的泵引理
–;
• 中间的串不论循环几次,所得的串仍属于该正则语言。
泵引理的证明
• 如果正则 , 那么存在有个状态 DFA 使 ;
• 取 , 定义 ;
• 当输入的前个字符时,经过的状态分别有 (N+1 个
状态 )
泵引理的证明
• 如果正则 , 那么存在有个状态 DFA 使;
• 取 , 定义 ;
• 当输入的前个字符时,经过的状态分别有 (N+1 个
状态 )
• 因为 DFA 只有个状态,由鸽巢原理 (pigeonhole
principle), 所到达的状态必有两个相同
– 鸽巢原理 : 只鸽子飞入个巢,则至少有一个巢有不少
于两只鸽子。
泵引理的证明
• 不妨设
• 根据和 , 可以把这个路径如图分为三段,分别
是 ,,
– 一段从开始,经过,到达
– 然后经过,到达,因,所以实际到达
– 最后经过,到达
泵引理的证明
• ;
– 在处做循环
• 因为 ,和之间至少有一个字符,故 ( 即 ) ;
• 因为 所以 。
泵引理的解释
• 泵引理的解释:任何从开始状态到接受状态的路
径 , 如果长度超过,一定会经过个状态,必定有
一个重复状态,因此会形成一个循环 (loop) ;
那么,这个循环可以被重复多次后,沿原路径还
会到达接收状态。
• 泵引理可以用来确定特定语言不是正则语言,泵
引理成立是正则语言判定的必要条件,但不是充
分条件
泵引理的解释
• 泵引理趣解:有个啰嗦的老太婆,脑袋里面只有
n 个论点,上台发言的时候说“下面我讲 m 个意
见”,当 m>n 时,至少有一个地方在打圈(发言
激动时尤其如此)(言多必失)。
– 正则语言就是通过打圈,来描述(有某种规律
的)无限集合
泵引理的应用示例
• 例 1: 证明不是正则语言。
• 证明:假设是正则的 ,
– 那么一定存在正整数对 () 满足泵引理。
泵引理的应用示例
• 例 1: 证明不是正则语言。
• 证明:假设是正则的 ,
– 那么一定存在正整数对 () 满足泵引理。
– 从中取,显然 , 且
泵引理的应用示例
• 例 1: 证明不是正则语言。
• 证明:假设是正则的 ,
– 那么一定存在正整数对 () 满足泵引理。
– 从中取,显然 , 且
– 那么 , 可被分为,且。
泵引理的应用示例
• 例 1: 证明不是正则语言。
• 证明:假设是正则的 ,
– 那么一定存在正整数对 () 满足泵引理。
– 从中取,显然 , 且
– 那么 , 可被分为,且。
– 因此,只能是且。
– 那么,而由泵引理,,矛盾。
所以假设不成立, 不是正则的。
主观题 10 分
例 2: 证明 Leq={w| w 由数量相等
的 0 和 1 构成 } 不是正则语言
作答
泵引理的应用示例
• 例 2: 证明 Leq={w| w 由数量相等的 0 和 1 构成 } 不
是正则语言
• 证明:假设是正则的 ,
– 那么一定存在正整数对 () 满足泵引理。
泵引理的应用示例
• 例 2: 证明 Leq={w| w 由数量相等的 0 和 1 构成 } 不
是正则语言
• 证明:假设是正则的 ,
– 那么一定存在正整数对 () 满足泵引理。
– 取 w=0N1N∈Leq ,因为 |w|=2N>N ,则有 w=xyz ,
且 |xy|≤N 和;那么 y 一定是 0m(m=|y|>0) ;
– 那么 xy2z=xy2z=0N+m1NLeq ,根据泵引理 xy2zLeq ,
与假设矛盾;
因此, Leq 一定不是正则的。
主观题 10 分
例 3: 证明不是正则的。
作答
泵引理的应用示例
• 例 3: 证明不是正则的。
• 证明 : 假设是正则的
– 那么一定存在正整数对 () 满足泵引理。
泵引理的应用示例
• 例 3: 证明不是正则的。
• 证明 : 假设是正则的
– 那么一定存在正整数对 () 满足泵引理。
– 从中取,显然 , 且
泵引理的应用示例
• 例 3: 证明不是正则的。
• 证明 : 假设是正则的
– 那么一定存在正整数对 () 满足泵引理。
– 从中取,显然 , 且
– 那么 , 可被分为,且。
– 因此,只能是且
– 那么 , ,因为,而由泵引理, ,矛盾。
所以假设不成立,不是正则的。
主观题 10 分
例 4: 证明不是正则的。
作答
泵引理的应用示例
• 例 4: 证明不是正则的。
证明:假设是正则的
– 那么一定存在正整数对 () 满足泵引理。
泵引理的应用示例
• 例 4: 证明不是正则的。
证明:假设是正则的
– 那么一定存在正整数对 () 满足泵引理。
– 从中取,显然 , 且
– 那么 , 可被分为,且 。
– 因此,只能是且。
– 那么 , ,因为,所以不属于,而由泵引理, ,矛盾。
所以假设不成立,不是正则的。
泵引理的应用示例
• 正则语言的泵引理
• 正则语言的封闭性
• 正则语言的判定性质
• 自动机的最小化
正则语言的封闭性
• 正则语言经某些运算后得到的新语言仍保持正则,
称正则语言在这些运算下封闭。
• 正则语言和,在这些运算下封闭 :
– 并 : ,连接 : ,闭包 :
– 交:
– 反转 :
– 同态 :
– 逆同态 :
– 补:
– 差:
并 / 连接 / 闭包的封闭性
• 定理 : 正则语言在并,连接和闭包运算下保
持封闭。
• 证明 : 由正则表达式的定义得证。
– 比如说,和如果是正则语言,那么一定存在
正则表达式和去表示它们,即
–则,,
主观题 10 分
作答
补运算封闭性
• 定理 : 如果是 上的正则语言 , 那么也是正则的。 ( 求
补就是把对应的字符串从中去掉。)
• 证明 : 设接受语言 的 DFA
即 构造 DFA ,即把的所有终止符改成非终止符,非终止符
改成终止符。
• 则有 ,
因为
主观题 10 分
作答
补运算封闭性应用示例
• 例:证明 , 不是正则的。
– 由泵引理很难直接证明不是正则的,无论如何
取,都无法将其打断为形式,并利用产生不属
于的串。
– 而证明不是正则的很容易证明 ( 当然 , 前面已
经证明 ) 。
– 根据补运算的封闭性,不是正则的。
交运算的封闭性
• 定理:如果和是正则语言,那么也是正则语言。
• 证明 1: 由。
• 证明 2 :通过 DFA 构造来证明。
交运算的封闭性
其中 , ,即 :
则对任意 ,
即,到达的状态,和和组成的二元组是相等的。
交运算的封闭性
• 证明:通过对的归纳来证明
归纳基础 : 当时,
同理
假设的时候成立,
归纳递推:当时,
的定义
归纳假设
的构造
的定义
交运算的封闭性
• 定理:如果和是正则语言,那么也是正则语言。
• 证明 2 :由上一个定理构造的 , 则对
交运算的封闭性
L2 : 0*1(0+1)*
0 1 0 1
pr qr ps ps qs ps
L1ՈL2
qr qr qs qs *qs qs
交运算的封闭性
• 例:如果已知语言不是正则的 , 请用封闭性证明
语言也不是正则的。
• 证明:
– 首先 , 因为是正则语言 ;
–而 ;
– 如果 是正则的 , 必然也是正则的 ;
– 因为已知 不是正则的 , 所以 一定不是正则的
单选题 1分
例 : 如果 和 都不是正则的 , 那
么一定不是正则的吗 ?
A 对
B 错
提交
交运算的封闭性
例 : 如果 和 都不是正则的 , 那
么一定不是正则的吗 ?
交运算的封闭性
• 例 : 如果 和 都不是正则的 , 那么一定不是正则的
吗?
• 不一定 . 因为 , 如果令
• 显然两者都不算正则语言,但
是正则语言。
差运算封闭性
• 定理 : 如果 和 都是正则语言 , 那么 也是正则
的.
• 证明
反转运算的封闭性
• 定义:字符串的反转,记为,定义为
• 语言的反转,记为,定义为
反转运算的封闭性
• 定理:如果是正则语言,那么也是正则的。
• 证明 1 :假设是由正则表达式描述的语言,对进
行归纳。
归纳基础:如果分别是,或,则, ,
反转运算的封闭性
归纳递推:如果存在两个正则表达式和满足和是正
则语言,则
1) ,是正则语言
2 )是正则语言
3 )是正则语言
反转运算的封闭性
• 证明 2 :构造的 NFA 。
• 由识别的 DFA 构造识别 的
• 1 将的初始状态 , 改为唯一的接受状态 ;
• 2 将的边调转方向 : 如果 , 那么 ;
• 3 新增初始状态 , 且令 ;
同态
• 定义 : 若 和是两个字母表 , 同态定义为函数
(即将上的一个符号映射为上的符号串)
• 扩展的定义到字符串 ,
• 再扩展到语言 , 对 ,
填空题 2分
例 : 若由 到的同态函数 为 , 则上的字符串
0011, 在的作用下
= [ 填空 1]
语言 , 在的作用下 , 为 :
[ 填空 2]
作答
同态
• 例 : 若由 到的同态函数 为 , 则上的字符串
0011, 在的作用下
• 语言 , 在的作用下 , 为:
同态的封闭性
• 定理 : 若 是字母表上的正则语言 , 是 Σ 上的
同态 , 则 也是正则的。
同态的封闭性
• 若的正则表达式为 , 即 , 按如下规则构造表达
式
• 往证 而显然也是正则表达式 , 因此正则。
同态的封闭性
• 证明 :
归纳基础 :
同态的封闭性
同态原像 同态像
逆同态的封闭性
• 定理:如果是字母表到字母表的同态,是上的
正则语言,那么也是正则语言。
逆同态的封闭性
上字符串
• 读入一个字符,相当于读入一个字符串,因此的
可由的定义:
逆同态的封闭性
• 为证明 , 先证明 , 。
• 对 归纳 , 往证
• 归纳基础 : 若 ,
• 归纳递推:若 ,
的定义
归纳假设
构造
(DFA 中 )
同态作用
• 已证 = 。
• 所以
– 即被接受当且仅当被接受 , 是识别的 DFA 。
• 因此是正则的。
• 正则语言的泵引理
• 正则语言的封闭性
• 正则语言的判定性质
• 自动机的最小化
正则语言的判定性质
• 定理 : 具有个状态的有穷自动机接受的集合 :
– S 是非空的,当且仅当接受某个长度小于的串 ;
– S 是无穷的 , 当且仅当接受某个长度为的串 ,
• 所以,对于正则语言 :
– 存在算法 , 判断其是否为空 , 只需检查全部长
度小于的串 ;
– 存在算法 , 判断其是否无穷 , 只需检查全部长
度由 到的串。
空性 , 有穷性和无穷性
• 定理 : 存在算法,判定两个有穷自动机是否等价
(接受语言相同)。
• 证明 :
– 设和是分别接受和的有穷自动机 ;
– 则是正则的 , 所以可被某个有穷自动机接受 ;
– 而接受某个串 , 当且仅当 ;
– 由于存在算法判断是否为空 , 因此得证。
主要内容
• 正则语言的泵引理
• 正则语言的封闭性
• 正则语言的判定性质
• 自动机的最小化
状态的等价性
则称这两个状态是等价的 , 否则称为可区分的。
即,从开始而被接受的串 w, 从开始也会被接受。
(1) 直接标记终态和非终态之间的状态对 :
填表算法
• 例 : 用填表算法找到如图 DFA 中全部可区分状态对。
(4) 此时还有未标记,只需逐个检查。
填表算法
• 例 : 用填表算法找到如图 DFA 中全部可区分状态对。
(4) 此时还有未标记,只需逐个检查。
- 是可区分的,因为经串 0 到可区分的
- 是可区分的,因为经串 0 到可区分的
填表算法
• 例 : 用填表算法找到如图 DFA 中全部可区分状态对。
(5 )而在经过很短的字符串后,都会到达相同状态,因此都
是等价的。
DFA 最小化
• 根据填表算法取得的 DFA A 状态间等价性,将状态集进
行划分,得到不同的块;利用块构造新的 DFA ,的开始
状态的为包含初始状态的块,的接受状态为包含的接受状
态的块,转移函数为块之间的转移;则是的最小化
DFA 。
• 续上例,构造其最小化的 DFA 。
– (注意 : 不能使用同样的方法最小化 NFA )
小结
• 正则语言的泵引理。
• 正则语言对有关运算的封闭性。
– RL 在并、乘、闭包、补、交、同态映射运算
下是有效封闭的。 RL 的同态原像是 RL 。
• 状态等价性和最小化 DFA 。