news 2026/7/17 5:17:30

正规式是描述字符串集合(正规集)的表达式,通过递归定义和或、连接、闭包运算构造

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
正规式是描述字符串集合(正规集)的表达式,通过递归定义和或、连接、闭包运算构造
  1. 递归定义
    • 递归基础:空字((\varepsilon))和空集((\varnothing))是正规式;字母表(\Sigma)上的单个字符(如(0)、(1)、(a)、(b)等)也是正规式。
    • 递归扩展:若(r_1)和(r_2)是正规式,则(r_1|r_2)(或运算,对应集合的并集)、(r_1r_2)(连接运算,对应集合的乘积运算)、(r_1^*)(闭包运算,对应集合的克林闭包)以及((r_1))(括号改变运算优先级和结合性)也都是正规式。
  2. 物理意义:每个正规式都对应一个正规集(即由字符串组成的集合),正规式是描述正规集的表达式。例如,正规式(0)对应正规集({0}),正规式(\varepsilon)对应正规集({\varepsilon})(空字组成的集合),正规式(\varnothing)对应正规集(\varnothing)(空集)。

闭包运算(克林闭包)

  1. 定义:对于正规式®(对应正规集(L®)),其闭包运算(r*)对应的正规集是(L®)的**克林闭包**,即:(L(r*) = {\varepsilon} \cup L® \cup L®L® \cup L®L®L® \cup \dots)(包含空串和(L®)中字符串的(1)次、(2)次、(3)次……连接的所有可能结果)。
    • 例如:若(r = a)(对应正规集({a})),则(r^*)对应的正规集是({\varepsilon, a, aa, aaa, \dots})(由(0)个或多个(a)组成的所有串)。
    • 若(r = a|b)(对应正规集({a, b})),则(r^*)对应的正规集是({\varepsilon, a, b, aa, ab, ba, bb, aaa, \dots})(由(0)个或多个(a)、(b)组成的所有串)。
  2. 性质
    • 闭包中一定包含空串(\varepsilon)(因为克林闭包定义包含“(0)次连接”,即空串)。
    • 克林闭包运算具有幂等性:((r*)* = r^*)(因为对闭包再做闭包,结果还是原闭包的集合)。
    • 闭包运算与连接、或运算的关系:例如,(r^* = \varepsilon|r|rr|rrr|\dots),且连接运算对或运算满足分配律(如(r(s|t) = rs|rt))。

正规式的等价

若两个正规式对应的正规集相同,则称这两个正规式等价。例如:

  • 正规式(b(ab)*)和((ba)*b)等价,因为它们对应的正规集都是由字符串(b)开头,后续交替出现(ab)(或(ba))若干次,最后以(b)结尾的所有串(可通过展开闭包并分析连接、或运算的结果验证)。
  • 正规式(a*a)和(a*)((a \neq \varepsilon))等价吗?不等价,因为(a^a)对应的正规集是({a, aa, aaa, \dots})(不含空串),而(a^)对应的正规集是({\varepsilon, a, aa, \dots})(含空串)。

闭包与正规闭包的差别(结合知识背景理解)

  1. 闭包(克林闭包)
    • 正规式的运算符,作用于正规式®,生成新的正规式(r^*),其对应的正规集是(L®)的克林闭包(包含空串和(L®)中字符串的任意次连接)。
    • 语言层面的操作,用于构造更复杂的正规式,描述更大的字符串集合。
  2. 正规闭包(关系的闭包)
    • 关系的闭包(如自反闭包、对称闭包、传递闭包),定义在集合(A)上的二元关系(R)上,满足三个条件:包含(R)、具有目标性质(如自反性、对称性、传递性)、是满足前两个条件的最小关系。
    • 关系层面的操作,用于给关系补充缺失的性质(如自反性),使其满足特定的数学结构(如等价关系需要自反、对称、传递性)。

总结

  • 正规式是描述字符串集合(正规集)的表达式,通过递归定义和或、连接、闭包运算构造。
  • 闭包(克林闭包)是正规式的运算符,生成包含空串和原集合字符串任意次连接的新集合。
  • 正规式的等价性由正规集是否相同决定,可通过分析闭包、连接、或运算的结果验证。
  • 闭包(克林闭包)是语言层面的操作,而正规闭包(关系闭包)是关系层面的操作,二者的运算对象、目的、性质均不同。
    闭包运算(这里主要讨论正规式的克林闭包和关系的闭包,结合知识背景分析)具有以下性质:

一、正规式的克林闭包(语言层面的闭包)

  1. 幂等性:对于正规式®(对应正规集(L®)),其克林闭包(r*)满足((r)^= r*)。因为(r)对应的正规集是(L®)的克林闭包(包含空串和(L®)中字符串的任意次连接),再次对(r^)取闭包不会改变其正规集(已包含所有可能的连接组合)。例如,若(r = a)(对应正规集({a})),则(r^* = {\varepsilon, a, aa, aaa, \dots}),((r*)* = r^*),因为再次闭包后正规集仍为({\varepsilon, a, aa, \dots})。
  2. 零次幂与闭包的关系:正规式(r)的克林闭包(r*)包含(r)的**零次幂**(即空串(\varepsilon)对应的正规集({\varepsilon})),而(r)的正闭包(r+)((r^+ = r r*))不包含零次幂,即(r+ = r | r r | r r r | \dots)(仅包含(r)中字符串的(1)次、(2)次……连接的结果)。例如,(r = a)时,(r^* = {\varepsilon, a, aa, \dots}),(r^+ = {a, aa, aaa, \dots})。
  3. 与连接、或运算的兼容性
    • 连接运算对克林闭包满足分配律(左分配和右分配)。例如,(r(s^) = (rs)*)(左分配),((s)r = (sr)*)(右分配)?不,严格来说,(r(s) = rs^0 | rs^1 | rs^2 | \dots = {\varepsilon r} | rs | rs^2 | \dots = r | rs | rs^2 | \dots),而((rs)^= {\varepsilon} | rs | (rs)(rs) | \dots),二者不一定相等。正确的关系是:(r*s* \subseteq (rs)*)不成立,((rs)* \subseteq r*s)也不成立,但((r|s)^= r*s)(当(r)和(s)的正规集不交时?不,实际((r|s)^= {\varepsilon} | (r|s) | (r|s)(r|s) | \dots),而(r*s* = ({\varepsilon} | r | r^2 | \dots)({\varepsilon} | s | s^2 | \dots)),二者相等,因为((r|s)^n = \bigcup_{i + j = n} r^i s^j)((n \geq 0)),所以((r|s)^* = \bigcup_{n = 0}^\infty (r|s)^n = \bigcup_{n = 0}^\infty \bigcup_{i + j = n} r^i s^j = (\bigcup_{i = 0}^\infty r^i)(\bigcup_{j = 0}^\infty s^j) = r*s*))。
    • 或运算与克林闭包的关系:((r|s)^* = r*s*)(当(r)和(s)的正规集的连接不产生新字符串时?实际如上述推导,((r|s)*)和(rs^)的正规集相等)。

二、关系的闭包(关系层面的闭包,如自反闭包、对称闭包、传递闭包)

  1. 最小性:关系®的闭包(如自反闭包(r®)、对称闭包(s®)、传递闭包(t®))是满足以下三个条件的最小关系
    • 包含原关系(R)(即(R \subseteq)闭包关系);
    • 具有目标性质(如自反性、对称性、传递性);
    • 是满足前两个条件的最小关系(若存在另一个关系(S)也满足前两个条件,则闭包关系(\subseteq S))。例如,®是集合(A)上的关系,其自反闭包(r®)是在®中添加所有形如((a, a))((a \in A))的有序对后的关系,且是包含®的最小自反关系。
  2. 自反闭包的性质
    • 若®是自反的,则(r® = R)(因为®已满足自反性,无需添加有序对);
    • (r®)的关系矩阵的主对角线元素全为(1)(自反性的矩阵特征)。
  3. 对称闭包的性质
    • 若®是对称的,则(s® = R)(因为®已满足对称性,无需添加逆有序对);
    • (s®)的关系矩阵是对称矩阵(对称关系的矩阵特征),即若((a, b))在(s®)中,则((b, a))也在(s®)中。
  4. 传递闭包的性质
    • 若®是传递的,则(t® = R)(因为®已满足传递性,无需添加由传递性推导的有序对);
    • 传递闭包(t®)可通过“沃舍尔算法”或“逐次求并(R^n)((n \geq 1))”计算,即(t® = R \cup R^2 \cup R^3 \cup \dots)((R^n)是®的(n)次复合)。例如,(R = {(a, b), (b, c)}),则(R^2 = {(a, c)}),(t® = {(a, b), (b, c), (a, c)})。

三、闭包与其他运算的关系(跨层面的性质)

  1. 正规式闭包与关系闭包的区别
    • 正规式的克林闭包是语言(字符串集合)的操作,用于构造更复杂的正规式,描述更大的字符串集合;
    • 关系的闭包是关系的操作,用于给关系补充缺失的性质(如自反性、传递性),使其满足特定的数学结构(如等价关系需要自反、对称、传递性)。
  2. 闭包的“继承性”:若原关系/正规式具有某些性质,其闭包可能继承部分性质。例如:
    • 若关系®是自反且传递的,则其传递闭包(t® = R)(因为®已满足传递性);
    • 若正规式®对应的正规集(L®)是有限集,则其克林闭包(r^)对应的正规集可能是无限集(如(r = a),(L® = {a}),(r^= {\varepsilon, a, aa, \dots})是无限集)。

总结

闭包运算(包括正规式的克林闭包和关系的闭包)的核心性质是最小性(关系闭包)和幂等性(正规式闭包),同时闭包与原运算/关系的性质(如自反性、传递性、语言的连接性)密切相关,且不同层面的闭包(语言 vs 关系)具有不同的应用场景和数学意义。

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

deepcode-cli终端AI编程助手:从安装配置到Agent Skills实战指南

在终端环境下直接调用 AI 大模型进行代码编写和问题解答,已经成为提升开发效率的重要方式。deepcode-cli 作为专为 DeepSeek-V4 系列模型优化的开源终端 AI 编程助手,支持深度思考模式和 Agent Skills 机制,让开发者能够在命令行环境中获得智…

作者头像 李华
网站建设 2026/7/17 5:14:12

C++选课系统课程设计:从OOP到数据持久化的完整实现指南

1. 项目概述与核心价值最近在带几个学弟学妹做课程设计,发现“C实现的选课系统”这个题目真是经久不衰,几乎每个计算机相关专业的学生都绕不开。它之所以经典,是因为它麻雀虽小,五脏俱全,几乎涵盖了本科阶段软件工程、…

作者头像 李华
网站建设 2026/7/17 5:14:08

Spring Cloud Config金融级密钥轮换:微服务配置安全的动态防御实践

1. 项目概述:为什么金融级密钥轮换是Spring Cloud Config的“必修课”在微服务架构里,配置中心是那个“沉默的基石”,而Spring Cloud Config则是Java生态里最常用的那块基石。它把散落在各个服务里的配置文件集中管理,带来了便利&…

作者头像 李华
网站建设 2026/7/17 5:12:55

Win11 PIN码删除指南与常见问题解决

1. 为什么需要删除Win11的PIN码?Windows 11的PIN码登录虽然方便,但在某些场景下反而会成为负担。我最近就遇到一位客户,他的Surface Pro在升级Win11后强制要求设置PIN码,结果出差时忘记密码导致设备被锁定。类似的情况还包括&…

作者头像 李华
网站建设 2026/7/17 5:12:35

基于ZYNQ UltraScale+ MPSOC的MIPI图像传感器图像采集与处理硬件方案设计

一、引言随着计算机与集成电路技术的发展,实时处理图像的应用场景逐渐多样化,同时随着各种各样的场景对图像分辨率的要求逐渐变高,图像采集与处理系统在耗时方面也随之增加。解决办法:改变算法的硬件实现方式,选用资源…

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

Debian12无线网卡驱动配置与网络连接指南

1. Debian12无线网卡驱动配置全攻略刚装完Debian12系统,发现无线网络死活连不上?别急着重装系统,这很可能只是缺少了无线网卡驱动。作为从Debian7一路用到12的老用户,我遇到过各种奇葩的无线网卡兼容性问题。今天就用最直白的方式…

作者头像 李华