欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

【计算理论】Pumping 引理 ( 四个等价概念 | 自动机界限 | Pumping 引理简介 | Pumping 引理证明正则表达式 | Pumping 引理示例分析 )

发布时间:2025/6/17 47 豆豆

文章目录

  • 一、四个等价概念
  • 二、自动机界限
  • 三、Pumping 引理
  • 四、Pumping 引理 示例
  • 五、证明 语言 不是正则语言 步骤
  • 六、证明 语言 不是正则语言 示例





一、四个等价概念



1 . 正则语言 : 给定一个语言 , 可以自动设计一个识别该语言的 自动机 ; 该语言必须是一个 正则表达式 表达的语言 ;


2 . 正则表达式可以转成自动机 : 先构造 接受单字符自动机 , 然后通过串联 并联 或 星计算 , 拼装成自动机 ; 这个转化成的自动机是非确定性有限自动机 ( NFA ) , NFA 可以转成 确定性有限自动机 ( DFA ) ;


3 . 自动机可以转成正则表达式 : 给定一个自动机 , 逐个删除自动机的状态 , 最后删除到只剩下开始状态 与 接受状态 两个状态 , 开始状态 读取 正则表达式 跳转到接受状态 , 这个正则表达式就是自动机转成的 ;


确定性有限自动机 ( DFA ) 与 非确定性有限自动机 ( NFA ) 等价 , NFA 与 扩展型的非确定性有限自动机 ( GNFA ) 是等价的 , GNFA 可以写成正则表达式语言 ( 正则语言 ) ;

上述 DFA , NFA , GNFA , 正则语言 概念是等价的 ;





二、自动机界限



1 . 自动机界限 : 自动机 不是万能的 , 它有一个界限 , 有的语言自动机可以识别 , 有的语言自动机无法识别 , 这样就需要给有限自动机确定一个界限 ;

2 . 判断语言是否能被自动机识别 : 如何判定一个语言是否是自动机能识别的语言 , 只需要判定该语言是否是正则语言即可 ;

① 语言是正则语言 : 如果该语言是正则语言 , 那么该语言就可以被自动机识别 ;

② 语言不是正则语言 : 如果该语言不是正则语言 , 那么该语言不能被自动机识别 ;


3 . 引入 Pumping 引理 : 如何判定语言是否是正则语言 , 这里使用 Pumping 引理 , 可以判定一个语言是否是正则语言 ;





三、Pumping 引理




Pumping 引理 :


① 正则语言 : AAA 是正则语言 ;

② 数字 : 存在数字 ppp , 这个 ppp 叫做 Pumping 长度 ;

③ 字符串 : sssAAA 语言中的字符串 , 其长度大于等于 ppp ; ( 字符串两个要求 )

④ 字符串分组及要求 : sss 可以分为三个部分 , s=xyzs = xyzs=xyz , 满足如下要求 :

  • xyiz∈A(i≥0)xy^iz \in A \quad ( i \geq 0 )xyizA(i0) : iii 表示中间的 yyy 的重复次数 ;
  • ∣y∣>0|y| > 0y>0 : yyy 是中间重复的部分 , 星计算部分 ;
  • ∣xy∣≤p|xy| \leq pxyp




四、Pumping 引理 示例



1 . 正则语言 与 自动机 等价 : 如果语言 AAA 是正则语言 , 该语言可以被有限自动机识别 ;


2 . 已知的语言 : AAA 语言的字符串 s=s1s2s3s4s5s6⋯sns = s_1 \; s_2 \; s_3 \; s_4 \; s_5 \; s_6 \; \cdots \; s_n \;s=s1s2s3s4s5s6sn , 字符串的长度为 nnn ;


3 . Pumping 引理中的字符串有两个要求 :


① 长度要求 : 长度 nnn 大于等于 Pumping 长度 ppp ;

② 语言要求 : 字符串属于语言 AAA ;


4 . 假设 : 上述字符串可以被下面的自动机接受 ;


5 . 将上述字符串 sss 输入到自动机中进行计算 :


q1q_1q1 是自动机的开始状态 , 读取 s1s_1s1 字符 , 就会跳转到 q3q_3q3 状态 ;

q3q_3q3 状态下 , 读取 s2s_2s2 字符 , 就会跳转到 q20q_{20}q20 状态 ;

q20q_{20}q20 状态下 , 读取 s3s_3s3 字符 , 就会跳转到 q9q_{9}q9 状态 ;

q9q_{9}q9 状态下 , 读取 s4s_4s4 字符 , 就会跳转到 q17q_{17}q17 状态 ;

q17q_{17}q17 状态下 , 读取 s5s_5s5 字符 , 就会跳转到 q9q_{9}q9 状态 ;

⋮\vdots

q..q_{..}q.. 状态下 , 读取 sns_nsn 字符 , 就会跳转到 q13q_{13}q13 状态 ;


6 . 重复状态说明 : 字符串 sss 的长度是大于 字符串输入 自动机 过程中经过的状态个数的 , 中间肯定有重复的状态 ;


① 这个重复的状态是 q9q_9q9 ;

② 将两个 q9q_9q9 中间的部分 s4s5s_4 s_5s4s5 再重复几遍 , 该字符串仍然可以被接受 ;

上图就是 sss 字符串中的 xyzxyzxyz 三部分 , 其中的 yyy 部分可以无限重复 ;





五、证明 语言 不是正则语言 步骤



证明步骤 : 使用 反正法 进行证明 ;


① 提出假设 : 首先假设该语言是正则的 ;

② Pumping 引理证明 : 存在长度至少为 ppp 的任何字符串 , 都满足 Pumping 引理 的三个性质 ;

③ 矛盾 假设不成立 : 如果不满足 Pumping 引理 , 说明上面假设该语言是正则语言 是不成立的 , 该语言不是正则语言 ;





六、证明 语言 不是正则语言 示例



证明 : {0n1n:n≥0}\{ 0^n 1^n : n \geq 0 \}{0n1n:n0} 语言 不是正则语言 ;


提出假设 : 假设 {0n1n:n≥0}\{ 0^n 1^n : n \geq 0 \}{0n1n:n0} 语言是正则语言 ;


引用 Pumping 引理 , 看上述语言是否符合该 Pumping 引理 ;


Pumping 长度 : 存在一个数字 ppp ( Pumping 长度 ) , 使得任何长度至少为 ppp 的字符串 , 并且该字符串属于 {0n1n:n≥0}\{ 0^n 1^n : n \geq 0 \}{0n1n:n0} 语言 ;


满足 Pumping 引理 的三个条件 :

  • xyiz∈A(i≥0)xy^iz \in A \quad ( i \geq 0 )xyizA(i0)
  • ∣y∣>0|y| > 0y>0
  • ∣xy∣≤p|xy| \leq pxyp

如果所有的字符串都满足上述上个条件 , 说明该语言是正则语言 , 如果找出了一个字符串不满足上述条件 , 该语言就不是正则语言 ;


按照上述提出的证明步骤 , 证明该字符串不是正则表达式 ;


1 . 选择反例字符串 : 目的是证明 正则表达式不成立 , 选择的是反例 ;


① 反例选择 : 选择字符串 s=0p1ps = 0^p 1^ps=0p1p , 该字符串有 ppp000ppp111 字符组成 ;

② Pumping 引理条件 : 将上述字符串分成 s=xyzs = xyzs=xyz 三个部分 , 看是否满足 Pumping 引理的三个条件 ;


2 . yyy 出现三种情况 :

  • yyy 全部由 000 组成
  • yyy 全部由 111 组成
  • yyy 全部由 0,10,10,1 组成 ;

如果上述每种情况都出现矛盾 , 说明假设不成立 ;


3 . yyy 全部由 000 组成 情况分析 :

① 假设 : 假设 yyy 全部由 000 组成 , 其不停的重复 , 得到的新字符串 , 仍然属于 AAA 语言 ;

yyy 重复后不符合要求 : 但是 000 重复若干次之后 , 000 的个数就大于 111 的个数了 , 此时不符合 s=0p1ps = 0^p 1^ps=0p1p 要求了 , 因此这种情况不成立 ;


4 . yyy 全部由 111 组成 情况分析 :

① 假设 : 假设 yyy 全部由 111 组成 , 其不停的重复 , 得到的新字符串 , 仍然属于 AAA 语言 ;

yyy 重复后不符合要求 : 但是 111 重复若干次之后 , 111 的个数就大于 000 的个数了 , 此时不符合 s=0p1ps = 0^p 1^ps=0p1p 要求了 , 因此这种情况不成立 ;


5 . yyy 全部由 0,10,10,1 组成 情况分析 :

① 假设 : 假设 yyy 全部由 0,10,10,1 组成 , 其不停的重复 , 得到的新字符串 , 仍然属于 AAA 语言 ;

yyy 重复后不符合要求 : 但是 0,10,10,1 重复若干次之后 , 就会打乱 s=0p1ps = 0^p 1^ps=0p1p 字符串中 0,10,10,1 的相互顺序 , 其中 0,10,10,1 不能存在交叉 , 因此这种情况不成立 ;


经过上述讨论 , yyy 的三种情况都不符合 Pumping 引理 , 因此 {0n1n:n≥0}\{ 0^n 1^n : n \geq 0 \}{0n1n:n0} 语言不是正则语言 ;

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的【计算理论】Pumping 引理 ( 四个等价概念 | 自动机界限 | Pumping 引理简介 | Pumping 引理证明正则表达式 | Pumping 引理示例分析 )的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。