【计算理论】确定性有穷自动机 ( 自动机组成 | 自动机语言 | 自动机等价 )
I . 确定性有穷自动机组成
DFA , 全称为 Deterministic Finite Automaton , 确定性有穷自动机 ;
确定性 有穷自动机 组成 : 由以下的 部分组成 , 放入集合中展示 ;
① 状态集 : 有限个状态 ;
② 字母表 : 有限个字符集 , 长度有限的字符串 ;
③ 转移函数 : 称为转移函数 ; 基于当前的 自动机 的某个状态 , 将字符集 输入到自动机中 , 该自动机转换成另一个状态 , 这个转换就是通过 转换函数进行的 , 使用公式描述 ;
④ 起始状态 : 是自动机的开始状态 ;
⑤ 接受状态集 : 是 可接受状态 , 是 的子集 , 记做 , 与 可接受状态相对的是不可接受状态 ;
II . 确定性有穷自动机计算过程
1 . 自动机示例 : 上图是上一篇博客的自动机示例 , 自动机开始执行后 , 将 字符串 “” 输入到自动机中 , 从 Start 出发 , 根据当前的自动机状态 , 结合当前处理的输入字符 , 改变成另外一个自动机状态 , 所有字符处理完毕后 , 查看当前自动机状态是否是可接受状态 ;
2 . 自动机运行过程 : 详细的计算过程 , 参考上一篇博客 : 【计算理论】自动机 示例 ( 自动机示例 | 自动机表示方式 | 自动机计算流程简介 )
3 . 自动机定义由来 : 将 五个组件代入上述过程 , 就可以得到自动机定义 ;
III . 确定性有穷自动机定义
确定性又穷自动机定义
1 . 有以下已知条件 :
① 有穷自动机 : ;
② 输入信息 : 接收 字符串作为输入 , 字符串可以写成 等 个字符 ; 其中 每个字符都属于有限字符集 中的字符 , 这些字符有重复的 , 这是输入序列 , 下面是状态序列 ; 是总共计算的次数 ;
③ 状态序列 : 自动机 有以下 个状态序列 , , 这个序列中的状态有很多重复的 , 这是自动机的执行序列 , 途径的状态 , 所有的状态都属于 ; 这是 自动机 计算过程中的 状态序列 , 上面的输入信息时每个状态序列对应的输入序列 ; 是总共计算的次数 ;
2 . 上述条件满足如下计算 :
① 自动机起始状态 : , 自动机 开始时 , 是 起始状态 , 相当于上图中的 Start 状态 ; 这也是为什么状态序列比输入信息序列多一个原因 , 状态序列开始必须有一个状态 , 之后每接受一个参数字符 , 就更新一个新的状态 , 之后就状态与输入字符就是一一对应的 ; 最后状态序列 比 字符序列多一个 ;
② 自动机计算 : 对于 , 有 , 意思就是 当前是自动机的一个状态 , 输入一个 字符后 , 变成了 状态 ;
③ 最终状态可接受 : 最终的 状态必须是可接受状态 , ;
3 . 自动机组件 :
① 状态集 : 自动机的有限个状态 , 其中有可接受状态 ( 双圈 ) , 不可接收状态 ( 单圈 ) ;
② 字母表 : 有限个字符集 , 如 , 但其输入可以是 , 也可以是 等字符 ;
③ 转移函数 : 称为转换函数 ; 基于当前的 自动机 的某个状态 , 将字符集 输入到自动机中 , 该自动机转换成另一个状态 , 这个转换就是通过 转换函数进行的 , 使用公式描述 ;
④ 起始状态 : 是开始状态 ;
⑤ 接受状态集 : 是 可接受状态 , 是 的子集 , 记做 , 与 可接受状态相对的是不可接受状态 ;
IV . 自动机 语言 与 等价
1 . 自动机语言 : 确定性有穷自动机 , 将自动机 所接受的所有的字符串放在一个集合 中 , 该集合 称为自动机 的语言 , 自动机 认识 ( 接受 ) 语言 , 记作 ;
2 . 自动机等价 : 如果两个自动机认识相同的语言 , 那么称这两个自动机是等价的 ;
V . 自动机语言 示例
1 . 自动机描述 :
自动机有 个状态 ;
是开始状态 ;
是可接受状态 ;
是不可接受状态 ;
自动机语言是 字符集 ;
下面开始分析上面 状态自动机的语言 ;
2 . 自动机 左侧分支分析 :
① 执行流程 : 开始时 , 自动机是 起始状态 , 当输入 时 , 自动机状态变成 , 此后不管多少次输入 , 一直处于 状态 , 如果输入 , 那么就会转为 状态 , 如果一直输入 , 自动机一直处于该非接受状态 , 如果输入 , 又回到接受状态 ;
② 左侧分支分析总结 : 左侧分支 , 主要接受 以 开头 , 以 结尾的字符串 , 最后才能进入接受状态 ;
3 . 自动机 右侧分支分析 :
① 执行流程 : 开始时 , 自动机是 起始状态 , 当输入 时 , 自动机状态变成 , 此后不管多少次输入 , 一直处于 状态 , 如果此时输入 , 那么就会转为 状态 , 此时如果一直输入 , 自动机一直处于该非接受状态 , 如果输入 , 又回到接受状态 ;
② 右侧分支分析总结 : 右侧分支 , 主要接受 以 开头 , 以 结尾的字符串 , 最后才能进入接受状态 ;
4 . 自动机 总体分析 : 自动机 接受相同开头 和 相同结尾的 字符串 ;
5 . 接受状态 与 非接受状态 : 只在计算结束以后才开始起作用 ;
① 计算过程 : 在计算过程中 , 这两个状态没有区别 , 可以任意转换 ;
② 最终状态 : 自动机的 最终的状态 , 必须判定失接受状态 还是 非接受状态 , 如果是非接受状态 , 说明输入不对 , 自动机拒绝该输入 ;