《形式语言与自动机理论(第4版)》笔记(三)

文章目录

前导


《形式语言与自动机理论(第4版)》笔记(一)


《形式语言与自动机理论(第4版)》笔记(二)


第四章:正则表达式


4.1|启示


4.2|正则表达式的形式定义

正则表达式性质
  • L ( ( r + ε ) ∗ ) = L ( r ∗ ) L((r + \varepsilon)^{*}) = L(r^{*}) L((r+ε))=L(r)
  • L ( ( r ∗ s ∗ ) ∗ ) = L ( ( r + s ) ∗ ) L((r^{*} s^{*})^{*}) = L((r + s)^{*}) L((rs))=L((r+s))

4.3|正则表达式与 F A FA FA等价

正则表达式表示的语言是正则语言
  • 施归纳于正则表达式中所含运算符的个数 n n n,证明对于字母表 Σ \Sigma Σ上的任意正则表达式 x x x,存在 F A M FA \ M FA M,使得 L ( M ) = L ( x ) L(M) = L(x) L(M)=L(x),并且 M M M恰有一个终止状态,而且 M M M在终止状态下不做任何移动
n = 0 n = 0 n=0
r = ε r = \varepsilon r=ε

4

r = ∅ r = \emptyset r=

5

∀ a ∈ Σ \forall a \in \Sigma aΣ r = a r = a r=a

6

n = k + 1 n = k + 1 n=k+1
r = r 1 + r 2 r = r_{1} + r_{2} r=r1+r2
  • 此时 r 1 r_{1} r1 r 2 r_{2} r2种运算符的个数不会大于 k k k,由归纳假设,存在满足定理要求的 ε − N F A \varepsilon-NFA εNFA M 1 = ( Q 1 , Σ , δ 1 , q 01 , { f 1 } ) M_{1} = (Q_{1} , \Sigma , \delta_{1} , q_{01} , \set{f_{1}}) M1=(Q1,Σ,δ1,q01,{f1}) M 2 = ( Q 2 , Σ , δ 2 , q 02 , { f 2 } ) M_{2} = (Q_{2} , \Sigma , \delta_{2} , q_{02} , \set{f_{2}}) M2=(Q2,Σ,δ2,q02,{f2}),使得 L ( M 1 ) = L ( r 1 ) L(M_{1}) = L(r_{1}) L(M1)=L(r1) L ( M 2 ) = L ( r 2 ) L(M_{2}) = L(r_{2}) L(M2)=L(r2)
  • 不妨设 Q 1 ∪ Q 2 = ∅ Q_{1} \cup Q_{2} = \emptyset Q1Q2=,取 q 0 q_{0} q0 f ∉ Q 1 ∪ Q 2 f \notin Q_{1} \cup Q_{2} f/Q1Q2,令 M = ( Q 1 ∪ Q 2 ∪ { ( } q 0 , f ) , Σ , δ , q 0 , { f } ) M = (Q_{1} \cup Q_{2} \cup \set(q_{0} , f) , \Sigma , \delta , q_{0} , \set{f}) M=(Q1Q2{(}q0,f),Σ,δ,q0,{f}),其中 δ \delta δ的定义为
    • δ ( q 0 , ε ) = { q 01 , q 02 } \delta(q_{0} , \varepsilon) = \set{q_{01} , q_{02}} δ(q0,ε)={q01,q02}
    • ∀ q ∈ Q 1 − { f 1 } \forall q \in Q_{1} - \set{f_{1}} qQ1{f1} a ∈ Σ ∪ { ε } a \in \Sigma \cup \set{\varepsilon} aΣ{ε} δ ( q , a ) = δ 1 ( q , a ) \delta(q , a) = \delta_{1}(q , a) δ(q,a)=δ1(q,a),对 ∀ q ∈ Q 2 − { f 1 } \forall q \in Q_{2} - \set{f_{1}} qQ2{f1} a ∈ Σ ∪ { ε } a \in \Sigma \cup \set{\varepsilon} aΣ{ε} δ ( q , a ) = δ 2 ( q , a ) \delta(q , a) = \delta_{2}(q , a) δ(q,a)=δ2(q,a)
    • δ ( f 1 , ε ) = { f } \delta(f_{1} , \varepsilon) = \set{f} δ(f1,ε)={f}
    • δ ( f 2 , ε ) = { f } \delta(f_{2} , \varepsilon) = \set{f} δ(f2,ε)={f}

7

  • 往证 L ( r 1 + r 2 ) = L ( M ) L(r_{1} + r_{2}) = L(M) L(r1+r2)=L(M)
    • 由归纳假设, L ( r 1 ) = L ( M 1 ) L(r_{1}) = L(M_{1}) L(r1)=L(M1) L ( r 2 ) = L ( M 2 ) L(r_{2}) = L(M_{2}) L(r2)=L(M2),根据正则表达式的定义 L ( r 1 + r 2 ) = L ( r 1 ) ∪ L ( r 2 ) L(r_{1} + r_{2}) = L(r_{1}) \cup L(r_{2}) L(r1+r2)=L(r1)L(r2) L ( r 1 + r 2 ) = L ( M 1 ) ∪ L ( M 2 ) L(r_{1} + r_{2}) = L(M_{1}) \cup L(M_{2}) L(r1+r2)=L(M1)L(M2),因此,只需要证明 L ( M ) = L ( M 1 ) ∪ L ( M 2 ) L(M) = L(M_{1}) \cup L(M_{2}) L(M)=L(M1)L(M2)
    • 先证 L ( M 1 ) ∪ L ( M 2 ) ⊆ L ( M ) L(M_{1}) \cup L(M_{2}) \subseteq L(M) L(M1)L(M2)L(M)
      • x ∈ L ( M 1 ) ∪ L ( M 2 ) x \in L(M_{1}) \cup L(M_{2}) xL(M1)L(M2),从而有 x ∈ L ( M 1 ) x \in L(M_{1}) xL(M1),或者 x ∈ L ( M 2 ) x \in L(M_{2}) xL(M2)
      • x ∈ L ( M 1 ) x \in L(M_{1}) xL(M1)时,有 δ 1 ( q 01 , x ) = { f 1 } \delta_{1}(q_{01} , x) = \set{f_{1}} δ1(q01,x)={f1}
      • M M M的定义可得 δ ( q 0 , x ) = δ ( q 0 , ε x ε ) = δ ( δ ( q 0 , ε ) , x ε ) = δ ( { q 01 , q 02 } , x ε ) = δ ( q 01 , x ε ) ∪ δ ( q 02 , x ε ) = δ ( δ ( q 01 , x ) , ε ) ∪ δ ( δ ( q 02 , x ) , ε ) = δ ( δ 1 ( q 01 , x ) , ε ) ∪ δ ( δ 2 ( q 02 , x ) , ε ) = { f } ∪ δ ( δ 2 ( q 02 , x ) , ε ) \begin{aligned} \delta(q_{0} , x) &= \delta(q_{0} , \varepsilon x \varepsilon) \\ &= \delta(\delta(q_{0} , \varepsilon) , x \varepsilon) \\ &= \delta(\set{q_{01} , q_{02}} , x \varepsilon) \\ &= \delta(q_{01} , x \varepsilon) \cup \delta(q_{02} , x \varepsilon) \\ &= \delta(\delta(q_{01} , x) , \varepsilon) \cup \delta(\delta(q_{02} , x) , \varepsilon) \\ &= \delta(\delta_{1}(q_{01} , x) , \varepsilon) \cup \delta(\delta_{2}(q_{02} , x) , \varepsilon) \\ &= \set{f} \cup \delta(\delta_{2}(q_{02} , x) , \varepsilon) \end{aligned} δ(q0,x)=δ(q0,εxε)=δ(δ(q0,ε),xε)=δ({q01,q02},xε)=δ(q01,xε)δ(q02,xε)=δ(δ(q01,x),ε)δ(δ(q02,x),ε)=δ(δ1(q01,x),ε)δ(δ2(q02,x),ε)={f}δ(δ2(q02,x),ε)
      • x ∈ L ( M ) x \in L(M) xL(M)
      • 同理可证,当 x ∈ L ( M 2 ) x \in L(M_{2}) xL(M2)时, x ∈ L ( M ) x \in L(M) xL(M)
    • 再证 L ( M ) ⊆ L ( M 1 ) ∪ L ( M 2 ) L(M) \subseteq L(M_{1}) \cup L(M_{2}) L(M)L(M1)L(M2)
      • x ∈ L ( M ) x \in L(M) xL(M) f ∈ δ ( q 0 , x ) f \in \delta(q_{0} , x) fδ(q0,x)
      • 按照 M M M的定义, δ ( q 0 , x ) = δ ( q 0 , ε x ε ) = δ ( δ ( q 0 , ε ) , x ε ) = δ ( { q 01 , q 02 } , x ε ) = δ ( q 01 , x ε ) ∪ δ ( q 02 , x ε ) = δ ( δ ( q 01 , x ) , ε ) ∪ δ ( δ ( q 02 , x ) , ε ) = δ ( δ 1 ( q 01 , x ) , ε ) ∪ δ ( δ 2 ( q 02 , x ) , ε ) \begin{aligned} \delta(q_{0} , x) &= \delta(q_{0} , \varepsilon x \varepsilon) \\ &= \delta(\delta(q_{0} , \varepsilon) , x \varepsilon) \\ &= \delta(\set{q_{01} , q_{02}} , x \varepsilon) \\ &= \delta(q_{01} , x \varepsilon) \cup \delta(q_{02} , x \varepsilon) \\ &= \delta(\delta(q_{01} , x) , \varepsilon) \cup \delta(\delta(q_{02} , x) , \varepsilon) \\ &= \delta(\delta_{1}(q_{01} , x) , \varepsilon) \cup \delta(\delta_{2}(q_{02} , x) , \varepsilon) \end{aligned} δ(q0,x)=δ(q0,εxε)=δ(δ(q0,ε),xε)=δ({q01,q02},xε)=δ(q01,xε)δ(q02,xε)=δ(δ(q01,x),ε)δ(δ(q02,x),ε)=δ(δ1(q01,x),ε)δ(δ2(q02,x),ε)
      • f ∈ δ ( q 0 , x ) f \in \delta(q_{0} , x) fδ(q0,x),并且此时 M M M的最后一次移动必是根据 δ ( f 1 , ε ) = { f } \delta(f_{1} , \varepsilon) = \set{f} δ(f1,ε)={f} δ ( f 2 , ε ) = { f } \delta(f_{2} , \varepsilon) = \set{f} δ(f2,ε)={f}之一进行的移动
        • 如果是根据定义式 δ ( f 1 , ε ) = { f } \delta(f_{1} , \varepsilon) = \set{f} δ(f1,ε)={f}进行的最后一次移动,此时必有 δ 1 ( q 01 , x ) = { f 1 } \delta_{1}(q_{01} , x) = \set{f_{1}} δ1(q01,x)={f1} x ∈ L ( M 1 ) x \in L(M_{1}) xL(M1)
        • 如果是根据定义式 δ ( f 2 , ε ) = { f } \delta(f_{2} , \varepsilon) = \set{f} δ(f2,ε)={f}进行的最后一次移动,此时必有 δ 2 ( q 02 , x ) = { f 2 } \delta_{2}(q_{02} , x) = \set{f_{2}} δ2(q02,x)={f2} x ∈ L ( M 2 ) x \in L(M_{2}) xL(M2)
      • 无论是哪一种情况,都有 x ∈ L ( M 1 ) ∪ L ( M 2 ) x \in L(M_{1}) \cup L(M_{2}) xL(M1)L(M2)
r = r 1 r 2 r = r_{1} r_{2} r=r1r2
  • 此时 r 1 r_{1} r1 r 2 r_{2} r2中运算符的个数不会大于 k k k,由归纳假设,存在满足定理要求的 ε − N F A \varepsilon-NFA εNFA M 1 = ( Q 1 , Σ , δ 1 , q 01 , { f 1 } ) M_{1} = (Q_{1} , \Sigma , \delta_{1} , q_{01} , \set{f_{1}}) M1=(Q1,Σ,δ1,q01,{f1}) M 2 = ( Q 2 , Σ , δ 2 , q 02 , { f 2 } ) M_{2} = (Q_{2} , \Sigma , \delta_{2} , q_{02} , \set{f_{2}}) M2=(Q2,Σ,δ2,q02,{f2}),使得 L ( M 1 ) = L ( r 1 ) L(M_{1}) = L(r_{1}) L(M1)=L(r1) L ( M 2 ) = L ( r 2 ) L(M_{2}) = L(r_{2}) L(M2)=L(r2),而且 Q 1 ∩ Q 2 = ∅ Q_{1} \cap Q_{2} = \emptyset Q1Q2=
  • M = ( Q 1 ∪ Q 2 , Σ , δ , q 01 , { f 2 } ) M = (Q_{1} \cup Q_{2} , \Sigma , \delta , q_{01} , \set{f_{2}}) M=(Q1Q2,Σ,δ,q01,{f2}),其中 δ \delta δ的定义为
    • ∀ q ∈ Q 1 − { f 1 } \forall q \in Q_{1} - \set{f_{1}} qQ1{f1} a ∈ Σ ∪ { ε } a \in \Sigma \cup \set{\varepsilon} aΣ{ε} δ ( q , a ) = δ 1 ( q , a ) \delta(q , a) = \delta_{1}(q , a) δ(q,a)=δ1(q,a)
    • ∀ q ∈ Q 2 \forall q \in Q_{2} qQ2 a ∈ Σ ∪ { ε } a \in \Sigma \cup \set{\varepsilon} aΣ{ε} δ ( q , a ) = δ 2 ( q , a ) \delta(q , a) = \delta_{2}(q , a) δ(q,a)=δ2(q,a)
    • δ ( f 1 , ε ) = { q 02 } \delta(f_{1} , \varepsilon) = \set{q_{02}} δ(f1,ε)={q02}

8

  • 往证 L ( r 1 r 2 ) = L ( M ) L(r_{1} r_{2}) = L(M) L(r1r2)=L(M)
    • 由归纳假设, L ( r 1 ) = L ( M 1 ) L(r_{1}) = L(M_{1}) L(r1)=L(M1) L ( r 2 ) = L ( M 2 ) L(r_{2}) = L(M_{2}) L(r2)=L(M2),根据正则表达式的定义 L ( r 1 r 2 ) = L ( r 1 ) L ( r 2 ) L(r_{1} r_{2}) = L(r_{1}) L(r_{2}) L(r1r2)=L(r1)L(r2) L ( r 1 r 2 ) = L ( M 1 ) L ( M 2 ) L(r_{1} r_{2}) = L(M_{1}) L(M_{2}) L(r1r2)=L(M1)L(M2),因此,只需要证明 L ( M ) = L ( M 1 ) L ( M 2 ) L(M) = L(M_{1}) L(M_{2}) L(M)=L(M1)L(M2)
    • 先证 L ( M 1 ) L ( M 2 ) ⊆ L ( M ) L(M_{1}) L(M_{2}) \subseteq L(M) L(M1)L(M2)L(M)
      • x ∈ L ( M 1 ) L ( M 2 ) x \in L(M_{1}) L(M_{2}) xL(M1)L(M2),从而有 x 1 ∈ L ( M 1 ) x_{1} \in L(M_{1}) x1L(M1)并且 x 2 ∈ L ( M 2 ) x_{2} \in L(M_{2}) x2L(M2),使得 x = x 1 x 2 x = x_{1} x_{2} x=x1x2
      • δ ( q 01 , x 1 ) = δ 1 ( q 01 , x 1 ) = { f 1 } \delta(q_{01} , x_{1}) = \delta_{1}(q_{01} , x_{1}) = \set{f_{1}} δ(q01,x1)=δ1(q01,x1)={f1} δ ( q 02 , x 2 ) = δ 2 ( q 02 , x 2 ) = { f 2 } \delta(q_{02} , x_{2}) = \delta_{2}(q_{02} , x_{2}) = \set{f_{2}} δ(q02,x2)=δ2(q02,x2)={f2}
      • δ ( q 01 , x ) = δ ( q 01 , x 1 x 2 ) = δ ( δ ( q 01 , x 1 ) , x 2 ) = δ ( δ 1 ( q 01 , x 1 ) , x 2 ) = δ ( f 1 , x 2 ) = δ ( f 1 , ε x 2 ) = δ ( δ ( f 1 , ε ) , x 2 ) = δ ( q 02 , x 2 ) = δ 2 ( q 02 , x 2 ) = { f 2 } \begin{aligned} \delta(q_{01} , x) &= \delta(q_{01} , x_{1} x_{2}) \\ &= \delta(\delta(q_{01} , x_{1}) , x_{2}) \\ &= \delta(\delta_{1}(q_{01} , x_{1}) , x_{2}) \\ &= \delta(f_{1} , x_{2}) \\ &= \delta(f_{1} , \varepsilon x_{2}) \\ &= \delta(\delta(f_{1} , \varepsilon) , x_{2}) \\ &= \delta(q_{02} , x_{2}) \\ &= \delta_{2}(q_{02} , x_{2}) \\ &= \set{f_{2}} \end{aligned} δ(q01,x)=δ(q01,x1x2)=δ(δ(q01,x1),x2)=δ(δ1(q01,x1),x2)=δ(f1,x2)=δ(f1,εx2)=δ(δ(f1,ε),x2)=δ(q02,x2)=δ2(q02,x2)={f2}
      • x ∈ L ( M ) x \in L(M) xL(M)
    • 再证 L ( M ) ⊆ L ( M 1 ) L ( M 2 ) L(M) \subseteq L(M_{1}) L(M_{2}) L(M)L(M1)L(M2)
      • x ∈ L ( M ) x \in L(M) xL(M) δ ( q 01 , x ) = { f 2 } \delta(q_{01} , x) = \set{f_{2}} δ(q01,x)={f2}
      • 必存在 x x x的前缀 x 1 x_{1} x1和后缀 x 2 x_{2} x2,使得 x = x 1 x 2 x = x_{1} x_{2} x=x1x2,并且 x 1 x_{1} x1 M M M从状态 q 01 q_{01} q01引导到状态 f 1 f_{1} f1 x 2 x_{2} x2 M M M从状态 q 02 q_{02} q02引导到状态 f 2 f_{2} f2,即 δ ( q 01 , x ) = δ ( q 01 , x 1 x 2 ) = δ ( f 1 , x 2 ) = δ ( f 1 , ε x 2 ) = δ ( q 02 , x 2 ) = { f 2 } \begin{aligned} \delta(q_{01} , x) &= \delta(q_{01} , x_{1} x_{2}) \\ &= \delta(f_{1} , x_{2}) \\ &= \delta(f_{1} , \varepsilon x_{2}) \\ &= \delta(q_{02} , x_{2}) \\ &= \set{f_{2}} \end{aligned} δ(q01,x)=δ(q01,x1x2)=δ(f1,x2)=δ(f1,εx2)=δ(q02,x2)={f2}
      • 其中, δ ( q 01 , x 1 ) = { f 1 } \delta(q_{01} , x_{1}) = \set{f_{1}} δ(q01,x1)={f1},说明 δ 1 ( q 01 , x 1 ) = { f 1 } \delta_{1}(q_{01} , x_{1}) = \set{f_{1}} δ1(q01,x1)={f1} δ ( q 02 , x 2 ) = { f 2 } \delta(q_{02} , x_{2}) = \set{f_{2}} δ(q02,x2)={f2},说明 δ 2 ( q 02 , x 2 ) = { f 2 } \delta_{2}(q_{02} , x_{2}) = \set{f_{2}} δ2(q02,x2)={f2},这表明 x 1 ∈ L ( M 1 ) x_{1} \in L(M_{1}) x1L(M1) x 2 ∈ L ( M 2 ) x_{2} \in L(M_{2}) x2L(M2)
      • 从而 x = x 1 x 2 ∈ L ( M 1 ) L ( M 2 ) x = x_{1} x_{2} \in L(M_{1}) L(M_{2}) x=x1x2L(M1)L(M2)
r = r 1 ∗ r = r_{1}^{*} r=r1
  • 此时 r 1 r_{1} r1中运算符的个数不会大于 k k k,由归纳假设,存在满足定理要求的 ε − N F A \varepsilon-NFA εNFA M 1 = ( Q 1 , Σ , δ 1 , q 01 , { f 1 } ) M_{1} = (Q_{1} , \Sigma , \delta_{1} , q_{01} , \set{f_{1}}) M1=(Q1,Σ,δ1,q01,{f1}),使得 L ( M 1 ) = L ( r 1 ) L(M_{1}) = L(r_{1}) L(M1)=L(r1)
  • M = ( Q 1 ∪ { q 0 , f } , Σ , δ , q 0 , { f } ) M = (Q_{1} \cup \set{q_{0} , f} , \Sigma , \delta , q_{0} , \set{f}) M=(Q1{q0,f},Σ,δ,q0,{f}),其中 q 0 q_{0} q0 f ∉ Q 1 f \notin Q_{1} f/Q1 δ \delta δ的定义为
    • ∀ q ∈ Q 1 − { f 1 } \forall q \in Q_{1} - \set{f_{1}} qQ1{f1} a ∈ Σ a \in \Sigma aΣ δ ( q , a ) = δ 1 ( q , a ) \delta(q , a) = \delta_{1}(q , a) δ(q,a)=δ1(q,a)
    • δ ( f 1 , ε ) = { q 01 , f } \delta(f_{1} , \varepsilon) = \set{q_{01} , f} δ(f1,ε)={q01,f}
    • δ ( q 0 , ε ) = { q 01 , f } \delta(q_{0} , \varepsilon) = \set{q_{01} , f} δ(q0,ε)={q01,f}

9

  • 往证 L ( r 1 ∗ ) = L ( M ) L(r_{1}^{*}) = L(M) L(r1)=L(M)

    • 由归纳假设, L ( M 1 ) = L ( r 1 ) L(M_{1}) = L(r_{1}) L(M1)=L(r1),根据正则表达式的定义 L ( r ) = ( L ( r 1 ) ) ∗ L(r) = (L(r_{1}))^{*} L(r)=(L(r1)),只需证明 L ( M ) = ( L ( M 1 ) ) ∗ L(M) = (L(M_{1}))^{*} L(M)=(L(M1))

    • 先证 L ( M ) ⊆ ( L ( M 1 ) ) ∗ L(M) \subseteq (L(M_{1}))^{*} L(M)(L(M1))

      • x ∈ L ( M ) x \in L(M) xL(M),如果 x = ε x = \varepsilon x=ε,由克林闭包的定义,显然 x ∈ ( L ( M 1 ) ) ∗ x \in (L(M_{1}))^{*} x(L(M1))

      • 如果 x ≠ ε x \neq \varepsilon x=ε,由 M M M的定义,必定存在 x 1 x_{1} x1 x 2 x_{2} x2 ⋯ \cdots x n x_{n} xn x = x 1 x 2 ⋯ x n ( n ≥ 1 ) x = x_{1} x_{2} \cdots x_{n} (n \geq 1) x=x1x2xn(n1)满足 δ ( q 0 , x ) = δ ( q 0 , x 1 x 2 ⋯ x n ) = δ ( δ ( q 0 , ε ) , x 1 x 2 ⋯ x n ) = δ ( q 01 , x 1 x 2 ⋯ x n ) = δ ( δ 1 ( q 01 , x 1 ) , x 2 ⋯ x n ) = δ ( f 1 , x 2 ⋯ x n ) ⋯ = δ ( f 1 , x n ) = δ ( δ ( f 1 , ε ) , x n ) = δ ( q 01 , x n ) = δ ( δ 1 ( q 01 , x n ) , ε ) = δ ( f 1 , ε ) = { f } \begin{aligned} \delta(q_{0} , x) &= \delta(q_{0} , x_{1} x_{2} \cdots x_{n}) \\ &= \delta(\delta(q_{0} , \varepsilon) , x_{1} x_{2} \cdots x_{n}) \\ &= \delta(q_{01} , x_{1} x_{2} \cdots x_{n}) \\ &= \delta(\delta_{1}(q_{01} , x_{1}) , x_{2} \cdots x_{n}) \\ &= \delta(f_{1} , x_{2} \cdots x_{n}) \\ &\cdots \\ &= \delta(f_{1} , x_{n}) \\ &= \delta(\delta(f_{1} , \varepsilon) , x_{n}) \\ &= \delta(q_{01} , x_{n}) \\ &= \delta(\delta_{1}(q_{01} , x_{n}) , \varepsilon) \\ &= \delta(f_{1} , \varepsilon) \\ &= \set{f} \end{aligned} δ(q0,x)=δ(q0,x1x2xn)=δ(δ(q0,ε),x1x2xn)=δ(q01,x1x2xn)=δ(δ1(q01,x1),x2xn)=δ(f1,x2xn)=δ(f1,xn)=δ(δ(f1,ε),xn)=δ(q01,xn)=δ(δ1(q01,xn),ε)=δ(f1,ε)={f}

      • 这表明 x = x 1 x 2 ⋯ x n ∈ ( L ( M 1 ) ) ∗ x = x_{1} x_{2} \cdots x_{n} \in (L(M_{1}))^{*} x=x1x2xn(L(M1))

    • 再证 ( L ( M 1 ) ) ∗ ⊆ L ( M ) (L(M_{1}))^{*} \subseteq L(M) (L(M1))L(M)

      • 类似地,不难证明 ( L ( M 1 ) ) ∗ ⊆ L ( M ) (L(M_{1}))^{*} \subseteq L(M) (L(M1))L(M)
例题
问题
  • 构造与正则表达式 ( 0 + 1 ) ∗ 0 + ( 00 ) ∗ (0 + 1)^{*} 0 + (00)^{*} (0+1)0+(00)等价的 F A FA FA
解答

10

正则语言可以用正则表达式表示
构造与 D F A DFA DFA等价的正则表达式
  • D F A M = ( { q 1 , q 2 , ⋯ , q n } , Σ , δ , q 1 , F ) DFA \ M = (\set{q_{1} , q_{2} , \cdots , q_{n}} , \Sigma , \delta , q_{1} , F) DFA M=({q1,q2,,qn},Σ,δ,q1,F)
  • R i j k = { x ∣ δ ( q i , x ) = q j , 而且对于 x 的任意前缀 y ( y ≠ x , y ≠ ε ) , 如果 δ ( q i , y ) = q l , 则 l ≤ k } R_{ij}^{k} = \set{x \mid \delta(q_{i} , x) = q_{j} , 而且对于 x 的任意前缀 y (y \neq x , y \neq \varepsilon) , 如果 \delta(q_{i} , y) = q_{l} , 则 l \leq k} Rijk={xδ(qi,x)=qj,而且对于x的任意前缀y(y=x,y=ε),如果δ(qi,y)=ql,lk}
  • 为了便于计算,将 R i j k R_{ij}^{k} Rijk递归地定义为

R i j 0 = { { a ∣ δ ( q i , a ) = q j } , i ≠ j { a ∣ δ ( q i , a ) = q j } ∪ { ε } , i = j R_{ij}^{0} = \begin{cases} \set{a \mid \delta(q_{i} , a) = q_{j}} , & i \neq j \\ \set{a \mid \delta(q_{i} , a) = q_{j}} \cup \set{\varepsilon} , & i = j \end{cases} Rij0={{aδ(qi,a)=qj},{aδ(qi,a)=qj}{ε},i=ji=j

R i j k = R i k k − 1 ( R k k k − 1 ) ∗ R k j k − 1 ∪ R i j k − 1 R_{ij}^{k} = R_{ik}^{k - 1} (R_{kk}^{k - 1})^{*} R_{kj}^{k - 1} \cup R_{ij}^{k - 1} Rijk=Rikk1(Rkkk1)Rkjk1Rijk1

  • 显然, L ( M ) = ⋃ q f ∈ F R 1 f n L(M) = \displaystyle\bigcup\limits_{q_{f} \in F}{R_{1f}^{n}} L(M)=qfFR1fn
图上作业方法
  • D F A M = ( Q , Σ , δ , q 0 , F ) DFA \ M = (Q , \Sigma , \delta , q_{0} , F) DFA M=(Q,Σ,δ,q0,F)的状态转移图,操作步骤如下
预处理
  • 在状态转移图中增加状态 X X X Y Y Y,从状态 X X X M M M的开始状态 q 0 q_{0} q0引一条标记为 ε \varepsilon ε的弧,对 ∀ q ∈ F \forall q \in F qF,从状态 q q q到状态 Y Y Y分别引一条标记为 ε \varepsilon ε的弧
  • 去掉所有的不可达状态
循环操作
  • 重复如下操作,直到该图中不再包含除了 X X X Y Y Y的其他状态,并且这两个状态之间最多只有一条弧
    • 并弧:对图中任意两个状态 q q q p p p,如果图中包含有从 q q q p p p的标记为 r 1 r_{1} r1 r 2 r_{2} r2 ⋯ \cdots r g r_{g} rg的并行弧,则用从 q q q p p p的、标记为 r 1 + r 2 + ⋯ + r g r_{1} + r_{2} + \cdots + r_{g} r1+r2++rg的弧取代这 g g g个并行弧,其中, q q q p p p可以是同一个状态
    • 去状态 1 1 1:对图中任意 3 3 3个状态 q q q p p p t t t,如果从 q q q p p p有一条标记为 r 1 r_{1} r1的弧,从 p p p t t t有一条标记为 r 2 r_{2} r2的弧,并且不存在从状态 p p p到状态 p p p的弧,则将状态 p p p和与之关联的这两条弧去掉,增加一条从 q q q t t t的标记为 r 1 r 2 r_{1} r_{2} r1r2的弧
    • 去状态 2 2 2:对图中任意 3 3 3个状态 q q q p p p t t t,如果从 q q q p p p有一条标记为 r 1 r_{1} r1的弧,从 p p p t t t有一条标记为 r 2 r_{2} r2的弧,并且存在一条从状态 p p p到状态 p p p标记为 r 3 r_{3} r3的弧,则将状态 p p p和与之关联的这 3 3 3条弧去掉,增加一条从 q q q t t t的标记为 r 1 r 3 ∗ r 2 r_{1} r_{3}^{*} r_{2} r1r3r2的弧
    • 去状态 3 3 3:如果图中只有 3 3 3个状态,而且不存在从状态 X X X Y Y Y的路,则将除状态 X X X Y Y Y之外的第三个状态及其相关的弧全部删除
  • 从状态 X X X Y Y Y的弧的标记为所求的正则表达式,如果该弧不存在,则所求的正则表达式为 ∅ \emptyset

4.4|正则语言等价模型的总结


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序算法之四:直接选择排序

1.基本思想 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。 2.直接选择排序 在元素集合array[i]--array[n-1]中选择关键码最大(小)的数据元素 若它不是这组元素中的…

练习:最大公约数

1.什么是公约数 公约数,亦称“公因数”。 它是指能同时整除几个整数的数 。 如果一个整数同时是几个整数的 约数 ,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。 2.辗转相除法 辗转相除法之所以有效是因为其基于一个核心原…

给定有n个结点的树和长度为n的排列,q次询问:l, r, x, 若p[l, r]中存在至少一个结点是x的后代,输出yes,否则输出no

题目 #include<bits/stdc.h> using namespace std; const int maxn 1e6 5; int n, q; vector<int> G[maxn]; int L[maxn], R[maxn];//L[i]表示结点i的时间戳&#xff0c;R[i]表示结点i的后代中时间戳的最大值 int p[maxn]; int t[maxn]; struct Node{int id, fl…

MapReduce

1. 请解释MapReduce的工作原理。 MapReduce是一种编程模型&#xff0c;主要用于大规模数据集&#xff08;特别是非结构化数据&#xff09;的并行处理。这个模型的核心思想是将大数据处理任务分解为两个主要步骤&#xff1a;Map和Reduce。 在Map阶段&#xff0c;输入数据被分解…

ssm的健身房预约系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; ssm的健身房预约系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spring…

AI模型平台Hugging Face存在API令牌漏洞;大型语言模型与任务模型

&#x1f989; AI新闻 &#x1f680; AI模型平台Hugging Face存在API令牌漏洞&#xff0c;黑客可窃取、修改模型 摘要&#xff1a;安全公司Lasso Security发现AI模型平台Hugging Face上存在API令牌漏洞&#xff0c;黑客可获取微软、谷歌等公司的令牌&#xff0c;并能够访问模…

c++中的内联函数和编译器

内联函数和编译器&#xff1a; 内联函数并不是何时何地都有效&#xff0c;为了理解内联函数何时有效&#xff0c;应该要知道编译器碰到内联 函数会怎么处理&#xff1f; 对于任何类型的函数&#xff0c;编译器会将函数类型(包括函数名字&#xff0c;参数类型&#xff0c;返回值…

Unknown parameter in InstanceGroups[0]: “Configurations“, must be ... 解决方法

使用 aws emr modify-instance-groups 更新集群配置时可能会遇到如下错误信息&#xff1a; Unknown parameter in InstanceGroups[0]: “Configurations”, must be one of: InstanceGroupId, InstanceCount, EC2InstanceIdsToTerminate, ShrinkPolicy 这一报错其实和提供的j…

C语言进阶之路之顶峰相见篇

目录 一、学习目标 二、宏定义 预处理 宏的概念 带参宏 无值宏定义 三、条件编译 条件编译 条件编译的使用场景 四、头文件 头文件的作用 头文件的内容 头文件的基础语句&#xff1a; GCC编译器的4个编译步骤&#xff1a; 总结 一、学习目标 掌握宏定义含义和用…

【Linux】系统初识之冯诺依曼体系结构与操作系统

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.冯诺依曼体系结构 2.操作…

Springboot项目实现简单的文件服务器,实现文件上传+图片及文件回显

文章目录 写在前面一、配置1、application.properties2、webMvc配置3、查看效果 二、文件上传 写在前面 平常工作中的项目&#xff0c;上传的文件一般都会传到对象存储云服务中。当接手一个小项目&#xff0c;如何自己动手搭建一个文件服务器&#xff0c;实现图片、文件的回显…

一篇文章带你了解并使用mybatis框架

mybatis简介&#xff1a; MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;P…

JavaScript中的发布订阅和观察者模式:如何优雅地处理事件和数据更新

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;JavaScript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-订阅观察者模式 目录 说说你对发布订阅、观察者模式的理解&#xff1f;…

用生命做事,无人能超越

今天看了《艺术人生——红楼梦剧组20年再聚首》&#xff0c;然后搜索了一下里面的核心人物及其经历。实话说&#xff0c;看完后我内心无法平静&#xff0c;涌动着各种思绪。一是20多年前这群青涩演员的人生际遇&#xff0c;让我感慨。很多人&#xff0c;用这样的机会&#xff0…

‘ChatGLMTokenizer‘ object has no attribute ‘tokenizer‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Linux系统---简易伙伴系统

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、题目要求 1.采用C语言实现 2.伙伴系统采用free_area[11]数组来组织。要求伙伴内存最小为一个页面&#xff0c;页面大小为4KB…

我在Vscode学OpenCV 图像处理二(滤除噪声干扰)

图像处理二 滤除噪声干扰三、噪声3.1图像噪声3.2 滤波3.2.1均值滤波&#xff08;1&#xff09;锚点&#xff08;2&#xff09;中心点&#xff08;下面第3小点会详细解释&#xff09;&#xff08;3&#xff09;核的大小奇偶数的区别&#xff08;1&#xff09;举例奇偶的例子&…

【工具使用-JFlash】如何使用Jflash擦除和读取MCU内部指定扇区的数据

一&#xff0c;简介 在调试的过程中&#xff0c;特别是在调试向MCU内部flash写数据的时候&#xff0c;我们常常要擦除数据区的内容&#xff0c;而不想擦除程序取。那这种情况就需要擦除指定的扇区数据即可。本文介绍一种方法&#xff0c;可以擦除MCU内部Flash中指定扇区的数据…

六级高频词汇1

目录 高频词汇 参考连接 高频词汇 1. alter v. 改变&#xff0c;改动&#xff0c;变更 2. burst vi. n. 突然发生&#xff0c;爆裂 3. dispose vi. 除掉&#xff1b;处置&#xff1b;解决&#xff1b;处理(of) 4. blast n. 爆炸&#xff1b;气流 vi. 炸&#xff0c;炸掉 …

【win10用vim开发stm32】二、vimspector的单片机调试

▲ 我的vim配置仓库: gitee&#xff0c;vim相关优先在gitee更新&#xff0c;博客vim专栏作为部分补充和使用说明 ▲ 本文提供vimspector调试的一个示例&#xff0c;和keil的调试功能比当然还是有很大差距&#xff0c;不过简单的调试功能如单步、复位、运行这些都跑通了&#xf…