- 自动机理论教程
- 自动机理论 - 首页
- 自动机理论 - 入门
- 自动机理论 - 历史
- 自动机理论 - 应用
- 自动机理论术语
- 自动机中字符串的基础
- 自动机的集合论
- 语言和文法
- 计算理论中的文法
- 由文法生成的语言
- 乔姆斯基文法分类
- 有限自动机
- 确定性有限自动机 (DFA)
- 非确定性有限自动机 (NFA)
- 从 NFA 到 DFA 的转换
- DFA 的最小化
- Moore 机与 Mealy 机
- DFA 的补集
- 正则表达式
- 自动机中的正则表达式
- 自动机中的 Arden 定理
- 将正则表达式转换为有限自动机
- 正则文法的泵引理
- 计算理论中的正则集
- 上下文无关文法
- 上下文无关文法 (CFG)
- 上下文无关文法中的二义性
- 上下文无关语言的封闭性
- 简化上下文无关文法
- 乔姆斯基范式 (CNF)
- 格雷巴赫范式 (GNF)
- 上下文无关文法的泵引理
- 下推自动机
- 下推自动机 (PDA)
- 下推自动机的接受
- 从 CFG 构造 PDA
- 下推自动机和解析
- 图灵机
- 图灵机基础 (TM)
- 图灵机接受的语言
- 多磁带图灵机
- 多轨迹图灵机
- 非确定性图灵机
- 半无限带图灵机
- 线性有界自动机 (LBA)
- 可计算性和不可判定性
- 图灵语言的可判定性
- 不可判定语言
- 图灵机停机问题
- 计算理论中的 Rice 定理
- Post 对应问题 (PCP)
- 自动机理论资源
- 自动机理论 - 快速指南
- 自动机理论 - 资源
- 自动机理论 - 讨论
正则集
表示正则表达式值的任何集合都称为正则集。
正则集的性质
性质 1. 两个正则集的并集是正则的。
证明 −
让我们取两个正则表达式
RE1 = a(aa)* 和 RE2 = (aa)*
所以,L1 = {a, aaa, aaaaa,.....}(奇数长度字符串,不包括空串)
和 L2 ={ ε, aa, aaaa, aaaaaa,.......}(偶数长度字符串,包括空串)
L1 ∪ L2 = { ε, a, aa, aaa, aaaa, aaaaa, aaaaaa,.......}
(所有可能长度的字符串,包括空串)
RE (L1 ∪ L2) = a* (它本身就是一个正则表达式)
因此,得证。
性质 2. 两个正则集的交集是正则的。
证明 −
让我们取两个正则表达式
RE1 = a(a*) 和 RE2 = (aa)*
所以,L1 = { a,aa, aaa, aaaa, ....}(所有可能长度的字符串,不包括空串)
L2 = { ε, aa, aaaa, aaaaaa,.......}(偶数长度字符串,包括空串)
L1 ∩ L2 = { aa, aaaa, aaaaaa,.......}(偶数长度字符串,不包括空串)
RE (L1 ∩ L2) = aa(aa)*,它本身就是一个正则表达式。
因此,得证。
性质 3. 正则集的补集是正则的。
证明 −
让我们取一个正则表达式 −
RE = (aa)*
所以,L = {ε, aa, aaaa, aaaaaa, .......}(偶数长度字符串,包括空串)
L 的补集是不在L 中的所有字符串。
所以,L’ = {a, aaa, aaaaa, .....}(奇数长度字符串,不包括空串)
RE (L’) = a(aa)*,它本身就是一个正则表达式。
因此,得证。
性质 4. 两个正则集的差集是正则的。
证明 −
让我们取两个正则表达式 −
RE1 = a (a*) 和 RE2 = (aa)*
所以,L1 = {a, aa, aaa, aaaa, ....}(所有可能长度的字符串,不包括空串)
L2 = { ε, aa, aaaa, aaaaaa,.......}(偶数长度字符串,包括空串)
L1 – L2 = {a, aaa, aaaaa, aaaaaaa, ....}
(所有奇数长度的字符串,不包括空串)
RE (L1 – L2) = a (aa)*,它是一个正则表达式。
因此,得证。
性质 5. 正则集的反转是正则的。
证明 −
如果L 是一个正则集,我们必须证明LR 也是正则的。
例如,L = {01, 10, 11, 10}
RE (L) = 01 + 10 + 11 + 10
LR = {10, 01, 11, 01}
RE (LR) = 01 + 10 + 11 + 10,它是正则的
因此,得证。
性质 6. 正则集的闭包是正则的。
证明 −
如果 L = {a, aaa, aaaaa, .......} (奇数长度字符串,不包括空串)
即, RE (L) = a (aa)*
L* = {a, aa, aaa, aaaa , aaaaa,……………} (所有长度的字符串,不包括空串)
RE (L*) = a (a)*
因此,得证。
性质 7. 两个正则集的连接是正则的。
证明 −
设 RE1 = (0+1)*0 和 RE2 = 01(0+1)*
这里, L1 = {0, 00, 10, 000, 010, ......} (以 0 结尾的字符串集)
和 L2 = {01, 010,011,.....} (以 01 开头的字符串集)
然后, L1 L2 = {001,0010,0011,0001,00010,00011,1001,10010,.............}
包含 001 作为子串的字符串集,可以用一个 RE 表示 − (0 + 1)*001(0 + 1)*
因此,得证。
与正则表达式相关的恒等式
给定 R、P、L、Q 为正则表达式,以下恒等式成立 −
- ∅* = ε
- ε* = ε
- RR* = R*R
- R*R* = R*
- (R*)* = R*
- RR* = R*R
- (PQ)*P =P(QP)*
- (a+b)* = (a*b*)* = (a*+b*)* = (a+b*)* = a*(ba*)*
- R + ∅ = ∅ + R = R (并集的恒等式)
- R ε = ε R = R (连接的恒等式)
- ∅ L = L ∅ = ∅ (连接的零元)
- R + R = R (幂等律)
- L (M + N) = LM + LN (左分配律)
- (M + N) L = ML + NL (右分配律)
- ε + RR* = ε + R*R = R*