- 递归定义:
- 递归基础:空字((\varepsilon))和空集((\varnothing))是正规式;字母表(\Sigma)上的单个字符(如(0)、(1)、(a)、(b)等)也是正规式。
- 递归扩展:若(r_1)和(r_2)是正规式,则(r_1|r_2)(或运算,对应集合的并集)、(r_1r_2)(连接运算,对应集合的乘积运算)、(r_1^*)(闭包运算,对应集合的克林闭包)以及((r_1))(括号改变运算优先级和结合性)也都是正规式。
- 物理意义:每个正规式都对应一个正规集(即由字符串组成的集合),正规式是描述正规集的表达式。例如,正规式(0)对应正规集({0}),正规式(\varepsilon)对应正规集({\varepsilon})(空字组成的集合),正规式(\varnothing)对应正规集(\varnothing)(空集)。
闭包运算(克林闭包)
- 定义:对于正规式®(对应正规集(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)组成的所有串)。
- 性质:
- 闭包中一定包含空串(\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})(含空串)。
闭包与正规闭包的差别(结合知识背景理解)
- 闭包(克林闭包):
- 是正规式的运算符,作用于正规式®,生成新的正规式(r^*),其对应的正规集是(L®)的克林闭包(包含空串和(L®)中字符串的任意次连接)。
- 是语言层面的操作,用于构造更复杂的正规式,描述更大的字符串集合。
- 正规闭包(关系的闭包):
- 是关系的闭包(如自反闭包、对称闭包、传递闭包),定义在集合(A)上的二元关系(R)上,满足三个条件:包含(R)、具有目标性质(如自反性、对称性、传递性)、是满足前两个条件的最小关系。
- 是关系层面的操作,用于给关系补充缺失的性质(如自反性),使其满足特定的数学结构(如等价关系需要自反、对称、传递性)。
总结
- 正规式是描述字符串集合(正规集)的表达式,通过递归定义和或、连接、闭包运算构造。
- 闭包(克林闭包)是正规式的运算符,生成包含空串和原集合字符串任意次连接的新集合。
- 正规式的等价性由正规集是否相同决定,可通过分析闭包、连接、或运算的结果验证。
- 闭包(克林闭包)是语言层面的操作,而正规闭包(关系闭包)是关系层面的操作,二者的运算对象、目的、性质均不同。
闭包运算(这里主要讨论正规式的克林闭包和关系的闭包,结合知识背景分析)具有以下性质:
一、正规式的克林闭包(语言层面的闭包)
- 幂等性:对于正规式®(对应正规集(L®)),其克林闭包(r*)满足((r)^= r*)。因为(r)对应的正规集是(L®)的克林闭包(包含空串和(L®)中字符串的任意次连接),再次对(r^)取闭包不会改变其正规集(已包含所有可能的连接组合)。例如,若(r = a)(对应正规集({a})),则(r^* = {\varepsilon, a, aa, aaa, \dots}),((r*)* = r^*),因为再次闭包后正规集仍为({\varepsilon, a, aa, \dots})。
- 零次幂与闭包的关系:正规式(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})。
- 与连接、或运算的兼容性:
- 连接运算对克林闭包满足分配律(左分配和右分配)。例如,(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^)的正规集相等)。
二、关系的闭包(关系层面的闭包,如自反闭包、对称闭包、传递闭包)
- 最小性:关系®的闭包(如自反闭包(r®)、对称闭包(s®)、传递闭包(t®))是满足以下三个条件的最小关系:
- 包含原关系(R)(即(R \subseteq)闭包关系);
- 具有目标性质(如自反性、对称性、传递性);
- 是满足前两个条件的最小关系(若存在另一个关系(S)也满足前两个条件,则闭包关系(\subseteq S))。例如,®是集合(A)上的关系,其自反闭包(r®)是在®中添加所有形如((a, a))((a \in A))的有序对后的关系,且是包含®的最小自反关系。
- 自反闭包的性质:
- 若®是自反的,则(r® = R)(因为®已满足自反性,无需添加有序对);
- (r®)的关系矩阵的主对角线元素全为(1)(自反性的矩阵特征)。
- 对称闭包的性质:
- 若®是对称的,则(s® = R)(因为®已满足对称性,无需添加逆有序对);
- (s®)的关系矩阵是对称矩阵(对称关系的矩阵特征),即若((a, b))在(s®)中,则((b, a))也在(s®)中。
- 传递闭包的性质:
- 若®是传递的,则(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)})。
三、闭包与其他运算的关系(跨层面的性质)
- 正规式闭包与关系闭包的区别:
- 正规式的克林闭包是语言(字符串集合)的操作,用于构造更复杂的正规式,描述更大的字符串集合;
- 关系的闭包是关系的操作,用于给关系补充缺失的性质(如自反性、传递性),使其满足特定的数学结构(如等价关系需要自反、对称、传递性)。
- 闭包的“继承性”:若原关系/正规式具有某些性质,其闭包可能继承部分性质。例如:
- 若关系®是自反且传递的,则其传递闭包(t® = R)(因为®已满足传递性);
- 若正规式®对应的正规集(L®)是有限集,则其克林闭包(r^)对应的正规集可能是无限集(如(r = a),(L® = {a}),(r^= {\varepsilon, a, aa, \dots})是无限集)。
总结
闭包运算(包括正规式的克林闭包和关系的闭包)的核心性质是最小性(关系闭包)和幂等性(正规式闭包),同时闭包与原运算/关系的性质(如自反性、传递性、语言的连接性)密切相关,且不同层面的闭包(语言 vs 关系)具有不同的应用场景和数学意义。