news 2026/5/14 7:36:22

正规式 `ab*a` 描述的是以 `a` 开头、中间有任意多个 `b`(包括零个)、最后再以 `a` 结尾的字符串,即形如 `aa`, `aba`, `abba`, `abbba`

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
正规式 `ab*a` 描述的是以 `a` 开头、中间有任意多个 `b`(包括零个)、最后再以 `a` 结尾的字符串,即形如 `aa`, `aba`, `abba`, `abbba`

正规式ab*a描述的是以a开头、中间有任意多个b(包括零个)、最后再以a结尾的字符串,即形如aa,aba,abba,abbba等。在词法分析中,这类正规式常用于识别特定模式的标识符或关键字结构。

为了将该正规式转化为可执行的自动机模型,通常经历以下步骤:

  1. 正规式 → NFA(通过 Thompson 构造法)
    ab*a构造对应的 NFA:

    • 使用 ε-转移 表示选择和连接;
    • b*部分构造为一个带自环的 ε-NFA;
    • 整体结构为:a后接(b)*,再接a
    • 得到的状态机允许从初始状态经 ε 转移到达多个路径,具有非确定性。
  2. NFA → DFA(子集构造法 / 子集法)
    核心思想是将 NFA 中可能同时处于的多个状态组合成一个集合,作为 DFA 的单个状态。

    设 NFA 状态编号如下(常见构造):

    • 0: 初始状态
    • 1: 第一个a的终点
    • 2→3 是b*的循环结构(含 ε-转移)
    • 4: 第二个a的起点前的跳转点
    • 5: 接受状态

    实际编号依具体构造略有不同,但关键步骤如下:

    • 计算初始状态的 ε-闭包
      ε-CLOSURE({0}) = {0} → 记作 DFA 的初态q₀

    • 按输入符号进行状态转移

      • q₀下输入a:转移到 NFA 中由a导致的所有状态,并取其 ε-闭包 → 假设得到 {1,2,4} → 记作q₁
      • 输入b:若当前状态集中存在可响应b的状态,则推进并闭包 → 如q₁b可能仍停留在{1,2,4}内部循环
      • 若输入a再次触发最终接受路径,则进入接受状态集 → 记作q₂
    • 构建完整的 DFA 状态转移表

      当前状态输入 a输入 b
      q₀q₁
      q₁q₂ (接受态)q₁
      q₂

    此时得到的 DFA 已无非确定性,每个状态对应原 NFA 的一个状态子集。

  3. DFA 最小化(划分法 / Hopcroft 算法 或 Moore 算法)
    目标:合并等价状态,消除冗余。

    步骤简述:

    • 初始划分为两个集合:接受状态 vs 非接受状态;
    • 迭代检查每个集合内的状态是否对所有输入符号转移到同一类集合;
    • 若分裂发生,继续划分直到稳定;
    • 每个最终划分块代表最小 DFA 中的一个状态。

    应用于上述 DFA:

    • q₂是唯一的接受状态;
    • q₀q₁行为不同(q₀仅在a下转移,q₁a下进接受态、b下自循环),不可合并;
    • 因此最小 DFA 与原 DFA 状态数一致(本例较小,未必能进一步压缩);

    图 2-11 所示最小化 DFA 即为此结果,结构清晰,适合代码实现。


实际意义

  • NFA易于从正规式构造,便于理论分析;
  • DFA可直接编码为状态转移表或 switch-case 逻辑,运行效率高;
  • 最小化 DFA减少内存占用与判断开销,提升词法分析器性能。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 19:44:22

解析GEO:定义、价值与忽视的代价

在数字化时代,地理信息已成为连接虚拟世界与现实场景的关键纽带,而GEO(Geographic Information Object,地理信息对象)作为地理信息应用的核心载体,正深刻影响着商业运营、公共服务、个人生活等多个领域。不…

作者头像 李华
网站建设 2026/5/4 11:40:00

西门子 PLC_PVC 送料配料系统控制程序画面实例分享

西门子PLC_PVC送料配料系统控制程序画面实例,结构采用S7-314CWincc 程序内容包括1.配料系统物料分配2.模拟量转换,监测压力,称重程序,3.PROFIBUS通讯系统4.配方管理程序块5.变频器(1拖6)控制 项目包括&…

作者头像 李华
网站建设 2026/5/10 20:21:52

探索FX5U程序框架模板(10轴):开启运动控制新征程

FX5U程序框架模板(10轴) 程序由老工程师费尽心力的整理,把控制允许整理成简单的模板架构程序。 程序讲解 1 轴的参数初始化 2 自动启动条件 3 安全条件(台湾称许可条件,这个可以避免运动打架,很重要&#x…

作者头像 李华
网站建设 2026/5/3 10:51:39

2022最新款切条机切带机程序,开启高效切割新时代

2022最新款程序,切条机切带机选用中达优控定长送料触摸屏一体机程序 三菱work2编辑软件,能用于超声切带和热切 配有触摸屏软件 送料方式可以自由选择,根据实际切长的用夹手加滚筒送料,切短的用滚筒送料,任意调整切割…

作者头像 李华
网站建设 2026/5/13 22:37:17

关闭Windows自动更新的6种方法【实用指南】Win11永久关闭系统自动更新

由于微软更新策略变更,出厂预装系统是无法禁用更新功能的,在联网检测到版本较低的情况下微软将强制推送更新通知。 那么如何彻底禁止Windows 11自动更新? win11更新怎么关闭?windows禁止更新工具插件,Win11永久关闭更新要怎么操作&#x…

作者头像 李华
网站建设 2026/5/1 12:22:59

彼得林奇的“价值陷阱“避免方法

彼得林奇的“价值陷阱”避免方法关键词:彼得林奇、价值陷阱、避免方法、投资策略、财务分析、行业研究摘要:本文深入探讨了彼得林奇提出的避免“价值陷阱”的方法。首先介绍了相关背景,包括目的、预期读者等内容。接着阐述了核心概念&#xf…

作者头像 李华