正则语言的性质

一、正则语言的性质

1.正则语言的泵引理

LLL是正则语言,则存在与LLL相关的常数nnn满足:对于任何LLL中的串www,如果∣w∣≥n|w|\geq nwn,则我们就能把www打断为三个串w=xyzw=xyzw=xyz使得:

  1. y≠ϵy \not= \epsilony=ϵ
  2. ∣xy∣≤n|xy|\leq nxyn
  3. 对于所有的k≥0k\geq 0k0,串xykzxy^kzxykz也属于LLL

也就是说,我们总能在离www的开始处不远的地方,找到一个非空串yyy,然后可以把它作为“泵”,也就是说,重复yyy任意多次,或者去掉它(k=0k=0k=0),而所得到的结果串仍属于LLL

在这里插入图片描述

2.泵引理的应用

泵引理主要用于证明某个语言是非正则的。主要步骤如下:

  1. 选择一个给定的需要证明的非正则语言LLL
  2. 选择一个合适的nnn,注意这里nnn并不是某个常数,而是要考虑任何可能的nnn
  3. 选择串www,它可以与nnn相关,且长度至少为nnn
  4. www拆分成x,y,zx,y,zx,y,z,同时满足泵引理中规定的限制条件:$y \not= \epsilon $以及 $ |xy| \leq n$。
  5. 如果能够选择任意k≥0k \geq 0k0使得xykzxy^kzxykz不属于LLL,其中kkk可以是n,x,y,zn,x,y,zn,x,y,z的函数,则能够证明LLL不是正则语言。

证明下面的语言不是正则语言:

例1 {ww∣w∈{0,1}∗}\{ww\mid w \in \{0,1\}^*\}{www{0,1}}

证明:

假设L={ww∣w∈{0,1}∗}L=\{ww\mid w \in \{0,1\}^*\}L={www{0,1}}是正则语言。
对于给定的nnn,构造串w=0n10n∈Lw=0^n10^n \in Lw=0n10nL
根据正则语言的泵引理,将www分割为w=xyzw=xyzw=xyz,且使得$|xy|<n,y \not= \epsilon 。易知,。 易知,。易知,y=0^k(0<k\leq n),且,且,且w_i = xy^iz \in L。令。 令。令i = 2,则,则,则w_2=0{n+k}10n1 \notin L,得出矛盾,故,得出矛盾,故,得出矛盾,故L$不是正则语言。

例2 {w∣∣0∣w≥∣1∣w,w∈{0,1}∗}\{w\mid |0|_w\geq |1|_w,w\in \{0,1\}^*\}{w∣0w∣1w,w{0,1}}

证明:

假设L={w∣∣0∣w≥∣1∣w,w∈{0,1}∗}L=\{w\mid |0|_w\geq |1|_w,w\in \{0,1\}^*\}L={w∣0w∣1w,w{0,1}}是正则语言。
对于给定的nnn,构造串w=1n0n∈Lw=1^n0^n \in Lw=1n0nL
根据正则语言的泵引理,将www分割为w=xyzw=xyzw=xyz,且使得$|xy|<n,y \not= \epsilon 。易知,。 易知,。易知,y=1^k(0<k\leq n),且,且,且w_i = xy^iz \in L。令。 令。令i = 2,则,则,则w_2=1{n+k}0n \notin L,得出矛盾,故,得出矛盾,故,得出矛盾,故L$不是正则语言。

例3 {w∣∣0∣w+∣1∣w=n2,n∈N}\{w\mid |0|_w + |1|_w = n^2 ,n \in N\}{w∣0w+∣1w=n2,nN}

证明:

假设L={w∣∣0∣w+∣1∣w=n2,n∈N}L=\{w\mid |0|_w + |1|_w = n^2 ,n \in N\}L={w∣0w+∣1w=n2,nN}是正则语言。
对于给定的nnn,构造串w=0n1n2−n∈Lw=0^n1^{n^2-n} \in Lw=0n1n2nL
根据正则语言的泵引理,将www分割为w=xyzw=xyzw=xyz,且使得$|xy|<n,y \not= \epsilon 。易知,。 易知,。易知,y=0^k(0<k\leq n),且,且,且w_i = xy^iz \in L。令。 令。令i = 2,则,则,则w_2=0{n+k}1{n^2-n} \notin L,得出矛盾,故,得出矛盾,故,得出矛盾,故L$不是正则语言。

例4 {0x∣x is a prime number}\{0^x \mid \text{x is a prime number}\}{0xx is a prime number}

证明:

假设L={0x∣x is a prime number}L=\{0^x \mid \text{x is a prime number}\}L={0xx is a prime number}是正则语言。
对于给定的素数nnn,构造串w=0n∈Lw=0^n \in Lw=0nL
根据正则语言的泵引理,将www分割为w=xyzw=xyzw=xyz,且使得$|xy|<n,y \not= \epsilon 。易知,。 易知,。易知,y=0^k(0<k\leq n),且,且,且w_i = xy^iz \in L。令。 令。令i = n-k,则,则,则w’=0^{n-k+k(n-k)}。由于。 由于。由于n-k+k(n-k)=(n-k)(k+1)不是一个素数,所以不是一个素数,所以不是一个素数,所以w’\notin L,得出矛盾,故,得出矛盾,故,得出矛盾,故L$不是正则语言。

二、正则语言的判定性质

1.测试正则语言的空性

判定正则语言是否为空(∅\empty),考虑正则语言的表述形式:

  1. 如果正则语言是DFA/NFA\text{DFA/NFA}DFA/NFA,则判定是否能从初始状态到达接受状态。(可以根据状态和对应的状态转移,使用深度优先遍历进行)

  2. 如果正则语言是正则表达式形式,采用下面的式子递归地对正则表达式进行判定:
    假设RRR是正则语言,则:

    • R=R1+R2R=R_1+R_2R=R1+R2。则L(R)L(R)L(R)当且仅当L(R1)L(R_1)L(R1)为空且L(R2)L(R_2)L(R2)为空。
    • R=R1R2R=R_1R_2R=R1R2。则L(R)L(R)L(R)为空当且仅当L(R1)L(R_1)L(R1)为空或L(R2)L(R_2)L(R2)为空。
    • R=R1∗R=R_1^*R=R1。则L(R)L(R)L(R)不为空;L(R)L(R)L(R)总是至少包含ϵ\epsilonϵ
    • R=(R1)R=(R_1)R=(R1)。则L(R)L(R)L(R)当且仅当L(R1)L(R_1)L(R1)为空。二者是相同的语言。

三.正则语言的封闭性

正则语言的封闭性有:

  1. 两个正则语言的并是正则的。
  2. 正则语言的补是正则的。
  3. 两个正则语言的交是正则的。
  4. 两个正则语言的差是正则的。
  5. 正则语言的反转是正则的。
  6. 正则语言的闭包(星)是正则的。
  7. 几个正则语言的连接是正则的。
  8. 正则语言的同态(用串来代替符号)是正则的。
  9. 正则语言的逆同态是正则的。

下面是上述定理的简要证明:

  1. 如果LLLMMM都是正则语言,则L∪ML \cup MLM也是正则的。

证明 由于LLLMMM都是正则的,所以它们都有正则表达式,L=L(R)L=L(R)L=L(R)M=L(S)M=L(S)M=L(S),所以L∪M=L(R+S)L\cup M = L(R+S)LM=L(R+S)也是正则的。

ε
ε
...
...
ε
ε
q0
R_start
S_start
R_finish
S_finish
qn
  1. 如果LLL是字母表Σ\SigmaΣ上的正则语言,则L‾=Σ∗−L\overline{L}=\Sigma^*-LL=ΣL也是正则语言。

证明A=(Q,Σ,δ,q0,F)A=(Q,\Sigma,\delta,q_0,F)A=(Q,Σ,δ,q0,F)是某个接受L=L(A)L=L(A)L=L(A)DFA\text{DFA}DFA,则L‾=L(B)\overline{L}=L(B)L=L(B),其中BBBB=(Q,Σ,δ,q0,Q−F)B=(Q,\Sigma,\delta,q_0,Q-F)B=(Q,Σ,δ,q0,QF)www属于L(B)L(B)L(B)当且仅当www不属于L(A)L(A)L(A)

  1. 如果LLLMMM都是正则语言,则L∩ML \cap MLM也是正则的。

证明 由德摩根律,L∩M=L‾∪M‾‾L\cap M = \overline{\overline{L}\cup \overline{M}}LM=LM。由正则语言在并和补下的封闭性知,L∩ML\cap MLM也为正则语言。

我们可以通过乘积构造法构造接受L∩ML\cap MLM的自动机AAA
A=(QL×QM,Σ,δ,(qL,qM),FL×FM) A=(Q_L\times Q_M,\Sigma,\delta,(q_L,q_M),F_L\times F_M) A=(QL×QM,Σ,δ,(qL,qM),FL×FM)
其中,δ((p,q),a)=(δL(p,a),δM(q,a))\delta((p,q),a)=(\delta_L(p,a),\delta_M(q,a))δ((p,q),a)=(δL(p,a),δM(q,a))

AAA接受www当且仅当w∈Lw\in LwLw∈Mw \in MwM

在这里插入图片描述

  1. 如果LLLMMM是正则语言,则L−ML-MLM也是正则语言。

证明 注意到L−M=L∩M‾L-M=L\cap \overline{M}LM=LM。由正则语言在交和补上的封闭性知,L−ML-MLM也是正则语言。

  1. 如果LLL是正则语言,则LRL^RLRRRR的反转)也是正则语言。

证明LLL由正则表达式EEE定义,则对EEE的长度进行归纳。

基础 如果EEEϵ\epsilonϵ∅\empty或者某个符号aaa,则ER=EE_R=EER=E

归纳 根据EEE的形式,分为一下三种情况:

  1. E=E1+E2E = E_1 + E_2E=E1+E2,则ER=E1R+E2RE^R=E_1^R+E_2^RER=E1R+E2R
  2. E=E1E2E=E_1E_2E=E1E2,则ER=E2RE1RE^R=E_2^RE_1^RER=E2RE1R
  3. E=E1∗E=E^*_1E=E1,则ER=(E1R)∗E^R=(E_1^R)^*ER=(E1R)

同样地,也可以构造自动机来证明该封闭性。给定一个正则语言LLL的自动机L(A)L(A)L(A),通过下列方法构造LRL^RLR的自动机:

  1. AAA的状态转移图中所有箭弧反转。
  2. 新自动机惟一的接受状态是AAA的初始状态。
  3. 创建一个新的初始状态p0p_0p0,同时从该状态出发到所有AAA的接受状态都建立一个ϵ\epsilonϵ转移。
  1. 如果LLL是正则语言,则L∗L^*L也是正则语言。

证明 由于LLL是正则的,所以它有正则表达式L=L(R)L=L(R)L=L(R),所以L∗=L(R∗)L^*=L(R^*)L=L(R)也是正则的。

  1. 如果LLL是正则语言,MMM是正则语言,则LMLMLM是正则语言。

证明 由于LLLMMM都是正则的,所以它们都有正则表达式,L=L(R)L=L(R)L=L(R)M=L(S)M=L(S)M=L(S),所以LM=L(RS)LM = L(RS)LM=L(RS)也是正则的。

在这里插入图片描述

  1. 如果LLL是字母表Σ\SigmaΣ上的正则语言,hhh是字母表Σ\SigmaΣ上的一个同态,则h(L)h(L)h(L)也是正则的。

证明同态是串的函数,它对于每一个符号用一个特别的串来替换。

L=L(R)L=L(R)L=L(R),其中RRR是正则表达式。用结构归纳法来证明上述结论:取出RRR的一个子表达式EEE,并对它应用hhh得到h(E)h(E)h(E),那么L(h(E))=h(L(E))L(h(E))=h(L(E))L(h(E))=h(L(E))

基础 如果EEEϵ\epsilonϵ或者∅\emptyh(E)=Eh(E)=Eh(E)=E。因此L(h(E))=h(L(E))L(h(E))=h(L(E))L(h(E))=h(L(E))

如果E=aE=aE=aaaaΣ\SigmaΣ中的一个符号,此时L(E)=aL(E)={a}L(E)=ah(L(E))=h(a)h(L(E))={h(a)}h(L(E))=h(a),因此L(h(E))=h(L(E))L(h(E))=h(L(E))L(h(E))=h(L(E))

归纳

  • E=F+GE=F+GE=F+GL(h(E))=L(h(F)+h(G))=L(h(F))∪L(h(G))L(h(E))=L(h(F)+h(G))=L(h(F))\cup L(h(G))L(h(E))=L(h(F)+h(G))=L(h(F))L(h(G))
  • E=F∗E=F^*E=FL(h(E))=L(h(F∗))=L(h(F)∗)=L(h(F))∗L(h(E))=L(h(F^*))=L(h(F)^*)=L(h(F))^*L(h(E))=L(h(F))=L(h(F))=L(h(F))
  • E=FGE=FGE=FGL(h(E))=L(h(FG))=L(h(F)h(G))=L(h(F))L(h(G))L(h(E))=L(h(FG))=L(h(F)h(G))=L(h(F))L(h(G))L(h(E))=L(h(FG))=L(h(F)h(G))=L(h(F))L(h(G))

L(h(F)),L(h(G))L(h(F)),L(h(G))L(h(F)),L(h(G))都可以通过基础归纳证明是正则语言,故h(L)h(L)h(L)也是正则语言。

  1. 如果hhh是字母表TTT到字母表TTT的同态,且LLL是字母表TTT上的正则语言,那么h−1(L)h^{-1}(L)h1(L)也是正则语言。

证明LLL的一个DFA A\text{DFA A}DFA Ahhh出发,构造一个h−1(L)h^{-1}(L)h1(L)DFA B\text{DFA B}DFA B

DFA\text{DFA}DFA使用AAA的状态,但转移前把输入符号按照hhh转移一下。

Start
A
输入a
h
接受/拒绝

DFA A={Q,T,δ,q0,F}\text{DFA A}=\{Q,T,\delta,q_0,F\}DFA A={Q,T,δ,q0,F},则B=(Q,Σ,γ,q0,F)B=(Q,\Sigma,\gamma,q_0,F)B=(Q,Σ,γ,q0,F)

其中γ(q,a)=δ(q,h(a))\gamma(q,a)=\delta(q,h(a))γ(q,a)=δ(q,h(a))

四、正则语言的等价性

给定两个正则语言LLLMMM,可以通过乘积构造法来判断它们接受的语言是否相同。

L=L(R)L=L(R)L=L(R)M=L(S)M=L(S)M=L(S)RRRSSS分别为接受LLLMMM的自动机。

我们不妨假设它们的字母表相同(不同可以取并)。

R=(Q,Σ,δR,q,FR)R=(Q,\Sigma,\delta_R,q,F_R)R=(Q,Σ,δR,q,FR)S=(S,Σ,δR,s,FS)S=(S,\Sigma,\delta_R,s,F_S)S=(S,Σ,δR,s,FS)

按照下面的方法构造一个乘积DFA T\text{DFA T}DFA T

T=(R×S,Σ,δT,[r,s],FT)T=(R\times S,\Sigma,\delta_T,[r,s],F_T)T=(R×S,Σ,δT,[r,s],FT)

其中,δT([q,s],a)=[δR(q,a),δS(s,a)]\delta_T([q,s],a)=[\delta_R(q,a),\delta_S(s,a)]δT([q,s],a)=[δR(q,a),δS(s,a)]

FTF_TFT是由下面的状态对构成的集合:

[r,s][r,s][r,s]当且仅当rrrsss中只有一个是接受状态。

在这里插入图片描述

那么L=ML=ML=M当且仅当L(B)=∅L(B)=\emptyL(B)=。因为L=ML=ML=M当且仅当对于任意w∈Lw \in LwLw∈Mw \in MwM且对于任意w∉Lw \notin Lw/Lw∉Mw \notin Mw/M。(即不存在一个串www,使得它属于一方而不属于另一方)

通过测试DFA B\text{DFA B}DFA B的空性即可确定最终LLLMMM的等价性。

更多推荐