正则语言的闭包属性被定义为对正则语言进行的某些操作,这些操作保证产生正则语言。闭包是指对一种语言进行某种操作,产生一种与原来操作的“类型”相同的新语言,即正则。
常规语言在以下操作下关闭。
考虑 L 和 M 是常规语言:
- 克莱恩关闭:
RS是语言为L,M的正则表达式。R*是语言为L*的正则表达式。 - 正闭包:
RS 是一个正则表达式,其语言为 L, M。 是一个正则表达式,其语言是 . - 补充:
语言 L 的补语(相对于字母表以至于包含 L) 是 -L。自从肯定是正则的,正则语言的补语总是正则的。 - 反向运算符:
给定语言 L, 是反转在 L 中的字符串的集合。
示例:L = {0, 01, 100};
={0, 10, 001}。
证明:令 E 为 L 的正则表达式。我们展示如何反转 E,以提供正则表达式为了 . - 补充:
语言 L 的补语(相对于字母表以至于包含 L) 是 -L。自从肯定是正则的,正则语言的补语总是正则的。 - 联盟:
设L和M分别为正则表达式R和S的语言。则R+S是语言为(LUM)的正则表达式。 - 路口:
设 L 和 M 分别为正则表达式 R 和 S 的语言,则它是语言为 L 交点 M 的正则表达式。
证明:设 A 和 B 分别是语言为 L 和 M 的 DFA。构造 C,A 和 B 的乘积自动机使 C 的最终状态是由 A 和 B 的最终状态组成的对。 - 设置差分运算符:
如果 L 和 M 是常规语言,那么 L 也是 – M = L 中的字符串,但不是 M。证明:设 A 和 B 分别是语言为 L 和 M 的 DFA。构造 C,A 和 B 的乘积自动机使 C 的最终状态成为对,其中 A 状态是最终状态,而 B 状态不是。
- 同态:
字母表上的同态是一个函数,它为该字母表中的每个符号提供一个字符串。示例:h(0) = ab; h(1) = .通过 h(a1…an) =h(a1)…h(an) 扩展到字符串。示例:h(01010) = ababab。如果 L 是正则语言,并且 h 是其字母表上的同态,则 h(L)= {h(w) | w is in L} 也是正则语言。
证明:令 E 为 L 的正则表达式。将 h 应用于 E 中的每个符号。结果 R 的语言,E 是 h(L)。 - 逆同态:设 h 是一个同态,L 是一个语言,其字母表是 h 的输出语言。 (L) = {w | h(w) 在 L} 中。
注意:还有一些属性,如对称差分运算符、前缀运算符、替换,这些属性在常规语言的闭包属性下是封闭的。
决策属性:
在有限自动机的情况下,几乎所有的性质都是可判定的。
(i) Emptiness
(ii) Non-emptiness
(iii) Finiteness
(iv) Infiniteness
(v) Membership
(vi) Equality
这些解释如下。
(i) 空性与非空性:
- Step-1:从初始状态中选择无法到达的状态并删除它们(删除无法到达的状态)。
- 步骤 2:如果结果机器包含至少一个最终状态,那么有限自动机接受非空语言。
- 第 3 步:如果结果机器不受最终状态的影响,则有限自动机接受空语言。
(ii) 有限与无限:
- Step-1:从初始状态中选择无法到达的状态并删除它们(删除无法到达的状态)。
- 第 2 步:选择无法到达最终状态的状态并删除它们(移除死状态)。
- 步骤 3:如果生成的机器包含循环或循环,则有限自动机接受无限语言。
- 步骤 4:如果生成的机器不包含循环或循环,则有限自动机接受无限语言。
(iii) 会员资格:
成员资格是验证任意字符串是否被有限自动机接受的属性,即它是否是该语言的成员。让 M 是一个有限自动机,它接受字母表上的一些字符串,并且让 ‘w’ 是字母表上定义的任何字符串,如果 M 中存在一个转换路径,它从初始状态开始并在任何最终状态结束,那么字符串’w’ 是 M 的成员,否则 ‘w’ 不是 M 的成员。
(iv) 平等:
两个有限状态自动机 M1 和 M2 被称为相等当且仅当它们接受相同的语言。最小化有限状态自动机,最小 DFA 将是唯一的。