《形式語言與自動機理論(第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((r?s?)?)=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 Q1?Q2?=?,取 q 0 q_{0} q0? f ? Q 1 ∪ Q 2 f \notin Q_{1} \cup Q_{2} f/Q1?Q2?,令 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=(Q1?Q2?{(}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=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} \cap Q_{2} = \emptyset Q1?Q2?=?
  • M = ( Q 1 ∪ Q 2 , Σ , δ , q 01 , { f 2 } ) M = (Q_{1} \cup Q_{2} , \Sigma , \delta , q_{01} , \set{f_{2}}) M=(Q1?Q2?,Σ,δ,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(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}) 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}) L(M_{2}) L(r1?r2?)=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}) x1?L(M1?)并且 x 2 ∈ L ( M 2 ) x_{2} \in L(M_{2}) x2?L(M2?),使得 x = x 1 x 2 x = x_{1} x_{2} x=x1?x2?
      • δ ( 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?,x1?x2?)=δ(δ(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=x1?x2?,并且 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?,x1?x2?)=δ(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}) x1?L(M1?) x 2 ∈ L ( M 2 ) x_{2} \in L(M_{2}) x2?L(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=x1?x2?L(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=x1?x2??xn?(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?,x1?x2??xn?)=δ(δ(q0?,ε),x1?x2??xn?)=δ(q01?,x1?x2??xn?)=δ(δ1?(q01?,x1?),x2??xn?)=δ(f1?,x2??xn?)?=δ(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=x1?x2??xn?(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?=Rikk?1?(Rkkk?1?)?Rkjk?1?Rijk?1?

  • 顯然, L ( M ) = ? q f ∈ F R 1 f n L(M) = \displaystyle\bigcup\limits_{q_{f} \in F}{R_{1f}^{n}} L(M)=qf?F??R1fn?
圖上作業方法
  • 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} r1?r2?的弧
    • 去狀態 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} r1?r3??r2?的弧
    • 去狀態 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.pswp.cn/news/211152.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211152.shtml
英文地址,請注明出處:http://en.pswp.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…