文章目录
- 一、泵引理 ( Pumping )
- 二、泵引理证明示例 1
- 三、泵引理证明示例 2
- 四、泵引理证明示例 3
参考博客 : 【计算理论】Pumping 引理 ( 四个等价概念 | 自动机界限 | Pumping 引理简介 | Pumping 引理证明正则表达式 | Pumping 引理示例分析 )
一、泵引理 ( Pumping )
正则语言 是 正则表达式 表达的语言 ;
正则表达式 是 原子字符 , 或 原子字符进行递归 并运算
, 串联运算
, 星运算
形成的字符串组成的语言 ;
正则表达式 等价于 确定性有限自动机 等价于 非确定性有限自动机 ;
使用泵引理可以判定一个语言是否是正则语言 ;
泵引理 :
① 正则语言 :
是正则语言 ;
② 数字 : 存在数字
, 这个
叫做 泵长度 ;
③ 字符串 :
是
语言中的子字符串 , 其长度大于等于
; ( 字符串两个要求 )
④ 字符串分组及要求 : 所有的子字符串
可以分为三个部分 ,
, 满足如下要求 :
-
:
表示中间的
的重复次数 ;
-
:
是中间重复的部分 , 星计算部分 ;
-
使用泵引理证明某语言是正则语言步骤 : 使用 反正法 进行证明 ;
① 提出假设 : 首先假设该语言是正则的 ;
② Pumping 引理常数提出 : 存在一个常数
, 所有长度至少为
的任何字符串 , 都满足 Pumping 引理 的三个性质 ;
③ 找出矛盾 假设不成立 : 如果不满足 Pumping 引理 , 说明上面假设该语言是正则语言 是不成立的 , 该语言不是正则语言 ;
二、泵引理证明示例 1
证明 :
语言 不是正则语言 ;
1. 提出假设 : 假设
语言 是正则语言 ;
2. 泵长度 : 存在一个泵长度
, 只要是 长度至少为
的子字符串
, 都 满足 Pumping 引理 的三个性质 ;
字符串可以分为三个部分 ,
, 满足如下要求 :
-
:
表示中间的
的重复次数 ;
-
:
是中间重复的部分 , 星计算部分 ;
-
3. 找出矛盾 : 找出一个 长度至少为
的子字符串
, 不符合泵引理要求 , 这里就出现了矛盾 , 假设不成立 ;
选择字符串
, 该字符串有
个
和
个
字符组成 ;
出现三种情况 :
全部由
组成 ,
全部由
组成 ,
全部由
组成 ;
①
全部由
组成 情况分析 :
假设 : 假设
全部由
组成 , 其不停的重复 , 得到的新字符串 , 仍然属于
语言 ;
重复后不符合要求 :
是任意值 , 但是
重复若干次之后 , 如 重复次数
,
的个数就大于
的个数了 , 此时不符合
要求了 , 因此这种情况不成立 ;
②
全部由
组成 情况分析 :
假设 : 假设
全部由
组成 , 其不停的重复 , 得到的新字符串 , 仍然属于
语言 ;
重复后不符合要求 :
是任意值 , 但是
重复若干次之后 , 如 重复次数
,
的个数就大于
的个数了 , 此时不符合
要求了 , 因此这种情况不成立 ;
③
全部由
组成 情况分析 :
假设 : 假设
全部由
组成 , 其不停的重复 , 得到的新字符串 , 仍然属于
语言 ;
重复后不符合要求 :
是任意值 , 但是
重复若干次之后 , 如 重复次数
, 就会打乱
字符串中
的相互顺序 , 其中
不能存在交叉 , 因此这种情况不成立 ;
经过上述讨论 ,
的三种情况都不符合 Pumping 引理 , 因此
语言不是正则语言 ;
三、泵引理证明示例 2
证明 :
语言 不是正则语言 ;
1. 提出假设 : 假设
语言 是正则语言 ;
2. 泵长度 : 存在一个泵长度
, 只要是 长度至少为
的子字符串
, 都 满足 Pumping 引理 的三个性质 ;
字符串可以分为三个部分 ,
, 满足如下要求 :
-
:
表示中间的
的重复次数 ;
-
:
是中间重复的部分 , 星计算部分 ;
-
3. 找出矛盾 : 找出一个 长度至少为
的子字符串
, 不符合泵引理要求 , 这里就出现了矛盾 , 假设不成立 ;
选择字符串
, 该字符串有
个
,
个
,
个
字符组成 ;
出现三种情况 :
全部由
组成 ,
全部由
组成,
全部由
组成 ,
全部由
组成,
全部由
组成 ,
全部由
组成 ;
如果字符串仅有
单个字符 , 重复任意
次后 , 不能保证三个字符数量相等 , 矛盾 ;
如果字符串由多个字符组成 , 一旦重复之后 , 次序就被打乱 , 无法保证三个字符次序 , 也是矛盾 ;
四、泵引理证明示例 3
证明 :
语言 不是正则语言 ;
中的星运算
是 将
中的有限个字符串串联在一起 , 将若干个
与若干个
以任意先后顺序任意交错顺序进行排列 ; 即
组成的任意字符串都属于上述语言 ;
1. 提出假设 : 假设
语言 是正则语言 ;
2. 泵长度 : 存在一个泵长度
, 只要是 长度至少为
的子字符串
, 都 满足 Pumping 引理 的三个性质 ;
字符串可以分为三个部分 ,
, 满足如下要求 :
-
:
表示中间的
的重复次数 ;
-
:
是中间重复的部分 , 星计算部分 ;
-
3. 找出矛盾 : 找出一个 长度至少为
的子字符串
, 不符合泵引理要求 , 这里就出现了矛盾 , 假设不成立 ;
选择字符串
, 该字符串有
个
,
个
字符组成 ;
出现三种情况 :
全部由
组成 ,
全部由
组成,
由
组成 ;
如果字符串仅有
单个字符 , 重复任意
次后 , 不能保证两个字符数量相等 , 矛盾 ;
如果字符串由多个字符组成 , 一旦重复之后 , 次序就被打乱 , 无法保证两个个字符次序 , 也是矛盾 ;