欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【计算理论】计算理论总结 ( 泵引理 Pumping 证明 ) ★★

发布时间:2025/6/17 编程问答 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【计算理论】计算理论总结 ( 泵引理 Pumping 证明 ) ★★ 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • 一、泵引理 ( Pumping )
  • 二、泵引理证明示例 1
  • 三、泵引理证明示例 2
  • 四、泵引理证明示例 3


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





一、泵引理 ( Pumping )



正则语言 是 正则表达式 表达的语言 ;

正则表达式 是 原子字符 , 或 原子字符进行递归 并运算 ∪\cup , 串联运算 ∘\circ , 星运算 ∗* 形成的字符串组成的语言 ;

正则表达式 等价于 确定性有限自动机 等价于 非确定性有限自动机 ;


使用泵引理可以判定一个语言是否是正则语言 ;


泵引理 :

① 正则语言 : A\rm AA 是正则语言 ;

② 数字 : 存在数字 p\rm pp , 这个 p\rm pp 叫做 泵长度 ;

③ 字符串 : s\rm ssA\rm AA 语言中的子字符串 , 其长度大于等于 p\rm pp ; ( 字符串两个要求 )

④ 字符串分组及要求 : 所有的子字符串 s\rm ss 可以分为三个部分 , s=xyz\rm s = xyzs=xyz , 满足如下要求 :

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

使用泵引理证明某语言是正则语言步骤 : 使用 反正法 进行证明 ;

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

② Pumping 引理常数提出 : 存在一个常数 p\rm pp , 所有长度至少为 p\rm pp 的任何字符串 , 都满足 Pumping 引理 的三个性质 ;

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





二、泵引理证明示例 1



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


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

2. 泵长度 : 存在一个泵长度 p\rm pp , 只要是 长度至少为 p\rm pp 的子字符串 s\rm ss , 都 满足 Pumping 引理 的三个性质 ; s\rm ss 字符串可以分为三个部分 , s=xyz\rm s = xyzs=xyz , 满足如下要求 :

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

3. 找出矛盾 : 找出一个 长度至少为 p\rm pp 的子字符串 s\rm ss , 不符合泵引理要求 , 这里就出现了矛盾 , 假设不成立 ;

选择字符串 s=0p1p\rm s = 0^p 1^ps=0p1p , 该字符串有 p\rm pp0\rm 00p\rm pp111 字符组成 ;

yyy 出现三种情况 : yyy 全部由 000 组成 , yyy 全部由 111 组成 , yyy 全部由 0,10,10,1 组成 ;


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

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

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


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

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

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


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

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

yyy 重复后不符合要求 : i\rm ii 是任意值 , 但是 0,10,10,1 重复若干次之后 , 如 重复次数i=p+1\rm i = p + 1i=p+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} 语言不是正则语言 ;





三、泵引理证明示例 2



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


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

2. 泵长度 : 存在一个泵长度 p\rm pp , 只要是 长度至少为 p\rm pp 的子字符串 s\rm ss , 都 满足 Pumping 引理 的三个性质 ; s\rm ss 字符串可以分为三个部分 , s=xyz\rm s = xyzs=xyz , 满足如下要求 :

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

3. 找出矛盾 : 找出一个 长度至少为 p\rm pp 的子字符串 s\rm ss , 不符合泵引理要求 , 这里就出现了矛盾 , 假设不成立 ;

选择字符串 s=0p1p2p\rm s = 0^p 1^p2^ps=0p1p2p , 该字符串有 p\rm pp0\rm 00 , p\rm pp111 , p\rm pp222 字符组成 ;

yyy 出现三种情况 : yyy 全部由 000 组成 , yyy 全部由 111 组成, yyy 全部由 222 组成 , yyy 全部由 0,1,20,1,20,1,2 组成, yyy 全部由 0,10,10,1 组成 , yyy 全部由 1,21,21,2 组成 ;

如果字符串仅有 0,1,20, 1, 20,1,2 单个字符 , 重复任意 i\rm ii 次后 , 不能保证三个字符数量相等 , 矛盾 ;

如果字符串由多个字符组成 , 一旦重复之后 , 次序就被打乱 , 无法保证三个字符次序 , 也是矛盾 ;





四、泵引理证明示例 3



证明 : {www∣w∈{a,b}∗}\rm \{ www | w \in \{a, b\}^* \}{wwww{a,b}} 语言 不是正则语言 ;


{a,b}∗\rm \{a, b\}^*{a,b} 中的星运算 ∗*{a,b}\rm \{a, b\}{a,b} 中的有限个字符串串联在一起 , 将若干个 a\rm aa 与若干个 b\rm bb 以任意先后顺序任意交错顺序进行排列 ; a,b\rm a, ba,b 组成的任意字符串都属于上述语言 ;


1. 提出假设 : 假设 {www∣w∈{a,b}∗}\rm \{ www | w \in \{a, b\}^* \}{wwww{a,b}} 语言 是正则语言 ;

2. 泵长度 : 存在一个泵长度 p\rm pp , 只要是 长度至少为 p\rm pp 的子字符串 s\rm ss , 都 满足 Pumping 引理 的三个性质 ; s\rm ss 字符串可以分为三个部分 , s=xyz\rm s = xyzs=xyz , 满足如下要求 :

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

3. 找出矛盾 : 找出一个 长度至少为 p\rm pp 的子字符串 s\rm ss , 不符合泵引理要求 , 这里就出现了矛盾 , 假设不成立 ;

选择字符串 s=apbp\rm s = a^p b^ps=apbp , 该字符串有 p\rm ppa\rm aa , p\rm ppb\rm bb 字符组成 ;

yyy 出现三种情况 : y\rm yy 全部由 a\rm aa 组成 , y\rm yy 全部由 b\rm bb 组成, y\rm yyab\rm abab 组成 ;

如果字符串仅有 a,b\rm a,ba,b 单个字符 , 重复任意 i\rm ii 次后 , 不能保证两个字符数量相等 , 矛盾 ;

如果字符串由多个字符组成 , 一旦重复之后 , 次序就被打乱 , 无法保证两个个字符次序 , 也是矛盾 ;

总结

以上是生活随笔为你收集整理的【计算理论】计算理论总结 ( 泵引理 Pumping 证明 ) ★★的全部内容,希望文章能够帮你解决所遇到的问题。

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