正则语言的性质
本文介绍了正则语言的性质,包括泵引理、判定性质、不同运算下的封闭性和正则语言之间的等价性。
正则语言的性质
一、正则语言的性质
1.正则语言的泵引理
设 L L L是正则语言,则存在与 L L L相关的常数 n n n满足:对于任何 L L L中的串 w w w,如果 ∣ w ∣ ≥ n |w|\geq n ∣w∣≥n,则我们就能把 w w w打断为三个串 w = x y z w=xyz w=xyz使得:
- y ≠ ϵ y \not= \epsilon y=ϵ。
- ∣ x y ∣ ≤ n |xy|\leq n ∣xy∣≤n。
- 对于所有的 k ≥ 0 k\geq 0 k≥0,串 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.泵引理的应用
泵引理主要用于证明某个语言是非正则的。主要步骤如下:
- 选择一个给定的需要证明的非正则语言 L L L。
- 选择一个合适的 n n n,注意这里 n n n并不是某个常数,而是要考虑任何可能的 n n n。
- 选择串 w w w,它可以与 n n n相关,且长度至少为 n n n。
- 把 w w w拆分成 x , y , z x,y,z x,y,z,同时满足泵引理中规定的限制条件:$y \not= \epsilon $以及 $ |xy| \leq n$。
- 如果能够选择任意 k ≥ 0 k \geq 0 k≥0使得 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\}^*\} {ww∣w∈{0,1}∗}
证明:
假设
L
=
{
w
w
∣
w
∈
{
0
,
1
}
∗
}
L=\{ww\mid w \in \{0,1\}^*\}
L={ww∣w∈{0,1}∗}是正则语言。
对于给定的
n
n
n,构造串
w
=
0
n
1
0
n
∈
L
w=0^n10^n \in L
w=0n10n∈L。
根据正则语言的泵引理,将
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∣∣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}∗}是正则语言。
对于给定的
n
n
n,构造串
w
=
1
n
0
n
∈
L
w=1^n0^n \in L
w=1n0n∈L。
根据正则语言的泵引理,将
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∣∣0∣w+∣1∣w=n2,n∈N}
证明:
假设
L
=
{
w
∣
∣
0
∣
w
+
∣
1
∣
w
=
n
2
,
n
∈
N
}
L=\{w\mid |0|_w + |1|_w = n^2 ,n \in N\}
L={w∣∣0∣w+∣1∣w=n2,n∈N}是正则语言。
对于给定的
n
n
n,构造串
w
=
0
n
1
n
2
−
n
∈
L
w=0^n1^{n^2-n} \in L
w=0n1n2−n∈L。
根据正则语言的泵引理,将
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}\} {0x∣x is a prime number}
证明:
假设
L
=
{
0
x
∣
x is a prime number
}
L=\{0^x \mid \text{x is a prime number}\}
L={0x∣x is a prime number}是正则语言。
对于给定的素数
n
n
n,构造串
w
=
0
n
∈
L
w=0^n \in L
w=0n∈L。
根据正则语言的泵引理,将
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 ∅),考虑正则语言的表述形式:
-
如果正则语言是 DFA/NFA \text{DFA/NFA} DFA/NFA,则判定是否能从初始状态到达接受状态。(可以根据状态和对应的状态转移,使用深度优先遍历进行)
-
如果正则语言是正则表达式形式,采用下面的式子递归地对正则表达式进行判定:
假设 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)为空。二者是相同的语言。
三.正则语言的封闭性
正则语言的封闭性有:
- 两个正则语言的并是正则的。
- 正则语言的补是正则的。
- 两个正则语言的交是正则的。
- 两个正则语言的差是正则的。
- 正则语言的反转是正则的。
- 正则语言的闭包(星)是正则的。
- 几个正则语言的连接是正则的。
- 正则语言的同态(用串来代替符号)是正则的。
- 正则语言的逆同态是正则的。
下面是上述定理的简要证明:
- 如果 L L L和 M M M都是正则语言,则 L ∪ M L \cup M L∪M也是正则的。
证明 由于 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) L∪M=L(R+S)也是正则的。
- 如果 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,Q−F)。 w w w属于 L ( B ) L(B) L(B)当且仅当 w w w不属于 L ( A ) L(A) L(A)。
- 如果 L L L和 M M M都是正则语言,则 L ∩ M L \cap M L∩M也是正则的。
证明 由德摩根律, L ∩ M = L ‾ ∪ M ‾ ‾ L\cap M = \overline{\overline{L}\cup \overline{M}} L∩M=L∪M。由正则语言在并和补下的封闭性知, L ∩ M L\cap M L∩M也为正则语言。
我们可以通过乘积构造法构造接受
L
∩
M
L\cap M
L∩M的自动机
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 w∈L且 w ∈ M w \in M w∈M。
- 如果 L L L和 M M M是正则语言,则 L − M L-M L−M也是正则语言。
证明 注意到 L − M = L ∩ M ‾ L-M=L\cap \overline{M} L−M=L∩M。由正则语言在交和补上的封闭性知, L − M L-M L−M也是正则语言。
- 如果 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的形式,分为一下三种情况:
- 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。
- 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。
- 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的自动机:
- 把 A A A的状态转移图中所有箭弧反转。
- 新自动机惟一的接受状态是 A A A的初始状态。
- 创建一个新的初始状态 p 0 p_0 p0,同时从该状态出发到所有 A A A的接受状态都建立一个 ϵ \epsilon ϵ转移。
- 如果 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∗)也是正则的。
- 如果 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)也是正则的。
- 如果 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)也是正则语言。
- 如果 h h h是字母表 T T T到字母表 T T T的同态,且 L L L是字母表 T T T上的正则语言,那么 h − 1 ( L ) h^{-1}(L) h−1(L)也是正则语言。
证明 从 L L L的一个 DFA A \text{DFA A} DFA A和 h h h出发,构造一个 h − 1 ( L ) h^{-1}(L) h−1(L)的 DFA B \text{DFA B} DFA B。
该 DFA \text{DFA} DFA使用 A A A的状态,但转移前把输入符号按照 h h 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 w∈L, w ∈ M w \in M w∈M且对于任意 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的等价性。
更多推荐
所有评论(0)