news 2026/6/13 11:23:26

【程序语言与编译】正规式与有限自动机的等价转换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【程序语言与编译】正规式与有限自动机的等价转换

适合读者:软考中级备考同学
阅读时间:4分钟
内容:正规式与FA等价性、正规式转NFA(Thompson构造法)、NFA转正规式(状态消去法)、例题


1. 为什么需要等价转换?

正规式(RE)和有限自动机(FA,包括NFA和DFA)都能描述正则语言,且二者等价

  • 每个正规式对应一个NFA(进而可转为DFA)
  • 每个NFA/DFA对应的语言都可以用一个正规式表示

软考中常考查两种方向:

  • 给定正规式,画出NFA状态图
  • 给定DFA(或NFA),写出等价的正规式

掌握转换方法,可以灵活地在两种表示之间切换,便于词法分析器的设计。


2. 正规式 → NFA(Thompson构造法)

Thompson构造法通过递归地为每个子正规式构造局部NFA,再组合成整体NFA。基本规则如下:

2.1 基本规则

  • 空串ε\varepsilonε
    → (i) → (f)一条ε\varepsilonε边。
  • 单个字符aaa
    → (i) -a-> (f)

2.2 组合规则

rrrsss的子NFA分别为N(r)N(r)N(r)N(s)N(s)N(s),它们的初态和终态分别为ir,fri_r, f_rir,fris,fsi_s, f_sis,fs

  • 连接rsrsrs:将frf_rfrisi_sisε\varepsilonε边连接,整体初态为iri_rir,终态为fsf_sfs
  • 选择r∣sr|srs:新增一个初态iii和终态fff,从iii分别用ε\varepsilonε边连到iri_ririsi_sis,再从frf_rfrfsf_sfsε\varepsilonε边连到fff
  • 闭包r∗r^*r:新增初态iii和终态fff,添加四条ε\varepsilonε边:i→fi \to fifi→iri \to i_riirfr→ff_r \to ffrffr→irf_r \to i_rfrir(允许循环)。

2.3 示例

将正规式(a∣b)∗a(a|b)^*a(ab)a转换为NFA。

  1. 构造a∣ba|bab
    • aaa的NFA:i0→a→f0
    • bbb的NFA:i1→b→f1
    • 选择构造:新初态I,新终态F,Iε→i0,Iε→i1,f0ε→F,f1ε→F。
  2. (a∣b)(a|b)(ab)做闭包∗*:新增初态I’和终态F’,添加ε边:I’→F’,I’→I,F→F’,F→I。
  3. 连接aaa:上一步的终态F’用ε连接到新a的NFA的初态,a的NFA的终态作为整体终态。

(图形省略,考试中通常只要求理解构造思路,不要求画出复杂图。)


3. NFA → 正规式(状态消去法)

思想:逐步消去NFA中的中间状态,同时用正规式标记转移边上的标签。最终只剩初态和终态,两者之间的边上的正规式即为所求。

3.1 步骤

  1. 添加一个新的初态XXX(用ε\varepsilonε边连接原初态)和一个新的终态YYY(用ε\varepsilonε边连接原终态),保证只有一个初态和一个终态。
  2. 反复选择一个内部状态(不是XXX也不是YYY)消去:
    • 对于被消去状态qqq,考虑所有进入qqq的边(标记为RiR_iRi,来自状态pip_ipi)和所有从qqq离开的边(标记为SjS_jSj,去往状态rjr_jrj),以及qqq的自环边(标记为TTT)。
      消去qqq后,为每对pi→rjp_i \to r_jpirj添加一条新边,标记为Ri⋅T∗⋅SjR_i \cdot T^* \cdot S_jRiTSj。如果pip_ipirjr_jrj之间已有边,则用选择|合并。
    • 删除qqq及其所有关联边。
  3. 重复直到只剩XXXYYY
  4. 如果存在从XXXYYY的边,标记为RRR,则正规式为RRR;如果有多条平行边,用|合并。

3.2 简化规则

  • XXX有自环,可忽略(因为开始前不输入任何字符)。
  • 最终结果通常用R=R1∣R2∣...R = R_1 | R_2 | ...R=R1R2∣...表示。

4. 经典例题

题目1:将正规式(0∣1)∗1(0|1)^*1(0∣1)1转换为NFA(描述思路即可)。

  • 先构造0∣10|10∣1,再闭包,最后连接111。最终得到一个具有ε\varepsilonε转移的NFA,能识别所有以1结尾的二进制串。

题目2:给定DFA如下(状态A初态,B终态,转移:A–0–>A,A–1–>B,B–0–>A,B–1–>B),求等价的正规式。

(使用状态消去法):

  • 添加新初态XXX(ε→A)和新终态YYY(B→ε→Y)。
  • 消去中间状态?直接观察:从A经过一个1到B,之后可以在B上任意多个1(循环),也可以从B通过0回到A,然后重复。
    用方程法(或消去法):
    RAAR_{AA}RAA表示从A到A的正规式,RABR_{AB}RAB从A到B,等等。
    • A→A: 读0可自环 →000
    • A→B: 读1 →111
    • B→A: 读0 →000
    • B→B: 读1 →111
      列方程:
      A=A⋅0∣B⋅0∣εA = A \cdot 0 \mid B \cdot 0 \mid \varepsilonA=A0B0ε
      B=A⋅1∣B⋅1B = A \cdot 1 \mid B \cdot 1B=A1B1
      先解B=A1∣B1B = A1 \mid B1B=A1B1B=A1⋅1∗B = A1 \cdot 1^*B=A11(由B=B1∣A1B = B1 \mid A1B=B1A1B=A1⋅1∗B = A1 \cdot 1^*B=A11)。
      代入AAAA=A0∣(A1⋅1∗)0∣ε=A(0∣11∗0)∣εA = A0 \mid (A1 \cdot 1^*)0 \mid \varepsilon = A(0 \mid 11^*0) \mid \varepsilonA=A0(A11)0ε=A(0110)ε
      所以A=(0∣11∗0)∗A = (0 \mid 11^*0)^*A=(0110)
      最终正规式(从A到终态B):A⋅(1⋅1∗)A \cdot (1 \cdot 1^*)A(11)? 注意B是终态,原DFA的初态A,终态B,所以语言是A→BA \to BAB的串。由B=A1⋅1∗B = A1 \cdot 1^*B=A11,所以正规式为A1⋅1∗=(0∣11∗0)∗1⋅1∗=(0∣11∗0)∗1+A1 \cdot 1^* = (0 \mid 11^*0)^* 1 \cdot 1^* = (0 \mid 11^*0)^* 1^+A11=(0110)11=(0110)1+。可以简化为(0∣11∗0)∗1+(0|11^*0)^*1^+(0∣110)1+

答案(0∣11∗0)∗1+(0|11^*0)^*1^+(0∣110)1+(或等价形式)


5. 记忆口诀

正规式与自动机,等价互转需记清。
RE转FA Thompson,递归添加ε边。
FA转RE消状态,自环闭包解方程。


6. 给备考同学的一句话

正规式与有限自动机的等价转换是词法分析理论的核心。软考中通常只考查简单实例(状态数2-3个)或概念性选择题。需要掌握:

  • Thompson构造法的基本思想(为每个运算符构造局部NFA)。
  • 状态消去法(或方程求解)求DFA的正规式。

如果考试遇到复杂转换,建议先用方程法列方程,再解正规式,避免手工消去出错。


🔔本专栏日更2篇,点击头像 → 专栏《软考中级高频考点》订阅

#软考中级 #软件设计师 #正规式 #有限自动机 #等价转换 #词法分析

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 11:22:56

Scroll Reverser终极指南:如何为Mac触控板和鼠标设置独立滚动方向

Scroll Reverser终极指南:如何为Mac触控板和鼠标设置独立滚动方向 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是否曾经在MacBook触控板和外部鼠标之间切换时感…

作者头像 李华
网站建设 2026/6/13 11:22:24

数据生产化:让机器学习模型真正适应业务变化的数据治理实践

1. 项目概述:当模型上线后,数据才是真正的“生产环境守门人”你有没有遇到过这样的情况:模型在测试集上AUC做到0.92,部署上线一周后监控告警突然狂闪——线上预测准确率掉到0.68,业务方打电话来问“是不是模型崩了”&a…

作者头像 李华
网站建设 2026/6/13 11:22:23

MLOps年度实践地图:从监控、发布到组织协同的工程落地指南

1. 项目概述:这不是一份“打卡清单”,而是一张MLOps从业者的年度能力成长地图2022年,MLOps这个词已经从技术博客里的小众热词,变成了招聘JD里高频出现的硬性要求。我亲眼见过太多团队——数据科学家写完模型就交差,工程…

作者头像 李华
网站建设 2026/6/13 11:22:23

MITACS Globalink申请本质:科研潜力验证与技术叙事闭环

1. 这不是普通实习,而是一张通往北美科研体系的硬通货通行证MITACS Globalink Research Internship(以下简称Globalink)在理工科本科生圈子里有个很实在的称呼——“加拿大科研入场券”。它不是企业实习,不发工资,但提…

作者头像 李华
网站建设 2026/6/13 11:17:55

Point2Mesh终极指南:从点云到水密网格的深度重建技术解析

Point2Mesh终极指南:从点云到水密网格的深度重建技术解析 【免费下载链接】point2mesh Reconstruct Watertight Meshes from Point Clouds [SIGGRAPH 2020] 项目地址: https://gitcode.com/gh_mirrors/po/point2mesh Point2Mesh是SIGGRAPH 2020上发表的创新性…

作者头像 李华