正则语言


2020-11-15 09:31:05 数学形式语言与自动机计算理论正则表达式

!!注意正则语言和正则表达式之间的区别与联系!!

# 正则语言的定义

若语言LL是某个DFADD的语言,则称LL正则语言

L是正则语言(D=(Q,Σ,δ,q0,F))(L=L(D))L\text{是正则语言}\Leftrightarrow(\exist D=(Q,\Sigma,\delta,q_0,F))(L=\bm L(D))

# 自动机理论中的典型问题

任何问题都能转化为语言的成员性问题:判断给定的字符串ww是否属于某个具体的语言LL

wL?w\in L?

# 正则表达式与DFA和正则语言间的等价性

正则表达式与DFA等价正则表达式章节中已经证明正则表达式与正则语言等价正则语言定义\begin{aligned} &\text{正则表达式与DFA等价}&\text{正则表达式章节中已经证明}\\ \Rightarrow&\text{正则表达式与正则语言等价}&\text{正则语言定义}\\ \end{aligned}

# 正则语言的封闭性

  • \emptyset{ε}\{\varepsilon\}都是正则语言
  • Σ\Sigma^*Σ+\Sigma^+是字母表Σ\Sigma上的正则语言
  • (正则运算)若LLMM都是正则语言,则:
    • (交运算)M\overline M是正则语言
    • (并运算)LML\cup M是正则语言
    • (差运算)LML-M是正则语言
    • (补运算)L=ΣL\overline L=\Sigma^*-L是正则语言
    • (连接运算)LMLM是正则语言
    • (闭包运算)LL^*是正则语言
  • (反转运算)若LL是正则语言,则LR={wRwL}L^R=\{w^R|w\in L\}是正则语言
    • 其中wR=(a1a2an)R=ana2a1w^R=(a_1a_2\dots a_n)^R=a_n\dots a_2a_1
  • (同态)若LL是正则语言,则h(L)h(L)是正则语言
    • 其中h(L)h(L)称为语言LL的同态,定义如下:
      • 当输入为字母aΣa\in\Sigma时,h:ΣΓh: \Sigma\rightarrow\Gamma^*是一个从字母表Σ\Sigma到另一个字母表上闭包Γ\Gamma^*的映射
      • 当输入为字符串wΣw\in\Sigma^*时:h(ε)=ε,h(wa)=h(w)h(a)h(\varepsilon)=\varepsilon,h(wa)=h(w)h(a)
      • 当输入为语言LΣL\subseteq\Sigma^*时:h(L)={h(w)wL}h(L)=\{h(w)|w\in L\}
  • (逆同态)若LL是正则语言,h1(L)={wΣh(w)L}h^{-1}(L)=\{w\in\Sigma^*|h(w)\in L\}是正则语言

证明略。

# 正则语言的必要条件:泵引理

对于任意正则语言,总能找到一个正整数NN(泵长度),该语言中所有长度大于NN的字符串ww可以分为w=xyzw=xyz三部分,其中中间的yy满足:

  • yy非空
  • yy在前NN个字符内
  • yy可以不断重复而产生新串xykzxy^kz,且产生的所有串都仍然属于该语言

(理解“泵”:通过中间的字符串yy不断产生新串,就像泵一样)

L是正则语言(NN+)(wL)(wN(yε,xy<N)(k0)(xykzL))L\text{是正则语言}\Rightarrow(\exist N\in\mathbb N_+)(\forall w\in L)(|w|\geq N\rightarrow(\exist y\not =\varepsilon,|xy|<N)(\forall k\geq 0)(xy^kz\in L))

# 证明

NN为DFAAA的状态数,L=L(A)L=\bm L(A),分两种情况讨论:

# 1' (wL)(w<N)(\forall w\in L)(|w|<N)

显然(wN(yε,xy<N)(k0)(xykzL))(|w|\geq N\rightarrow(\exist y\not =\varepsilon,|xy|<N)(\forall k\geq 0)(xy^kz\in L))成立,因为没有wN|w|\geq N的情况

# 2' (wL)(wN)(\exist w\in L)(|w|\geq N)

  1. 任取一个wN|w|\geq N
  2. m=w,w=a1a2amm=|w|,w=a_1a_2\dots a_m,令qi=δ^(q0,a1a2ai)q_i=\hat\delta(q_0,a_1a_2\dots a_i)表示DFA识别此字符串时读入字符aia_i所到达的状态。
  3. 由于mNm\geq N,加上初始状态一共N+1N+1个状态,因此必然存在两个状态相等:(0i<jN)(qi=qj)(\exist 0\leq i<j\leq N)(q_i=q_j)
  4. 令:
    • x=a1a2ai1(i1)x=a_1a_2\dots a_{i-1}(i\geq 1)x=ε(i=0)x=\varepsilon(i=0)
    • y=aiai+1ajy=a_{i}a_{i+1}\dots a_{j}
    • z=aj+1aj+2am(jm1)z=a_{j+1}a_{j+2}\dots a_{m}(j\leq m-1)x=ε(j=m)x=\varepsilon(j=m)
  5. 由于qi=qjq_i=q_j,因此让DFA在qiqi+1qjq_iq_{i+1}\dots q_j之间不断循环可以对应出无穷多个字符串,即xykzxy^kz

泵引理即证。

# 案例

由正则表达式和正则语言的形式和定义显而易见,正则表达式可以作为正则语言的一种简化的表示方法,在给正则表达式加上一些非正则的操作(例如下面的n=0\sum_{n=0}^\infty)后也可以用来表示一些非正则语言。一般以粗体表示正则表达式,大写字母表示语言。

# 证明语言L=n=00n1n={0n1nn0}L=\sum_{n=0}^\infty\bm 0^n\bm 1^n=\{0^n1^n|n\geq 0\}不是正则语言

反证法:

  1. 假设LL是正则的,那么它满足泵引理
  2. w=0N1NLw=0^N1^N\in L,它显然满足w=2NN|w|=2N\geq N
  3. 那么对于yε,xy<Ny\not =\varepsilon,|xy|<N
    • yy只能取前NN
    • w=0N1Nw=0^N1^NNN项全是1
    • 因此y=0m,0<m<Ny=0^m,0<m<N
  4. 那么xy2z=0N+m1NLxy^2z=0^{N+m}1^N\notin L矛盾
  5. 因此LL不满足泵引理,不是正则语言

# 证明语言L={ww由数量相等的01构成}L=\{w|w\text{由数量相等的01构成}\}不是正则语言

同理,用反证法:

  1. 假设LL是正则的,那么它满足泵引理
  2. w=0N1NLw=0^N1^N\in L,它显然满足w=2NN|w|=2N\geq N
  3. 同理可以引出xy2z=0N+m1NLxy^2z=0^{N+m}1^N\notin L矛盾
  4. 因此LL不满足泵引理,不是正则语言

# 证明语言L={0i1ji>j}L=\{0^i1^j|i>j\}不是正则语言

同理,用反证法:

  1. 假设LL是正则的,那么它满足泵引理
  2. w=0N+11NLw=0^{N+1}1^N\in L,它显然满足w=2N+1N|w|=2N+1\geq N
  3. 同理可以引出y=0m,0<m<Ny=0^m,0<m<N
  4. 那么xy0z=0N+1m1NLxy^0z=0^{N+1-m}1^N\notin L矛盾
  5. 因此LL不满足泵引理,不是正则语言

# n=00n1n\sum_{n=0}^\infty\bm 0^n\bm 1^nn=01000n1n\sum_{n=0}^{100}\bm 0^n\bm 1^n:由非正则语言引发的思考

由上面的第一个案例可以看出,尽管都完全由正则运算构成,n=00n1n\sum_{n=0}^\infty\bm 0^n\bm 1^n不是正则语言,而对于语言n=01000n1n\sum_{n=0}^{100}\bm 0^n\bm 1^nn=01000n1n\sum_{n=0}^{100}\bm 0^n\bm 1^n本身就是它的正则表达式,它是正则语言。完全由正则的求和运算运算组成的运算扩展到无穷成为n=0\sum_{n=0}^\infty就不是一个正则运算了。

由此我们可以直觉上感觉到DFA的和正则语言的能力限制:“有穷自动机”的“有穷”决定了有穷自动机只能保存有限个状态,而n=00n1n\sum_{n=0}^\infty\bm 0^n\bm 1^n这类语言要求自动机记住无穷多个“状态”(记住00的数量并将之与11的数量进行比较,数量最多可以是无穷多个),因此有穷自动机不能识别。

另外,对于字符串数量有限的语言,必定(NN+)(wL)(w<N)(\exist N\in\mathbb N_+)(\forall w\in L)(|w|<N),即泵引理必然成立,而其自身也总可以表示为有限个正则表达式的和,因此字符串数量有限的语言必然是正则语言,更加印证了我们对有穷自动机中“有穷”的直觉把握。

那么与有穷自动机相对的,是否存在“无穷自动机”?请见下推自动机

Loading comments...