文章目录

  • 一、四个等价概念
  • 二、自动机界限
  • 三、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 长度 ;

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

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

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

四、Pumping 引理 示例


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

2 . 已知的语言 : AAA 语言的字符串 s=s1s2s3s4s5s6⋯sns = s_1 \; s_2 \; s_3 \; s_4 \; s_5 \; s_6 \; \cdots \; s_n \;s=s1​s2​s3​s4​s5​s6​⋯sn​ , 字符串的长度为 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_5s4​s5​ 再重复几遍 , 该字符串仍然可以被接受 ;

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

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


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

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

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

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

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


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

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

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

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

满足 Pumping 引理 的三个条件 :

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

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

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

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

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

② 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:n≥0} 语言不是正则语言 ;

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

  1. 【计算理论】计算复杂性 ( P 类 | 有效算法函数 | NP 直觉 | NP 简介 | NP 类严格数学定义 )

    文章目录 一.P 类 二.有效算法函数 三.NP 直觉 四.NP 简介 五.NP 严格数学定义 一.P 类 时间复杂度类 : 定义 时间复杂度类 TIME(t(n))\rm TIME( t(n) )T ...

  2. 【计算理论】正则语言 ( 推广型的非确定性有限自动机 GNFA | 删除状态 | 确定性有限自动机 转为 正则表达式 )

    文章目录 一.推广型的非确定性有限自动机 ( GNFA ) 引入 二.推广型的非确定性有限自动机 ( GNFA ) 删除状态 三.确定性有限自动机 ( DFA ) 转为 正则表达式 四.确定性有限自动 ...

  3. 【计算理论】计算复杂性 ( NP 完全问题 - 布尔可满足性问题 ★ | 布尔可满足性问题是 NP 完全问题证明思路 ) ★

    文章目录 一.NP 完全问题 - 布尔可满足性问题 ★ 二.布尔可满足性问题是 NP 完全问题证明思路 一.NP 完全问题 - 布尔可满足性问题 ★ 布尔可满足性问题 ( Boolean Satisf ...

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

    文章目录 一.泵引理 ( Pumping ) 二.泵引理证明示例 1 三.泵引理证明示例 2 四.泵引理证明示例 3 参考博客 : [计算理论]Pumping 引理 ( 四个等价概念 | 自动机界限 ...

  5. 【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★

    文章目录 一.P 类 二.NP 类 三.NPC 类 ( NP 完全 ) 四.P .NP .NPC 三者关系 一.P 类 P\rm PP 类 : ★ 所有 能够被 确定性 单个带子图灵机 , 在 多项式 ...

  6. 【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA ) ★★

    文章目录 一.正则表达式 二.正则语言运算示例 ★ 三.根据正则表达式构造自动机 一.正则表达式 1 . 正则表达式原子定义 : 如果 RRR 是 字符集 Σ\SigmaΣ 中的 111 个字符 , ...

  7. 【计算理论】计算复杂性 ( 多项式等价 | P 类 | 丘奇-图灵论题延伸 )

    文章目录 一.多项式等价 二.P 类 三.丘奇-图灵论题延伸 一.多项式等价 多项式等价 : 所有的 确定性的计算模型 之间是 相互等价 的 , 两个带子图灵机 与 单个带子图灵机 , 计算相同的问题 ...

  8. 【计算理论】确定性有穷自动机 ( 自动机组成 | 自动机语言 | 自动机等价 )

    文章目录 一.确定性有穷自动机组成 二.确定性有穷自动机计算过程 三.确定性有穷自动机定义 四.自动机 语言 与 等价 五.自动机语言 示例 一.确定性有穷自动机组成 DFA , 全称为 Determ ...

  9. 计算机理论导引第三版答案第四章,《计算理论导引》第四章:可判定性-学习笔记 | 诟屍...

    第四章:可判定性 4 Decidability 关于其他章节的内容,请点这:<计算理论导引>学习笔记 4.1 Decidable Languages 几个可判定的语言 acceptance ...

最新文章

  1. IE Cookie文件格式说明
  2. Python用urlib爬虫基础及格式入门
  3. 计算机游戏的英文单词,关于游戏的英语词汇
  4. Hadoop/Spark生态圈里的新气象
  5. Spring 定时任务 注解版
  6. Oracle数据表中输入引号等特殊字符
  7. extra增强延迟加载
  8. MyEclipse开启Jquery智能提示
  9. C#AJAX 文件上传
  10. java 监听udp_Java实现Udp网络编程
  11. 2021爱分析・区域性银行数字化厂商全景报告
  12. 新手购买基金的买入策略
  13. Android流行框架大全
  14. 变色镜片 | 夏日光线防护新宠儿
  15. PostgreSQL 源码解读(216)- 实现简单的扩展函数
  16. 2---理解正余弦、复数求模、反正切和乘除运算的CORDIC算法实现
  17. 优美抒情钢琴曲《kiss the rain》-这一刻 让我们静静聆听
  18. 使用Rational Performance Tester实现DB2 性能测试和监控
  19. 短线黄金做波段的策略分析
  20. Spring cloud 灰度发布

热门文章

  1. java 中文乱码问题,请注意response.getWriter的顺序
  2. 2015/12/28 十六进制转八进制 八进制转十六进制 作业
  3. (C#)Windows Shell 编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单
  4. 在ASP.NET MVC中进行排序
  5. Devexpress 重新编译以后 重新生成DEMO
  6. jQuery Alert Dialogs (Alert, Confirm, Prompt Replacements)(翻译)
  7. 【调查】您对计算机培训感兴趣吗?
  8. msp430入门学习31
  9. ASP.NETMVC View页面 序列化 c# Model 为 Json字符串
  10. javabean总结