📜  正则语言的闭包属性

📅  最后修改于: 2021-09-28 09:59:23             🧑  作者: Mango

正则语言的闭包属性被定义为对正则语言进行的某些操作,这些操作保证产生正则语言。闭包是指对一种语言进行某种操作,产生一种与原来操作的“类型”相同的新语言,即正则。

常规语言在以下操作下关闭。

考虑 L 和 M 是常规语言:

  1. 克莱恩关闭:
    RS是语言为L,M的正则表达式。R*是语言为L*的正则表达式。
  2. 正闭包:
    RS 是一个正则表达式,其语言为 L, M。 R^+是一个正则表达式,其语言是L^+ .

  3. 补充:
    语言 L 的补语(相对于字母表E以至于E^*包含 L) 是E^* -L。自从E^*肯定是正则的,正则语言的补语总是正则的。
  4. 反向运算符:
    给定语言 L, L^R是反转在 L 中的字符串的集合。
    示例:L = {0, 01, 100};
    L^R ={0, 10, 001}。
    证明:令 E 为 L 的正则表达式。我们展示如何反转 E,以提供正则表达式E^R为了L^R .
  5. 补充:
    语言 L 的补语(相对于字母表E以至于E^*包含 L) 是E^* -L。自从E^*肯定是正则的,正则语言的补语总是正则的。
  6. 联盟:
    设L和M分别为正则表达式R和S的语言。则R+S是语言为(LUM)的正则表达式。
  7. 路口:
    设 L 和 M 分别为正则表达式 R 和 S 的语言,则它是语言为 L 交点 M 的正则表达式。
    证明:设 A 和 B 分别是语言为 L 和 M 的 DFA。构造 C,A 和 B 的乘积自动机使 C 的最终状态是由 A 和 B 的最终状态组成的对。
  8. 设置差分运算符:
    如果 L 和 M 是常规语言,那么 L 也是 – M = L 中的字符串,但不是 M。

    证明:设 A 和 B 分别是语言为 L 和 M 的 DFA。构造 C,A 和 B 的乘积自动机使 C 的最终状态成为对,其中 A 状态是最终状态,而 B 状态不是。

  9. 同态:
    字母表上的同态是一个函数,它为该字母表中的每个符号提供一个字符串。示例:h(0) = ab; h(1) = E .通过 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)。

  10. 逆同态:设 h 是一个同态,L 是一个语言,其字母表是 h 的输出语言。 h^-1 (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 将是唯一的。