正则语言的性质
本文介绍了正则语言的性质,包括泵引理、判定性质、不同运算下的封闭性和正则语言之间的等价性。
正则语言的性质
一、正则语言的性质
1.正则语言的泵引理
设LLL是正则语言,则存在与LLL相关的常数nnn满足:对于任何LLL中的串www,如果∣w∣≥n|w|\geq n∣w∣≥n,则我们就能把www打断为三个串w=xyzw=xyzw=xyz使得:
- y≠ϵy \not= \epsilony=ϵ。
- ∣xy∣≤n|xy|\leq n∣xy∣≤n。
- 对于所有的k≥0k\geq 0k≥0,串xykzxy^kzxykz也属于LLL。
也就是说,我们总能在离www的开始处不远的地方,找到一个非空串yyy,然后可以把它作为“泵”,也就是说,重复yyy任意多次,或者去掉它(k=0k=0k=0),而所得到的结果串仍属于LLL。
2.泵引理的应用
泵引理主要用于证明某个语言是非正则的。主要步骤如下:
- 选择一个给定的需要证明的非正则语言LLL。
- 选择一个合适的nnn,注意这里nnn并不是某个常数,而是要考虑任何可能的nnn。
- 选择串www,它可以与nnn相关,且长度至少为nnn。
- 把www拆分成x,y,zx,y,zx,y,z,同时满足泵引理中规定的限制条件:$y \not= \epsilon $以及 $ |xy| \leq n$。
- 如果能够选择任意k≥0k \geq 0k≥0使得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\}^*\}{ww∣w∈{0,1}∗}
证明:
假设L={ww∣w∈{0,1}∗}L=\{ww\mid w \in \{0,1\}^*\}L={ww∣w∈{0,1}∗}是正则语言。
对于给定的nnn,构造串w=0n10n∈Lw=0^n10^n \in Lw=0n10n∈L。
根据正则语言的泵引理,将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∣∣0∣w≥∣1∣w,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∣∣0∣w≥∣1∣w,w∈{0,1}∗}是正则语言。
对于给定的nnn,构造串w=1n0n∈Lw=1^n0^n \in Lw=1n0n∈L。
根据正则语言的泵引理,将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∣∣0∣w+∣1∣w=n2,n∈N}
证明:
假设L={w∣∣0∣w+∣1∣w=n2,n∈N}L=\{w\mid |0|_w + |1|_w = n^2 ,n \in N\}L={w∣∣0∣w+∣1∣w=n2,n∈N}是正则语言。
对于给定的nnn,构造串w=0n1n2−n∈Lw=0^n1^{n^2-n} \in Lw=0n1n2−n∈L。
根据正则语言的泵引理,将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}\}{0x∣x is a prime number}
证明:
假设L={0x∣x is a prime number}L=\{0^x \mid \text{x is a prime number}\}L={0x∣x is a prime number}是正则语言。
对于给定的素数nnn,构造串w=0n∈Lw=0^n \in Lw=0n∈L。
根据正则语言的泵引理,将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∅),考虑正则语言的表述形式:
-
如果正则语言是DFA/NFA\text{DFA/NFA}DFA/NFA,则判定是否能从初始状态到达接受状态。(可以根据状态和对应的状态转移,使用深度优先遍历进行)
-
如果正则语言是正则表达式形式,采用下面的式子递归地对正则表达式进行判定:
假设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)为空。二者是相同的语言。
三.正则语言的封闭性
正则语言的封闭性有:
- 两个正则语言的并是正则的。
- 正则语言的补是正则的。
- 两个正则语言的交是正则的。
- 两个正则语言的差是正则的。
- 正则语言的反转是正则的。
- 正则语言的闭包(星)是正则的。
- 几个正则语言的连接是正则的。
- 正则语言的同态(用串来代替符号)是正则的。
- 正则语言的逆同态是正则的。
下面是上述定理的简要证明:
- 如果LLL和MMM都是正则语言,则L∪ML \cup ML∪M也是正则的。
证明 由于LLL和MMM都是正则的,所以它们都有正则表达式,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)L∪M=L(R+S)也是正则的。
- 如果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),其中BBB是B=(Q,Σ,δ,q0,Q−F)B=(Q,\Sigma,\delta,q_0,Q-F)B=(Q,Σ,δ,q0,Q−F)。www属于L(B)L(B)L(B)当且仅当www不属于L(A)L(A)L(A)。
- 如果LLL和MMM都是正则语言,则L∩ML \cap ML∩M也是正则的。
证明 由德摩根律,L∩M=L‾∪M‾‾L\cap M = \overline{\overline{L}\cup \overline{M}}L∩M=L∪M。由正则语言在并和补下的封闭性知,L∩ML\cap ML∩M也为正则语言。
我们可以通过乘积构造法构造接受L∩ML\cap ML∩M的自动机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 Lw∈L且w∈Mw \in Mw∈M。
- 如果LLL和MMM是正则语言,则L−ML-ML−M也是正则语言。
证明 注意到L−M=L∩M‾L-M=L\cap \overline{M}L−M=L∩M。由正则语言在交和补上的封闭性知,L−ML-ML−M也是正则语言。
- 如果LLL是正则语言,则LRL^RLR(RRR的反转)也是正则语言。
证明 设LLL由正则表达式EEE定义,则对EEE的长度进行归纳。
基础 如果EEE是ϵ\epsilonϵ、∅\empty∅或者某个符号aaa,则ER=EE_R=EER=E。
归纳 根据EEE的形式,分为一下三种情况:
- E=E1+E2E = E_1 + E_2E=E1+E2,则ER=E1R+E2RE^R=E_1^R+E_2^RER=E1R+E2R。
- E=E1E2E=E_1E_2E=E1E2,则ER=E2RE1RE^R=E_2^RE_1^RER=E2RE1R。
- E=E1∗E=E^*_1E=E1∗,则ER=(E1R)∗E^R=(E_1^R)^*ER=(E1R)∗。
同样地,也可以构造自动机来证明该封闭性。给定一个正则语言LLL的自动机L(A)L(A)L(A),通过下列方法构造LRL^RLR的自动机:
- 把AAA的状态转移图中所有箭弧反转。
- 新自动机惟一的接受状态是AAA的初始状态。
- 创建一个新的初始状态p0p_0p0,同时从该状态出发到所有AAA的接受状态都建立一个ϵ\epsilonϵ转移。
- 如果LLL是正则语言,则L∗L^*L∗也是正则语言。
证明 由于LLL是正则的,所以它有正则表达式L=L(R)L=L(R)L=L(R),所以L∗=L(R∗)L^*=L(R^*)L∗=L(R∗)也是正则的。
- 如果LLL是正则语言,MMM是正则语言,则LMLMLM是正则语言。
证明 由于LLL和MMM都是正则的,所以它们都有正则表达式,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)也是正则的。
- 如果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ϵ或者∅\empty∅,h(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=a,aaa为Σ\SigmaΣ中的一个符号,此时L(E)=aL(E)={a}L(E)=a,h(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+G:L(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=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))^*L(h(E))=L(h(F∗))=L(h(F)∗)=L(h(F))∗。
- E=FGE=FGE=FG: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(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)也是正则语言。
- 如果hhh是字母表TTT到字母表TTT的同态,且LLL是字母表TTT上的正则语言,那么h−1(L)h^{-1}(L)h−1(L)也是正则语言。
证明 从LLL的一个DFA A\text{DFA A}DFA A和hhh出发,构造一个h−1(L)h^{-1}(L)h−1(L)的DFA B\text{DFA B}DFA B。
该DFA\text{DFA}DFA使用AAA的状态,但转移前把输入符号按照hhh转移一下。
设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))。
四、正则语言的等价性
给定两个正则语言LLL和MMM,可以通过乘积构造法来判断它们接受的语言是否相同。
设L=L(R)L=L(R)L=L(R),M=L(S)M=L(S)M=L(S)。RRR和SSS分别为接受LLL和MMM的自动机。
我们不妨假设它们的字母表相同(不同可以取并)。
设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]当且仅当rrr和sss中只有一个是接受状态。
那么L=ML=ML=M当且仅当L(B)=∅L(B)=\emptyL(B)=∅。因为L=ML=ML=M当且仅当对于任意w∈Lw \in Lw∈L,w∈Mw \in Mw∈M且对于任意w∉Lw \notin Lw∈/L,w∉Mw \notin Mw∈/M。(即不存在一个串www,使得它属于一方而不属于另一方)
通过测试DFA B\text{DFA B}DFA B的空性即可确定最终LLL与MMM的等价性。
更多推荐
所有评论(0)