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

举报
韩曙亮 发表于 2022/01/11 02:02:03 2022/01/11
【摘要】 文章目录 一、泵引理 ( Pumping )二、泵引理证明示例 1三、泵引理证明示例 2四、泵引理证明示例 3 参考博客 : 【计算理论】Pumping 引理 ( 四个等价概念 | 自动...


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





一、泵引理 ( Pumping )



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

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

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


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


泵引理 :

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

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

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

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

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

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

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

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

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





二、泵引理证明示例 1



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


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

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

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

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

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

y y y 出现三种情况 : y y y 全部由 0 0 0 组成 , y y y 全部由 1 1 1 组成 , y y y 全部由 0 , 1 0,1 0,1 组成 ;


y y y 全部由 0 0 0 组成 情况分析 :

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

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


y y y 全部由 1 1 1 组成 情况分析 :

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

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


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

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

y y y 重复后不符合要求 : i \rm i i 是任意值 , 但是 0 , 1 0,1 0,1 重复若干次之后 , 如 重复次数 i = p + 1 \rm i = p + 1 i=p+1 , 就会打乱 s = 0 p 1 p s = 0^p 1^p s=0p1p 字符串中 0 , 1 0,1 0,1 的相互顺序 , 其中 0 , 1 0,1 0,1 不能存在交叉 , 因此这种情况不成立 ;


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





三、泵引理证明示例 2



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


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

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

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

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

选择字符串 s = 0 p 1 p 2 p \rm s = 0^p 1^p2^p s=0p1p2p , 该字符串有 p \rm p p 0 \rm 0 0 , p \rm p p 1 1 1 , p \rm p p 2 2 2 字符组成 ;

y y y 出现三种情况 : y y y 全部由 0 0 0 组成 , y y y 全部由 1 1 1 组成, y y y 全部由 2 2 2 组成 , y y y 全部由 0 , 1 , 2 0,1,2 0,1,2 组成, y y y 全部由 0 , 1 0,1 0,1 组成 , y y y 全部由 1 , 2 1,2 1,2 组成 ;

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

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





四、泵引理证明示例 3



证明 : { w w w ∣ 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 a a 与若干个 b \rm b b 以任意先后顺序任意交错顺序进行排列 ; a , b \rm a, b a,b 组成的任意字符串都属于上述语言 ;


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

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

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

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

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

y y y 出现三种情况 : y \rm y y 全部由 a \rm a a 组成 , y \rm y y 全部由 b \rm b b 组成, y \rm y y a b \rm ab ab 组成 ;

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

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

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/111401011

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。