文章目录

  • 一、确定性有穷自动机组成
  • 二、确定性有穷自动机计算过程
  • 三、确定性有穷自动机定义
  • 四、自动机 语言 与 等价
  • 五、自动机语言 示例

一、确定性有穷自动机组成


DFA , 全称为 Deterministic Finite Automaton , 确定性有穷自动机 ;

确定性 有穷自动机 组成 : 由以下的 555 部分组成 , 放入集合中展示 {Q,Σ,,δ,q0,F}\{ \quad Q , \quad \Sigma , \quad , \delta \quad , q_0 , \quad F \quad \}{Q,Σ,,δ,q0​,F} ;

① QQQ 状态集 : 有限个状态 ;

② Σ\SigmaΣ 字母表 : 有限个字符集 , 长度有限的字符串 ;

③ δ\deltaδ 转移函数 : δ\deltaδ 称为转移函数 ; 基于当前的 自动机 的某个状态 , 将字符集 输入到自动机中 , 该自动机转换成另一个状态 , 这个转换就是通过 δ\deltaδ 转换函数进行的 , 使用公式描述 Q×Σ→QQ \times \Sigma \to QQ×Σ→Q ;

④ q0q_0q0​ 起始状态 : 是自动机的开始状态 ;

⑤ FFF 接受状态集 : FFF 是 可接受状态 , 是 QQQ 的子集 , 记做 F⊆QF \subseteq QF⊆Q , 与 FFF 可接受状态相对的是不可接受状态 ;

二、确定性有穷自动机计算过程


1 . 自动机示例 : 上图是上一篇博客的自动机示例 , 自动机开始执行后 , 将 字符串 “010101010101” 输入到自动机中 , 从 Start 出发 , 根据当前的自动机状态 , 结合当前处理的输入字符 , 改变成另外一个自动机状态 , 所有字符处理完毕后 , 查看当前自动机状态是否是可接受状态 ;

2 . 自动机运行过程 : 详细的计算过程 , 参考上一篇博客 : 【计算理论】自动机 示例 ( 自动机示例 | 自动机表示方式 | 自动机计算流程简介 )

3 . 自动机定义由来 : 将 {Q,Σ,,δ,q0,F}\{ \quad Q , \quad \Sigma , \quad , \delta \quad , q_0 , \quad F \quad \}{Q,Σ,,δ,q0​,F} 五个组件代入上述过程 , 就可以得到自动机定义 ;

三、确定性有穷自动机定义


确定性又穷自动机定义

1 . 有以下已知条件 :

① 有穷自动机 : MMM ;

② 输入信息 : 接收 www 字符串作为输入 , www 字符串可以写成 {w1,w2,w3,⋯wm}\{ \, w_1, w_2 , w_3 , \cdots w_m \, \}{w1​,w2​,w3​,⋯wm​} 等 mmm 个字符 ; 其中 每个字符都属于有限字符集 Σ\SigmaΣ 中的字符 , 这些字符有重复的 , 这是输入序列 , 下面是状态序列 ; mmm 是总共计算的次数 ;

③ 状态序列 : 自动机 MMM 有以下 m+1m + 1m+1 个状态序列 , {r0,r1,r2,⋯,rm}\{\, r_0 , r_1 , r_2 , \cdots , r_m \, \}{r0​,r1​,r2​,⋯,rm​} , 这个序列中的状态有很多重复的 , 这是自动机的执行序列 , 途径的状态 , 所有的状态都属于 QQQ ; 这是 自动机 MMM 计算过程中的 状态序列 , 上面的输入信息时每个状态序列对应的输入序列 ; mmm 是总共计算的次数 ;

2 . 上述条件满足如下计算 :

① 自动机起始状态 : r0=q0r_0 = q_0r0​=q0​ , 自动机 MMM 开始时 , 是 q0q_0q0​ 起始状态 , 相当于上图中的 Start 状态 ; 这也是为什么状态序列比输入信息序列多一个原因 , 状态序列开始必须有一个状态 , 之后每接受一个参数字符 , 就更新一个新的状态 , 之后就状态与输入字符就是一一对应的 ; 最后状态序列 比 字符序列多一个 ;

② 自动机计算 : 对于 1=0,1,⋯,m−11 = 0 , 1 , \cdots , m-11=0,1,⋯,m−1 , 有 δ(ri,wi+1)=ri+1\delta(r_i , w_{i+1}) = r_{i+1}δ(ri​,wi+1​)=ri+1​ , 意思就是 当前是自动机的一个状态 rir_iri​ , 输入一个 wi+1w_{i+1}wi+1​ 字符后 , 变成了 ri+1r_{i+1}ri+1​ 状态 ;

③ 最终状态可接受 : 最终的 rmr_mrm​ 状态必须是可接受状态 , rm∈Fr_m \in Frm​∈F ;

3 . 自动机组件 :

① QQQ 状态集 : 自动机的有限个状态 , 其中有可接受状态 ( 双圈 ) , 不可接收状态 ( 单圈 ) ;

② Σ\SigmaΣ 字母表 : 有限个字符集 , 如 {0,1}\{0 ,1\}{0,1} , 但其输入可以是 010101010101 , 也可以是 001110011100111 等字符 ;

③ δ\deltaδ 转移函数 : δ\deltaδ 称为转换函数 ; 基于当前的 自动机 的某个状态 , 将字符集 输入到自动机中 , 该自动机转换成另一个状态 , 这个转换就是通过 δ\deltaδ 转换函数进行的 , 使用公式描述 Q×Σ→QQ \times \Sigma \to QQ×Σ→Q ;

④ q0q_0q0​ 起始状态 : 是开始状态 ;

⑤ FFF 接受状态集 : FFF 是 可接受状态 , 是 QQQ 的子集 , 记做 F⊆QF \subseteq QF⊆Q , 与 FFF 可接受状态相对的是不可接受状态 ;

四、自动机 语言 与 等价


1 . 自动机语言 : 确定性有穷自动机 MMM , 将自动机 MMM 所接受的所有的字符串放在一个集合 AAA 中 , 该集合 AAA 称为自动机 MMM 的语言 , 自动机 MMM 认识 ( 接受 ) AAA 语言 , 记作 L(M)=AL(M) = AL(M)=A ;

2 . 自动机等价 : 如果两个自动机认识相同的语言 , 那么称这两个自动机是等价的 ;

五、自动机语言 示例


1 . 自动机描述 :

自动机有 555 个状态 ;

SSS 是开始状态 ;

q1,r1q_1 , r_1q1​,r1​ 是可接受状态 ;

q2,r2q_2 , r_2q2​,r2​ 是不可接受状态 ;

自动机语言是 {a,b}\{ a , b \}{a,b} 字符集 ;

下面开始分析上面 555 状态自动机的语言 ;

2 . 自动机 左侧分支分析 :

① 执行流程 : 开始时 , 自动机是 SSS 起始状态 , 当输入 aaa 时 , 自动机状态变成 q1q_1q1​ , 此后不管多少次输入 aaa , 一直处于 q1q_1q1​ 状态 , 如果输入 bbb , 那么就会转为 q2q_2q2​ 状态 , 如果一直输入 bbb , 自动机一直处于该非接受状态 q2q_2q2​ , 如果输入 aaa , 又回到接受状态 q1q_1q1​ ;

② 左侧分支分析总结 : 左侧分支 , 主要接受 以 aaa 开头 , 以 aaa 结尾的字符串 , 最后才能进入接受状态 ;

3 . 自动机 右侧分支分析 :

① 执行流程 : 开始时 , 自动机是 SSS 起始状态 , 当输入 bbb 时 , 自动机状态变成 r1r_1r1​ , 此后不管多少次输入 bbb , 一直处于 r1r_1r1​ 状态 , 如果此时输入 aaa , 那么就会转为 r2r_2r2​ 状态 , 此时如果一直输入 aaa , 自动机一直处于该非接受状态 r2r_2r2​ , 如果输入 bbb , 又回到接受状态 r1r_1r1​ ;

② 右侧分支分析总结 : 右侧分支 , 主要接受 以 bbb 开头 , 以 bbb 结尾的字符串 , 最后才能进入接受状态 ;

4 . 自动机 总体分析 : 自动机 MMM 接受相同开头 和 相同结尾的 字符串 ;

5 . 接受状态 与 非接受状态 : 只在计算结束以后才开始起作用 ;

① 计算过程 : 在计算过程中 , 这两个状态没有区别 , 可以任意转换 ;

② 最终状态 : 自动机的 最终的状态 , 必须判定失接受状态 还是 非接受状态 , 如果是非接受状态 , 说明输入不对 , 自动机拒绝该输入 ;

【计算理论】确定性有穷自动机 ( 自动机组成 | 自动机语言 | 自动机等价 )相关推荐

  1. 【计算理论】下推自动机 PDA ( 上下文无关语言 CFL 的 泵引理 | 泵引理反证示例 | 自动机扩展 )

    文章目录 I . 上下文无关语言 ( CFL ) 的 泵引理 ( Pumping Lemma ) II . 上下文无关语言 ( CFL ) 的 泵引理 ( Pumping Lemma ) 示例 III ...

  2. 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 2 ) ★★

    文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 2 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...

  3. 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 1 ) ★★

    文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 1 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...

  4. 【计算理论】计算理论总结 ( 下推自动机计算过程 | 上下文无关文法 CFG 转为下推自动机 PDA ) ★★

    文章目录 一.下推自动机计算过程 二.上下文无关文法 CFG 转为下推自动机 PDA 流程 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 ...

  5. 【计算理论】自动机设计 ( 设计自动机 | 确定性自动机设计示例 | 确定性与非确定性 | 自动机中的不确定性 )

    文章目录 一. 设计自动机 ( 语言要求 ) 二. 设计自动机 ( 1 ) 开始状态 三. 设计自动机 ( 2 ) 状态 SSS 状态类型确定 四. 设计自动机 ( 3 ) 状态 SSS 输入输出分析 ...

  6. 【计算理论】不可判定性 ( 停机问题 | 图灵机语言是否空集问题 | 图灵机是否等价问题 | 是否存在自动机接受图灵机语言问题 | 莱斯定理 Rice‘s Theorem )

    文章目录 一.不可判定性 ( Undecidability ) 二."停机问题" 不可判定 三."图灵机语言是否空集问题" 不可判定 四."图灵机是否 ...

  7. 【计算理论】正则语言 ( 正则表达式原子定义 | 正则表达式递归定义 | 正则表达式语言原子定义 | 正则表达式语言结构归纳 | 正则表达式语言示例 | 根据正则表达式构造自动机 )

    文章目录 一.正则表达式 定义 二. 正则表达式语言 原子定义 三.正则表达式语言 结构归纳定义 四.正则表达式语言 示例 五.空集 ∅\varnothing∅ 与 空字符 ε\varepsilonε ...

  8. 【计算理论】计算理论总结 ( 自动机设计 ) ★★

    文章目录 一.自动机设计 二.自动机设计 1 三.自动机设计 2 四.自动机设计 3 五.自动机设计技巧 一.自动机设计 设计自动机 : 之前是根据给定的自动机 , 找到自动机所能识别的语言 ; 现在 ...

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

    文章目录 一.四个等价概念 二.自动机界限 三.Pumping 引理 四.Pumping 引理 示例 五.证明 语言 不是正则语言 步骤 六.证明 语言 不是正则语言 示例 一.四个等价概念 1 . ...

最新文章

  1. 【Linux】3.dpkg、apt安装卸载软件
  2. 大话数据结构 01 :顺序线性表
  3. Sentinel(二十六)之Sentinel Dashboard中修改规则同步到Nacos
  4. 信息学奥赛一本通 1107:校门外的树 | 1931:【05NOIP普及组】校门外的树 | OpenJudge NOI 1.6 06 | 洛谷 P1047 [NOIP2005 普及组] 校门外的树
  5. SpringBoot邮件服务
  6. 深入分析linux内核及其应用(更新完毕)
  7. 不错的Nginx详解
  8. 八类网线和七类网线的区别_Cat8 八类网线与超五类网线、六类网线、超六类网线及七类/超七类网线的区别...
  9. 组合数取模模板(2)
  10. html 百分比饼状图,highcharts饼状图百分比显示的数据和写的不同
  11. 点亮LED灯及IAR调试
  12. 实在抵不住张老师的诱惑,又跳坑了
  13. 题解:2018校招真题(字节跳动:附加题)
  14. 花 作品php,《不谢之花》作品赏析
  15. document.referrer和history.go(-1)退回上一页区别
  16. linux systemctl命令详解
  17. HIT 大物实验 数据处理代码
  18. 源码编译安装go,ERROR: Cannot find /root/go1.4/bin/go
  19. Altium DesignerPCB内部走线角度切换 直线切换圆弧
  20. java自启动windows程序,监测服务及重启

热门文章

  1. 《Microsoft Sql server 2008 Internals》读书笔记--第八章The Query Optimizer(5)
  2. Sms中关于操作系统的部署之上
  3. iOS APP日志写入文件(日志收集)
  4. redirect_uri参数错误解决方法
  5. Oracle学习笔记:redo重做日志
  6. 管理文库]我喜欢的10个经典管理学定律点评
  7. 7.16 T1 礼物
  8. JSP+Servlet+Ajax实现用户增删改查的例子
  9. python3 - 元组、集合
  10. Linux驱动入门篇(一):Hello, world