正则语言的性质

一、正则语言的性质

1.正则语言的泵引理

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

  1. y ≠ ϵ y \not= \epsilon y=ϵ
  2. ∣ x y ∣ ≤ n |xy|\leq n xyn
  3. 对于所有的 k ≥ 0 k\geq 0 k0,串 x y k z xy^kz xykz也属于 L L L

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

在这里插入图片描述

2.泵引理的应用

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

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

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

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

证明:

假设 L = { w w ∣ w ∈ { 0 , 1 } ∗ } L=\{ww\mid w \in \{0,1\}^*\} L={www{0,1}}是正则语言。
对于给定的 n n n,构造串 w = 0 n 1 0 n ∈ L w=0^n10^n \in L w=0n10nL
根据正则语言的泵引理,将 w w w分割为 w = x y z w=xyz w=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}}是正则语言。
对于给定的 n n n,构造串 w = 1 n 0 n ∈ L w=1^n0^n \in L w=1n0nL
根据正则语言的泵引理,将 w w w分割为 w = x y z w=xyz w=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 = n 2 , n ∈ N } \{w\mid |0|_w + |1|_w = n^2 ,n \in N\} {w∣0w+∣1w=n2,nN}

证明:

假设 L = { w ∣ ∣ 0 ∣ w + ∣ 1 ∣ w = n 2 , n ∈ N } L=\{w\mid |0|_w + |1|_w = n^2 ,n \in N\} L={w∣0w+∣1w=n2,nN}是正则语言。
对于给定的 n n n,构造串 w = 0 n 1 n 2 − n ∈ L w=0^n1^{n^2-n} \in L w=0n1n2nL
根据正则语言的泵引理,将 w w w分割为 w = x y z w=xyz w=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 { 0 x ∣ x is a prime number } \{0^x \mid \text{x is a prime number}\} {0xx is a prime number}

证明:

假设 L = { 0 x ∣ x is a prime number } L=\{0^x \mid \text{x is a prime number}\} L={0xx is a prime number}是正则语言。
对于给定的素数 n n n,构造串 w = 0 n ∈ L w=0^n \in L w=0nL
根据正则语言的泵引理,将 w w w分割为 w = x y z w=xyz w=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. 如果正则语言是正则表达式形式,采用下面的式子递归地对正则表达式进行判定:
    假设 R R R是正则语言,则:

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

三.正则语言的封闭性

正则语言的封闭性有:

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

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

  1. 如果 L L L M M M都是正则语言,则 L ∪ M L \cup M LM也是正则的。

证明 由于 L L L M M M都是正则的,所以它们都有正则表达式, 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. 如果 L L L是字母表 Σ \Sigma Σ上的正则语言,则 L ‾ = Σ ∗ − L \overline{L}=\Sigma^*-L L=ΣL也是正则语言。

证明 A = ( Q , Σ , δ , q 0 , 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),其中 B B B B = ( Q , Σ , δ , q 0 , Q − F ) B=(Q,\Sigma,\delta,q_0,Q-F) B=(Q,Σ,δ,q0,QF) w w w属于 L ( B ) L(B) L(B)当且仅当 w w w不属于 L ( A ) L(A) L(A)

  1. 如果 L L L M M M都是正则语言,则 L ∩ M L \cap M LM也是正则的。

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

我们可以通过乘积构造法构造接受 L ∩ M L\cap M LM的自动机 A A A
A = ( Q L × Q M , Σ , δ , ( q L , q M ) , F L × F M ) 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))

A A A接受 w w w当且仅当 w ∈ L w\in L wL w ∈ M w \in M wM

在这里插入图片描述

  1. 如果 L L L M M M是正则语言,则 L − M L-M LM也是正则语言。

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

  1. 如果 L L L是正则语言,则 L R L^R LR R R R的反转)也是正则语言。

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

基础 如果 E E E ϵ \epsilon ϵ ∅ \empty 或者某个符号 a a a,则 E R = E E_R=E ER=E

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

  1. E = E 1 + E 2 E = E_1 + E_2 E=E1+E2,则 E R = E 1 R + E 2 R E^R=E_1^R+E_2^R ER=E1R+E2R
  2. E = E 1 E 2 E=E_1E_2 E=E1E2,则 E R = E 2 R E 1 R E^R=E_2^RE_1^R ER=E2RE1R
  3. E = E 1 ∗ E=E^*_1 E=E1,则 E R = ( E 1 R ) ∗ E^R=(E_1^R)^* ER=(E1R)

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

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

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

  1. 如果 L L L是正则语言, M M M是正则语言,则 L M LM LM是正则语言。

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

在这里插入图片描述

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

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

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

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

如果 E = a E=a E=a a a a Σ \Sigma Σ中的一个符号,此时 L ( E ) = a L(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 + G E=F+G E=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 = F G E=FG E=FG L ( h ( E ) ) = L ( h ( F G ) ) = 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. 如果 h h h是字母表 T T T到字母表 T T T的同态,且 L L L是字母表 T T T上的正则语言,那么 h − 1 ( L ) h^{-1}(L) h1(L)也是正则语言。

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

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

Start
A
输入a
h
接受/拒绝

DFA A = { Q , T , δ , q 0 , F } \text{DFA A}=\{Q,T,\delta,q_0,F\} DFA A={Q,T,δ,q0,F},则 B = ( Q , Σ , γ , q 0 , 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))

四、正则语言的等价性

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

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

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

R = ( Q , Σ , δ R , q , F R ) R=(Q,\Sigma,\delta_R,q,F_R) R=(Q,Σ,δR,q,FR) S = ( S , Σ , δ R , s , F S ) 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 ] , F T ) 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)]

F T F_T FT是由下面的状态对构成的集合:

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

在这里插入图片描述

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

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

更多推荐