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

文章目录

前导


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


第三章:有穷状态自动机


3.1|语言的识别


3.2|有穷状态自动机

即时描述
  • M = ( Q , Σ , δ , q 0 , F ) M = (Q , \Sigma , \delta , q_{0} , F) M=(Q,Σ,δ,q0,F)为一个 F A FA FA x x x y ∈ Σ ∗ y \in \Sigma^{*} yΣ δ ( q 0 , x ) = q \delta(q_{0} , x) = q δ(q0,x)=q x q y xqy xqy称为 M M M的一个即时描述,表示 x y xy xy M M M正在处理的一个字符串, x x x引导 M M M q 0 q_{0} q0启动并到达状态 q q q M M M的读头当前正指向 y y y的首字符
  • 如果 x q a y xqay xqay M M M的一个即时描述,且 δ ( q , a ) = p \delta(q , a) = p δ(q,a)=p,则 x q a y ⊢ x a p y xqay \vdash xapy xqayxapy
s e t ( ) set() set()
  • M = ( Q , Σ , δ , q 0 , F ) M = (Q , \Sigma , \delta , q_{0} , F) M=(Q,Σ,δ,q0,F)为一个 F A FA FA,对 ∀ q ∈ Q \forall q \in Q qQ,能引导 F A FA FA从开始状态到达 q q q的字符串的集合为 s e t ( q ) = { x ∣ x ∈ Σ ∗ , δ ( q 0 , x ) = q } set(q) = \set{x \mid x \in \Sigma^{*} , \delta(q_{0} , x) = q} set(q)={xxΣ,δ(q0,x)=q}
例题
问题 1 1 1
  • 构造一个 D F A DFA DFA,它接受的语言为 { x ∣ x ∈ { 0 , 1 } ∗ , 且当把 x 看成二进制数时 , x 模 3 与 0 同余 } \set{x \mid x \in \set{0 , 1}^{*} , 且当把 x 看成二进制数时 , x 模 3 与 0 同余} {xx{0,1},且当把x看成二进制数时,x30同余}
解答
状态说明状态 0 0 0 1 1 1
开始状态 q s q_{s} qs q 0 q_{0} q0 q 1 q_{1} q1
终止状态(模 3 3 3 0 0 0 q 0 q_{0} q0 q 0 q_{0} q0 q 1 q_{1} q1
(模 3 3 3 1 1 1 q 1 q_{1} q1 q 2 q_{2} q2 q 0 q_{0} q0
(模 3 3 3 2 2 2 q 2 q_{2} q2 q 1 q_{1} q1 q 2 q_{2} q2
问题 2 2 2
  • 构造一个 D F A DFA DFA,它接受的语言 L = { x ∣ x ∈ { 0 , 1 } ∗ , 且对 x 中任意一个长度不大于 5 的子串 a 1 a 2 ⋯ a n , a 1 + a 2 + ⋯ + a n ≤ 3 ( n ≤ 5 ) } L = \set{x \mid x \in \set{0 , 1}^{*} , 且对 x 中任意一个长度不大于 5 的子串 a_{1} a_{2} \cdots a_{n} , a_{1} + a_{2} + \cdots + a_{n} \leq 3 (n \leq 5)} L={xx{0,1},且对x中任意一个长度不大于5的子串a1a2an,a1+a2++an3(n5)}
解答
  • F = { q [ ε ] } ∪ { q [ a 1 a 2 ⋯ a i ] ∣ a 1 , a 2 , ⋯ , a i ∈ { 0 , 1 } 且 1 ≤ i ≤ 5 且 a 1 + a 2 + ⋯ + a i ≤ 3 } F = \set{q[\varepsilon]} \cup \set{q[a_{1} a_{2} \cdots a_{i}] \mid a_{1} , a_{2} , \cdots , a_{i} \in \set{0 , 1} 且 1 \leq i \leq 5 且 a_{1} + a_{2} + \cdots + a_{i} \leq 3} F={q[ε]}{q[a1a2ai]a1,a2,,ai{0,1}1i5a1+a2++ai3}

  • Q = { q t } ∪ F Q = \set{q_{t}} \cup F Q={qt}F

δ ( q [ ε ] , a 1 ) = q [ a 1 ] δ ( q [ a 1 ] , a 2 ) = q [ a 1 a 2 ] δ ( q [ a 1 a 2 ] , a 3 ) = q [ a 1 a 2 a 3 ] δ ( q [ a 1 a 2 a 3 ] , a ) = { q [ a 1 a 2 a 3 a ] , a 1 + a 2 + a 3 + a ≤ 3 q t , a 1 + a 2 + a 3 + a > 3 δ ( q [ a 1 a 2 a 3 a 4 ] , a ) = { q [ a 1 a 2 a 3 a 4 a ] , a 1 + a 2 + a 3 + a 4 + a ≤ 3 q t , a 1 + a 2 + a 3 + a 4 + a > 3 δ ( q [ a 1 a 2 a 3 a 4 a 5 ] , a ) = { q [ a 2 a 3 a 4 a 5 a ] , a 2 + a 3 + a 4 + a 5 + a ≤ 3 q t , a 2 + a 3 + a 4 + a 5 + a > 3 δ ( q t , a ) = q t \delta(q[\varepsilon] , a_{1}) = q[a_{1}] \\ \delta(q[a_{1}] , a_{2}) = q[a_{1} a_{2}] \\ \delta(q[a_{1} a_{2}] , a_{3}) = q[a_{1} a_{2} a_{3}] \\ \delta(q[a_{1} a_{2} a_{3}] , a) = \begin{cases} q[a_{1} a_{2} a_{3} a] , & a_{1} + a_{2} + a_{3} + a \leq 3 \\ q_{t} , & a_{1} + a_{2} + a_{3} + a > 3 \end{cases} \\ \delta(q[a_{1} a_{2} a_{3} a_{4}] , a) = \begin{cases} q[a_{1} a_{2} a_{3} a_{4} a] , & a_{1} + a_{2} + a_{3} + a_{4} + a \leq 3 \\ q_{t} , & a_{1} + a_{2} + a_{3} + a_{4} + a > 3 \end{cases} \\ \delta(q[a_{1} a_{2} a_{3} a_{4} a_{5}] , a) = \begin{cases} q[a_{2} a_{3} a_{4} a_{5} a] , & a_{2} + a_{3} + a_{4} + a_{5} + a \leq 3 \\ q_{t} , & a_{2} + a_{3} + a_{4} + a_{5} + a > 3 \end{cases} \\ \delta(q_{t} , a) = q_{t} δ(q[ε],a1)=q[a1]δ(q[a1],a2)=q[a1a2]δ(q[a1a2],a3)=q[a1a2a3]δ(q[a1a2a3],a)={q[a1a2a3a],qt,a1+a2+a3+a3a1+a2+a3+a>3δ(q[a1a2a3a4],a)={q[a1a2a3a4a],qt,a1+a2+a3+a4+a3a1+a2+a3+a4+a>3δ(q[a1a2a3a4a5],a)={q[a2a3a4a5a],qt,a2+a3+a4+a5+a3a2+a3+a4+a5+a>3δ(qt,a)=qt


3.3|不确定的有穷状态自动机

构造 N F A NFA NFA的等价 D F A DFA DFA
N F A NFA NFA

1

构造方式
  • 先只把开始状态 [ q 0 ] [q_{0}] [q0]填入表的状态列中
  • 如果表中的状态列中有未处理的状态,则任选一个未处理的状态 [ q 1 , q 2 , ⋯ , q n ] [q_{1} , q_{2} , \cdots , q_{n}] [q1,q2,,qn],对 Σ \Sigma Σ中的每个字符 a a a,计算 δ ( [ q 1 , q 2 , ⋯ , q n ] , a ) \delta([q_{1} , q_{2} , \cdots , q_{n}] , a) δ([q1,q2,,qn],a),并将结果填入相应的表项中
  • 如果 δ ( [ q 1 , q 2 , ⋯ , q n ] , a ) \delta([q_{1} , q_{2} , \cdots , q_{n}] , a) δ([q1,q2,,qn],a)在表的状态列中未出现过,则同时将它填入表的状态列
  • 如此重复下去,直到表的状态列中不存在未处理的状态
状态转移函数
状态说明状态 0 0 0 1 1 1
开始状态 [ q 0 ] [q_{0}] [q0] [ q 0 , q 1 ] [q_{0} , q_{1}] [q0,q1] [ q 0 , q 2 ] [q_{0} , q_{2}] [q0,q2]
[ q 0 , q 1 ] [q_{0} , q_{1}] [q0,q1] [ q 0 , q 1 , q 3 ] [q_{0} , q_{1} , q_{3}] [q0,q1,q3] [ q 0 , q 2 ] [q_{0} , q_{2}] [q0,q2]
[ q 0 , q 2 ] [q_{0} , q_{2}] [q0,q2] [ q 0 , q 1 ] [q_{0} , q_{1}] [q0,q1] [ q 0 , q 2 , q 3 ] [q_{0} , q_{2} , q_{3}] [q0,q2,q3]
终止状态 [ q 0 , q 1 , q 3 ] [q_{0} , q_{1} , q_{3}] [q0,q1,q3] [ q 0 , q 1 , q 3 ] [q_{0} , q_{1} , q_{3}] [q0,q1,q3] [ q 0 , q 2 , q 3 ] [q_{0} , q_{2} , q_{3}] [q0,q2,q3]
终止状态 [ q 0 , q 2 , q 3 ] [q_{0} , q_{2} , q_{3}] [q0,q2,q3] [ q 0 , q 1 , q 3 ] [q_{0} , q_{1} , q_{3}] [q0,q1,q3] [ q 0 , q 2 , q 3 ] [q_{0} , q_{2} , q_{3}] [q0,q2,q3]

3.4|带空移动的有穷状态自动机

带空移动的不确定有穷状态自动机 ε − N F A \varepsilon-NFA εNFA
  • 对任意 q ∈ Q q \in Q qQ

    • ε − C L O S U R E ( q ) = { p ∣ 从 q 到 p 有一条标记为 ε 的路 } \varepsilon-CLOSURE(q) = \set{p \mid 从 q 到 p 有一条标记为 \varepsilon 的路} εCLOSURE(q)={pqp有一条标记为ε的路}

    • δ ^ ( q , ε ) = ε − C L O S U R E ( q ) \hat{\delta}(q , \varepsilon) = \varepsilon-CLOSURE(q) δ^(q,ε)=εCLOSURE(q)

ε − N F A \varepsilon-NFA εNFA N F A NFA NFA等价
  • 显然只需证明对于任给的 ε − N F A \varepsilon-NFA εNFA,存在与之等价的 N F A NFA NFA
  • ε − N F A M 1 = ( Q , Σ , δ 1 , q 0 , F ) \varepsilon-NFA \ M_{1} = (Q , \Sigma , \delta_{1} , q_{0} , F) εNFA M1=(Q,Σ,δ1,q0,F)
构造与 M 1 M_{1} M1等价的 N F A M 2 NFA \ M_{2} NFA M2
  • N F A M 2 = ( Q , Σ , δ 2 , q 0 , F 2 ) NFA \ M_{2} = (Q , \Sigma , \delta_{2} , q_{0} , F_{2}) NFA M2=(Q,Σ,δ2,q0,F2)
    • F 2 = { F ∪ { q 0 } , 如果 F ∩ ε − C L O S U R E ( q 0 ) ≠ ∅ F , 如果 F ∩ ε − C L O S U R E ( q 0 ) = ∅ F_{2} = \begin{cases} F \cup \set{q_{0}} , & 如果 F \cap \varepsilon-CLOSURE(q_{0}) \neq \emptyset \\ F , & 如果 F \cap \varepsilon-CLOSURE(q_{0}) = \emptyset \end{cases} F2={F{q0},F,如果FεCLOSURE(q0)=如果FεCLOSURE(q0)=
    • ∀ ( q , a ) ∈ Q × Σ \forall (q , a) \in Q \times \Sigma (q,a)Q×Σ,使 δ 2 ( q , a ) = δ ^ 1 ( q , a ) \delta_{2}(q , a) = \hat{\delta}_{1}(q , a) δ2(q,a)=δ^1(q,a)
证明:对 ∀ x ∈ Σ + \forall x \in \Sigma^{+} xΣ+,有 δ 2 ( q 0 , x ) = δ ^ 1 ( q 0 , x ) \delta_{2}(q_{0} , x) = \hat{\delta}_{1}(q_{0} , x) δ2(q0,x)=δ^1(q0,x)
  • 施归纳于 ∣ x ∣ |x| x
  • ∣ x ∣ = 1 |x| = 1 x=1时,由 δ 2 \delta_{2} δ2的定义,结论成立
  • 设当 ∣ x ∣ = n |x| = n x=n时结论成立,下面证明当 ∣ x ∣ = n + 1 |x| = n + 1 x=n+1时结论也成立
    • x = w a x = wa x=wa ∣ w ∣ = n |w| = n w=n a ∈ Σ a \in \Sigma aΣ

    • δ 2 ( q 0 , x ) = δ 2 ( q 0 , w a ) = δ 2 ( δ 2 ( q 0 , w ) , a ) = δ 2 ( δ ^ 1 ( q 0 , w ) , a ) = ⋃ q ∈ δ ^ 1 ( q 0 , w ) δ 2 ( q , a ) = ⋃ q ∈ δ ^ 1 ( q 0 , w ) δ ^ 1 ( q , a ) = ε − C L O S U R E ( ⋃ q ∈ δ ^ 1 ( q 0 , w ) δ 1 ( q , a ) ) = ε − C L O S U R E ( { p ∣ ∃ q ∈ δ ^ 1 ( q 0 , w ) , 使得 p ∈ δ 1 ( q , a ) } ) = δ ^ 1 ( q 0 , w a ) = δ ^ 1 ( q 0 , x ) \begin{aligned} \delta_{2}(q_{0} , x) &= \delta_{2}(q_{0} , wa) \\ &= \delta_{2}(\delta_{2}(q_{0} , w) , a) \\ &= \delta_{2}(\hat{\delta}_{1}(q_{0} , w) , a) \\ &= \displaystyle\bigcup\limits_{q \in \hat{\delta}_{1}(q_{0} , w)}{\delta_{2}(q , a)} \\ &= \displaystyle\bigcup\limits_{q \in \hat{\delta}_{1}(q_{0} , w)}{\hat{\delta}_{1}(q , a)} \\ &= \varepsilon-CLOSURE(\displaystyle\bigcup\limits_{q \in \hat{\delta}_{1}(q_{0} , w)}{\delta_{1}(q , a)}) \\ &= \varepsilon-CLOSURE(\set{p \mid \exist q \in \hat{\delta}_{1}(q_{0} , w) , 使得 p \in \delta_{1}(q , a)}) \\ &= \hat{\delta}_{1}(q_{0} , wa) \\ &= \hat{\delta}_{1}(q_{0} , x) \end{aligned} δ2(q0,x)=δ2(q0,wa)=δ2(δ2(q0,w),a)=δ2(δ^1(q0,w),a)=qδ^1(q0,w)δ2(q,a)=qδ^1(q0,w)δ^1(q,a)=εCLOSURE(qδ^1(q0,w)δ1(q,a))=εCLOSURE({pqδ^1(q0,w),使得pδ1(q,a)})=δ^1(q0,wa)=δ^1(q0,x)

    • 结论对 ∣ x ∣ = n + 1 |x| = n + 1 x=n+1也成立,由归纳法原理,结论对 ∀ x ∈ Σ + \forall x \in \Sigma^{+} xΣ+成立

证明:对 ∀ x ∈ Σ + , δ 2 ( q 0 , x ) ∩ F 2 ≠ ∅ ⇔ δ ^ 1 ( q 0 , x ) ∩ F ≠ ∅ \forall x \in \Sigma^{+} , \delta_{2}(q_{0} , x) \cap F_{2} \neq \emptyset \Leftrightarrow \hat{\delta}_{1}(q_{0} , x) \cap F \neq \emptyset xΣ+,δ2(q0,x)F2=δ^1(q0,x)F=
  • 充分性
    • δ ^ 1 ( q 0 , x ) ∩ F ≠ ∅ \hat{\delta}_{1}(q_{0} , x) \cap F \neq \emptyset δ^1(q0,x)F= δ 2 ( q 0 , x ) ∩ F ≠ ∅ \delta_{2}(q_{0} , x) \cap F \neq \emptyset δ2(q0,x)F=,而 F ⊆ F 2 F \subseteq F_{2} FF2,所以 δ 2 ( q 0 , x ) ∩ F 2 ≠ ∅ \delta_{2}(q_{0} , x) \cap F_{2} \neq \emptyset δ2(q0,x)F2=
  • 必要性
    • δ 2 ( q 0 , x ) ∩ F 2 ≠ ∅ \delta_{2}(q_{0} , x) \cap F_{2} \neq \emptyset δ2(q0,x)F2=,则有以下两种情况
      • 第一种情况: δ 2 ( q 0 , x ) ∩ F 2 ≠ { q 0 } \delta_{2}(q_{0} , x) \cap F_{2} \neq \set{q_{0}} δ2(q0,x)F2={q0},此时, δ 2 ( q 0 , x ) ∩ F ≠ ∅ \delta_{2}(q_{0} , x) \cap F \neq \emptyset δ2(q0,x)F=,而 δ ^ 1 ( q 0 , x ) = δ 2 ( q 0 , x ) \hat{\delta}_{1}(q_{0} , x) = \delta_{2}(q_{0} , x) δ^1(q0,x)=δ2(q0,x),所以 δ ^ 1 ( q 0 , x ) ∩ F ≠ ∅ \hat{\delta}_{1}(q_{0} , x) \cap F \neq \emptyset δ^1(q0,x)F=
      • 第二种情况: δ 2 ( q 0 , x ) ∩ F 2 = { q 0 } \delta_{2}(q_{0} , x) \cap F_{2} = \set{q_{0}} δ2(q0,x)F2={q0},如果 q 0 ∈ F q_{0} \in F q0F,则 δ ^ 1 ( q 0 , x ) ∩ F ≠ ∅ \hat{\delta}_{1}(q_{0} , x) \cap F \neq \emptyset δ^1(q0,x)F=,事实上,此时不可能有 q 0 ∉ F q_{0} \notin F q0/F,如果 q 0 ∉ F q_{0} \notin F q0/F,则由于 q 0 ∈ F 2 q_{0} \in F_{2} q0F2,所以 F ∩ ε − C L O S U R E ( q 0 ) ≠ ∅ F \cap \varepsilon-CLOSURE(q_{0}) \neq \emptyset FεCLOSURE(q0)=,即 ∃ q f ∈ ε − C L O S U R E ( q 0 ) ∩ F \exist q_{f} \in \varepsilon-CLOSURE(q_{0}) \cap F qfεCLOSURE(q0)F,但 q f ≠ q 0 q_{f} \neq q_{0} qf=q0,由于 δ ^ 1 ( q 0 , x ) = δ 2 ( q 0 , x ) \hat{\delta}_{1}(q_{0} , x) = \delta_{2}(q_{0} , x) δ^1(q0,x)=δ2(q0,x),所以,由 q 0 ∈ δ ^ 1 ( q 0 , x ) q_{0} \in \hat{\delta}_{1}(q_{0} , x) q0δ^1(q0,x)可得 ε − C L O S U R E ( q 0 ) ⊆ δ ^ 1 ( q 0 , x ) \varepsilon-CLOSURE(q_{0}) \subseteq \hat{\delta}_{1}(q_{0} , x) εCLOSURE(q0)δ^1(q0,x) q f ∈ δ ^ 1 ( q 0 , x ) ∩ F q_{f} \in \hat{\delta}_{1}(q_{0} , x) \cap F qfδ^1(q0,x)F,而 F ⊆ F 2 F \subseteq F_{2} FF2,所以 q f ∈ F 2 q_{f} \in F_{2} qfF2,从而 q f ∈ δ 2 ( q 0 , x ) ∩ F 2 q_{f} \in \delta_{2}(q_{0} , x) \cap F_{2} qfδ2(q0,x)F2,由于 q f ≠ q 0 q_{f} \neq q_{0} qf=q0,这与 δ 2 ( q 0 , x ) ∩ F 2 = { q 0 } \delta_{2}(q_{0} , x) \cap F_{2} = \set{q_{0}} δ2(q0,x)F2={q0}矛盾
    • 综上所述,如果 δ 2 ( q 0 , x ) ∩ F 2 ≠ ∅ \delta_{2}(q_{0} , x) \cap F_{2} \neq \emptyset δ2(q0,x)F2=,则必有 δ ^ 1 ( q 0 , x ) ∩ F ≠ ∅ \hat{\delta}_{1}(q_{0} , x) \cap F \neq \emptyset δ^1(q0,x)F=
证明: ε ∈ L ( M 1 ) ⇔ ε ∈ L ( M 2 ) \varepsilon \in L(M_{1}) \Leftrightarrow \varepsilon \in L(M_{2}) εL(M1)εL(M2)
  • 必要性
    • ε ∈ L ( M 1 ) \varepsilon \in L(M_{1}) εL(M1),则 ∃ q f ∈ ε − C L O S U R E ( q 0 ) ∩ F \exist q_{f} \in \varepsilon-CLOSURE(q_{0}) \cap F qfεCLOSURE(q0)F,由 F 2 F_{2} F2的定义, q 0 ∈ F 2 q_{0} \in F_{2} q0F2,所以 δ 2 ( q 0 , ε ) = q 0 ∈ F 2 \delta_{2}(q_{0} , \varepsilon) = q_{0} \in F_{2} δ2(q0,ε)=q0F2,表明 ε ∈ L ( M 2 ) \varepsilon \in L(M_{2}) εL(M2)
  • 充分性
    • ε ∈ L ( M 2 ) \varepsilon \in L(M_{2}) εL(M2),从而有 δ 2 ( q 0 , ε ) = q 0 ∈ F 2 \delta_{2}(q_{0} , \varepsilon) = q_{0} \in F_{2} δ2(q0,ε)=q0F2,只能有以下两种情况
      • 第一种情况: q 0 ∈ F q_{0} \in F q0F,此时 ε ∈ L ( M 1 ) \varepsilon \in L(M_{1}) εL(M1)
      • 第二种情况: q 0 ∉ F q_{0} \notin F q0/F,此时必有 ε − C L O S U R E ( q 0 ) ∩ F ≠ ∅ \varepsilon-CLOSURE(q_{0}) \cap F \neq \emptyset εCLOSURE(q0)F=,即 δ ^ 1 ( q 0 , ε ) ∩ F ≠ ∅ \hat{\delta}_{1}(q_{0} , \varepsilon) \cap F \neq \emptyset δ^1(q0,ε)F=,所以 ε ∈ L ( M 1 ) \varepsilon \in L(M_{1}) εL(M1)
  • ε ∈ L ( M 1 ) ⇔ ε ∈ L ( M 2 ) \varepsilon \in L(M_{1}) \Leftrightarrow \varepsilon \in L(M_{2}) εL(M1)εL(M2)
例题
问题
  • 构造与图示 ε − N F A \varepsilon-NFA εNFA等价的 N F A NFA NFA

2

解答

3


3.5|FA是正则语言的识别器

F A FA FA接受的语言是正则语言
  • D F A M = ( Q , Σ , δ , q 0 , F ) DFA \ M = (Q , \Sigma , \delta , q_{0} , F) DFA M=(Q,Σ,δ,q0,F)
构造正则文法 G G G,使得 L ( G ) = L ( M ) − { ε } L(G) = L(M) - \set{\varepsilon} L(G)=L(M){ε}
  • G = ( Q , Σ , P , q 0 ) G = (Q , \Sigma , P , q_{0}) G=(Q,Σ,P,q0),其中 P = { q → a p ∣ δ ( q , a ) = p } ∪ { q → a ∣ δ ( q , a ) = p ∈ F } P = \set{q \rightarrow ap \mid \delta(q , a) = p} \cup \set{q \rightarrow a \mid \delta(q , a) = p \in F} P={qapδ(q,a)=p}{qaδ(q,a)=pF}
证明: L ( G ) = L ( M ) − { ε } L(G) = L(M) - \set{\varepsilon} L(G)=L(M){ε}
  • 对于 a 1 a 2 ⋯ a n ∈ Σ + a_{1} a_{2} \cdots a_{n} \in \Sigma^{+} a1a2anΣ+ q 0 ⇒ + a 1 a 2 ⋯ a n ⇔ q 0 → a 1 q 1 , q 1 → a 2 q 2 , ⋯ , q n − 1 → a n ∈ P ⇔ δ ( q 0 , a 1 ) = q 1 , δ ( q 1 , a 2 ) = q 2 , ⋯ , δ ( q n − 1 , a n ) = q n ∈ F ⇔ δ ( q 0 , a 1 a 2 ⋯ a n ) = q n ∈ F \begin{aligned} q_{0} \xRightarrow{+} a_{1} a_{2} \cdots a_{n} &\Leftrightarrow q_{0} \rightarrow a_{1} q_{1} , q_{1} \rightarrow a_{2} q_{2} , \cdots , q_{n - 1} \rightarrow a_{n} \in P \\ &\Leftrightarrow \delta(q_{0} , a_{1}) = q_{1} , \delta(q_{1} , a_{2}) = q_{2} , \cdots , \delta(q_{n - 1} , a_{n}) = q_{n} \in F \\ &\Leftrightarrow \delta(q_{0} , a_{1} a_{2} \cdots a_{n}) = q_{n} \in F \end{aligned} q0+ a1a2anq0a1q1,q1a2q2,,qn1anPδ(q0,a1)=q1,δ(q1,a2)=q2,,δ(qn1,an)=qnFδ(q0,a1a2an)=qnF
  • 所以 a 1 a 2 ⋯ a n ∈ L ( G ) ⇔ a 1 a 2 ⋯ a n ∈ L ( M ) a_{1} a_{2} \cdots a_{n} \in L(G) \Leftrightarrow a_{1} a_{2} \cdots a_{n} \in L(M) a1a2anL(G)a1a2anL(M)
关于 ε \varepsilon ε句子
  • 如果 q 0 ∉ F q_{0} \notin F q0/F,则 ε ∉ L ( M ) \varepsilon \notin L(M) ε/L(M) L ( G ) = L ( M ) = L ( M ) − ε L(G) = L(M) = L(M) - \varepsilon L(G)=L(M)=L(M)ε
  • 如果 q 0 ∈ F q_{0} \in F q0F,存在正则文法 G ′ G^{'} G,使得 L ( G ′ ) = L ( G ) ∪ { ε } = L ( M ) L(G^{'}) = L(G) \cup \set{\varepsilon} = L(M) L(G)=L(G){ε}=L(M)
正则语言可以由 F A FA FA接受
  • 由于正则语言被定义为是由正则文法产生的语言,所以只需证明,对于任给的正则文法,存在一个与之等价的 F A FA FA
  • 设有正则文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),假设 G G G是右线性文法,且 ε ∉ L ( G ) \varepsilon \notin L(G) ε/L(G)
构造等价的 F A FA FA
  • 对应于正则文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),取 F A M = ( V ∪ { Z } , T , δ , S , { Z } ) FA \ M = (V \cup \set{Z} , T , \delta , S , \set{Z}) FA M=(V{Z},T,δ,S,{Z}),其中对 ∀ ( A , a ) ∈ V × T \forall (A , a) \in V \times T (A,a)V×T δ ( A , a ) = { { B ∣ A → a B ∈ P } ∪ { Z } , 如果 A → a ∈ P { B ∣ A → a B ∈ P } , 如果 A → a ∉ P \delta(A , a) = \begin{cases} \set{B \mid A \rightarrow aB \in P} \cup \set{Z} , & 如果 A \rightarrow a \in P \\ \set{B \mid A \rightarrow aB \in P} , & 如果 A \rightarrow a \notin P \end{cases} δ(A,a)={{BAaBP}{Z},{BAaBP},如果AaP如果Aa/P
证明 L ( M ) = L ( G ) L(M) = L(G) L(M)=L(G)
  • 对于 a 1 a 2 ⋯ a n ∈ T + a_{1} a_{2} \cdots a_{n} \in T^{+} a1a2anT+ a 1 a 2 ⋯ a n ∈ T + ⇔ S ⇒ + a 1 a 2 ⋯ a n ⇔ S ⇒ a 1 A 1 ⇒ a 1 a 2 A 2 ⇒ ⋯ ⇒ a 1 a 2 ⋯ a n ⇔ S → a 1 A 1 , A 1 → a 2 A 2 , ⋯ , A n − 1 → a n ∈ P ⇔ A 1 ∈ δ ( S , a 1 ) , A 2 ∈ δ ( A 1 , a 2 ) , ⋯ , Z ∈ δ ( A n − 1 , a n ) ⇔ Z ∈ δ ( S , a 1 a 2 ⋯ a n ) ⇔ a 1 a 2 ⋯ a n ∈ L ( M ) \begin{aligned} a_{1} a_{2} \cdots a_{n} \in T^{+} &\Leftrightarrow S \xRightarrow{+} a_{1} a_{2} \cdots a_{n} \\ &\Leftrightarrow S \Rightarrow a_{1} A_{1} \Rightarrow a_{1} a_{2} A_{2} \Rightarrow \cdots \Rightarrow a_{1} a_{2} \cdots a_{n} \\ &\Leftrightarrow S \rightarrow a_{1} A_{1} , A_{1} \rightarrow a_{2} A_{2} , \cdots , A_{n - 1} \rightarrow a_{n} \in P \\ &\Leftrightarrow A_{1} \in \delta(S , a_{1}) , A_{2} \in \delta(A_{1} , a_{2}) , \cdots , Z \in \delta(A_{n - 1} , a_{n}) \\ &\Leftrightarrow Z \in \delta(S , a_{1} a_{2} \cdots a_{n}) \Leftrightarrow a_{1} a_{2} \cdots a_{n} \in L(M) \end{aligned} a1a2anT+S+ a1a2anSa1A1a1a2A2a1a2anSa1A1,A1a2A2,,An1anPA1δ(S,a1),A2δ(A1,a2),,Zδ(An1,an)Zδ(S,a1a2an)a1a2anL(M)
  • 即对于 ∀ x ∈ T + \forall x \in T^{+} xT+ x ∈ L ( G ) ⇔ x ∈ L ( M ) x \in L(G) \Leftrightarrow x \in L(M) xL(G)xL(M)
关于 ε ∈ L ( G ) \varepsilon \in L(G) εL(G)
  • 不妨假设 S S S不出现在 G G G的任何产生式的右部,设 G G G中只有唯一的一个空产生式 S → ε S \rightarrow \varepsilon Sε
  • 只需将状态 S S S取为 M M M的第二个终止状态
  • 按此方法构造出的 F A M FA \ M FA M与所给的正则文法 G G G是等价的
F A FA FA与左线性文法
根据左线性文法构造等价的 F A FA FA
  • 引入一个开始状态 Z Z Z,形如 A → a A \rightarrow a Aa的产生式, A ∈ δ ( Z , a ) A \in \delta(Z , a) Aδ(Z,a)
  • 形如 A → B a A \rightarrow Ba ABa的产生式, δ ( B , a ) = A \delta(B , a) = A δ(B,a)=A
  • G G G的开始符号对应的状态是相应 F A FA FA的终止状态
构造 D F A DFA DFA等价的左线性文法
  • D F A DFA DFA做处理
    • 删除 D F A DFA DFA的陷阱状态(包括与之相关的弧)
    • 在图中加一个识别状态 z z z,“复制”一条原来到达终止状态的弧,使它从原来的起点出发,到达新添加的识别状态
    • 如果开始状态也是终止状态,则增加产生式 z → ε z \rightarrow \varepsilon zε
  • 构造规则
    • 如果 δ ( A , a ) = B \delta(A , a) = B δ(A,a)=B,则有产生式 B → A a B \rightarrow Aa BAa
    • 如果 δ ( A , a ) = B \delta(A , a) = B δ(A,a)=B,且 A A A是开始状态,则有产生式 B → a B \rightarrow a Ba

3.6|FA的一些变形

双向有穷状态自动机
确定的双向有穷状态自动机 2 D F A 2 DFA 2DFA
  • M = ( Q , Σ , δ , q 0 , F ) M = (Q , \Sigma , \delta , q_{0} , F) M=(Q,Σ,δ,q0,F)
  • δ : Q × Σ → Q × { L , R , S } \delta : Q \times \Sigma \rightarrow Q \times \set{L , R , S} δ:Q×ΣQ×{L,R,S},对 ∀ ( q , a ) ∈ Q × Σ \forall (q , a) \in Q \times \Sigma (q,a)Q×Σ
    • 如果 δ ( q , a ) = ( p , L ) \delta(q , a) = (p , L) δ(q,a)=(p,L),表示 M M M在状态 q q q读入字符 a a a,将状态变成 p p p,并将读头向左移动一个带方格而指向输入字符串中的前一个字符
    • 如果 δ ( q , a ) = ( p , R ) \delta(q , a) = (p , R) δ(q,a)=(p,R),表示 M M M在状态 q q q读入字符 a a a,将状态变成 p p p,并将读头向右移动一个带方格而指向输入字符串中的下一个字符
    • 如果 δ ( q , a ) = ( p , S ) \delta(q , a) = (p , S) δ(q,a)=(p,S),表示 M M M在状态 q q q读入字符 a a a,将状态变成 p p p,读头保持在原位不动
不确定的双向有穷状态自动机 2 N F A 2 NFA 2NFA
  • M = ( Q , Σ , δ , q 0 , F ) M = (Q , \Sigma , \delta , q_{0} , F) M=(Q,Σ,δ,q0,F)
  • δ : Q × Σ → 2 Q × { L , R , S } \delta : Q \times \Sigma \rightarrow 2^{Q \times \set{L , R , S}} δ:Q×Σ2Q×{L,R,S},对 ∀ ( q , a ) ∈ Q × Σ \forall (q , a) \in Q \times \Sigma (q,a)Q×Σ δ ( q , a ) = { ( p 1 , D 1 ) , ( p 2 , D 2 ) , ⋯ , ( p m , D m ) } \delta(q , a) = \set{(p_{1} , D_{1}) , (p_{2} , D_{2}) , \cdots , (p_{m} , D_{m})} δ(q,a)={(p1,D1),(p2,D2),,(pm,Dm)}表示 M M M在状态 q q q读入字符 a a a,可以选择地将状态变成 p m p_{m} pm,同时按 D m ∈ { L , R , S } D_{m} \in \set{L , R , S} Dm{L,R,S}实现对读头的移动
带输出的 F A FA FA
M o o r e Moore Moore
  • M = ( Q , Σ , Δ , δ , λ , q 0 ) M = (Q , \Sigma , \Delta , \delta , \lambda , q_{0}) M=(Q,Σ,Δ,δ,λ,q0)
    • Δ \Delta Δ——输出字母表
    • λ \lambda λ—— λ : Q → Δ \lambda : Q \rightarrow \Delta λ:QΔ为输出函数,对 ∀ q ∈ Q \forall q \in Q qQ λ ( q ) = a \lambda(q) = a λ(q)=a表示 M M M在状态 q q q时输出 a a a
  • 对于 ∀ a 1 a 2 ⋯ a n ∈ Σ ∗ \forall a_{1} a_{2} \cdots a_{n} \in \Sigma^{*} a1a2anΣ M M M的输出串为 λ ( q 0 ) λ ( δ ( q 0 , a 1 ) ) λ ( δ ( δ ( q 0 , a 1 ) , a 2 ) ) ⋯ λ ( δ ( ( ⋯ δ ( δ ( q 0 , a 1 ) , a 2 ) ⋯ ) , a n ) ) \lambda(q_{0}) \lambda(\delta(q_{0} , a_{1})) \lambda(\delta(\delta(q_{0} , a_{1}) , a_{2})) \cdots \lambda(\delta((\cdots \delta(\delta(q_{0} , a_{1}) , a_{2}) \cdots) , a_{n})) λ(q0)λ(δ(q0,a1))λ(δ(δ(q0,a1),a2))λ(δ((δ(δ(q0,a1),a2)),an)),设 δ ( q 0 , a 1 ) = q 1 \delta(q_{0} , a_{1}) = q_{1} δ(q0,a1)=q1 δ ( q 1 , a 2 ) = q 2 \delta(q_{1} , a_{2}) = q_{2} δ(q1,a2)=q2 ⋯ \cdots δ ( q n − 1 , a n ) = q n \delta(q_{n - 1} , a_{n}) = q_{n} δ(qn1,an)=qn,则 M M M的输出可以表示成 λ ( q 0 ) λ ( q 1 ) ⋯ λ ( q n ) \lambda(q_{0}) \lambda(q_{1}) \cdots \lambda(q_{n}) λ(q0)λ(q1)λ(qn),这是一个长度为 n + 1 n + 1 n+1的串
M e a l y Mealy Mealy
  • M = ( Q , Σ , Δ , δ , λ , q 0 ) M = (Q , \Sigma , \Delta , \delta , \lambda , q_{0}) M=(Q,Σ,Δ,δ,λ,q0)
    • λ \lambda λ—— λ : Q × Σ → Δ \lambda : Q \times \Sigma \rightarrow \Delta λ:Q×ΣΔ为输出函数,对 ∀ ( q , a ) ∈ Q × Σ \forall (q , a) \in Q \times \Sigma (q,a)Q×Σ λ ( q , a ) = d \lambda(q , a) = d λ(q,a)=d表示 M M M在状态 q q q读入字符 a a a时输出 d d d
  • 对于 ∀ a 1 a 2 ⋯ a n ∈ Σ ∗ \forall a_{1} a_{2} \cdots a_{n} \in \Sigma^{*} a1a2anΣ M M M的输出串为 λ ( q 0 , a 1 ) λ ( δ ( q 0 , a 1 ) , a 2 ) ⋯ λ ( δ ( ⋯ δ ( δ ( q 0 , a 1 ) , a 2 ) ⋯ ) , a n ) \lambda(q_{0} , a_{1}) \lambda(\delta(q_{0} , a_{1}) , a_{2}) \cdots \lambda(\delta(\cdots \delta(\delta(q_{0} , a_{1}) , a_{2}) \cdots) , a_{n}) λ(q0,a1)λ(δ(q0,a1),a2)λ(δ(δ(δ(q0,a1),a2)),an),设 δ ( q 0 , a 1 ) = q 1 \delta(q_{0} , a_{1}) = q_{1} δ(q0,a1)=q1 δ ( q 1 , a 2 ) = q 2 \delta(q_{1} , a_{2}) = q_{2} δ(q1,a2)=q2 ⋯ \cdots δ ( q n − 1 , a n ) = q n \delta(q_{n - 1} , a_{n}) = q_{n} δ(qn1,an)=qn,则 M M M的输出可以表示成 λ ( q 0 , a 1 ) λ ( q 1 , a 2 ) ⋯ λ ( q n − 1 , a n ) \lambda(q_{0} , a_{1}) \lambda(q_{1} , a_{2}) \cdots \lambda(q_{n - 1} , a_{n}) λ(q0,a1)λ(q1,a2)λ(qn1,an),这是一个长度为 n n n的串
M o o r e Moore Moore机与 M e a l y Mealy Mealy机等价
  • M o o r e Moore Moore M 1 = ( Q 1 , Σ , Δ , δ 1 , λ 1 , q 01 ) M_{1} = (Q_{1} , \Sigma , \Delta , \delta_{1} , \lambda_{1} , q_{01}) M1=(Q1,Σ,Δ,δ1,λ1,q01) M e a l y Mealy Mealy M 2 = ( Q 2 , Σ , Δ , δ 2 , λ 2 , q 02 ) M_{2} = (Q_{2} , \Sigma , \Delta , \delta_{2} , \lambda_{2} , q_{02}) M2=(Q2,Σ,Δ,δ2,λ2,q02)
  • 对于 ∀ x ∈ Σ ∗ \forall x \in \Sigma^{*} xΣ,当 T 1 ( x ) = λ 1 ( q 0 ) T 2 ( x ) T_{1}(x) = \lambda_{1}(q_{0}) T_{2}(x) T1(x)=λ1(q0)T2(x)成立时,称它们是等价的,其中 T 1 ( x ) T_{1}(x) T1(x) T 2 ( x ) T_{2}(x) T2(x)分别表示 M 1 M_{1} M1 M 2 M_{2} M2关于 x x x的输出

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

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

相关文章

pandas详细笔记

一:什么是Pandas from matplotlib import pyplot import numpy as np import pandas as pdarange np.arange(1, 10, 2) series pd.Series(arange,indexlist("ABCDE")) print(series)二:索引 三:切片 位置索引切片(左闭…

【数据结构(七)】查找算法

文章目录 查找算法介绍1. 线性查找算法2. 二分查找算法2.1. 思路分析2.2. 代码实现2.3. 功能拓展 3. 插值查找算法3.1. 前言3.2. 相关概念3.3. 实例应用 4. 斐波那契(黄金分割法)查找算法4.1. 斐波那契(黄金分割法)原理4.2. 实例应用 查找算法介绍 在 java 中,我们…

Linux快速搭建本地yum更新audit

场景:内网一台服务器上线,需要更新audit版本,因无法与其他服务器通信,需临时配置本地仓库。 1、上传新版本操作系统iso到服务器 2、创建yum仓库文件存储目录 mkdir /opt/myrepo 3、挂载磁盘到/mnt mount /opt/Kylin-Server-V…

电脑CentOS 7.6与Windows系统对比:使用方式、优缺点概述

在多操作系统环境中,CentOS 7.6和Windows系统各自独占鳌头,它们在功能、稳定性、兼容性以及安全性等方面都有着各自的优点。这篇文章将对比分析这两个操作系统,以便用户能更好地了解它们的特点和使用方式。 一、使用方式 CentOS 7.6 CentO…

探索Web前端技术的变革与未来发展

Web前端技术作为构建现代互联网应用的重要一环,自诞生以来已经经历了多轮的发展和变革。本文将回顾过去的进展,介绍当前的前端技术栈,并展望未来前端领域的发展趋势,包括新兴技术和重要概念。 引言 在信息时代的快速发展的背景下&…

【剑指offer|图解|位运算】训练计划VI+撞色搭配

🌈个人主页:聆风吟 🔥系列专栏:数据结构、剑指offer每日一练 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️训练计划VI(题目难度:中等)1.1 题目1.2 示例1.3 …

读书笔记-《数据结构与算法》-摘要3[选择排序]

选择排序 核心:不断地选择剩余元素中的最小者。 找到数组中最小元素并将其和数组第一个元素交换位置。在剩下的元素中找到最小元素并将其与数组第二个元素交换,直至整个数组排序。 性质: 比较次数(N-1)(N-2)(N-3)…21~N^2/2交换次数N运行…

基于ssm vue的风景文化管理平台源码和论文

摘 要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,基于vue的木里风景文化管理平台也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对…

SpringBoot集成mail发送邮件

前言 发送邮件功能,借鉴 刚果商城,根据文档及项目代码实现。整理总结便有了此文,文章有不对的点,请联系博主指出,请多多点赞收藏,您的支持是我最大的动力~ 发送邮件功能主要借助 mail、freemarker以及rocke…

CoreDNS实战(七)-日志处理

本文主要用于介绍CoreDNS用来记录日志的几种方式以及在生产环境中遇到的一些问题和解决方案。 1 log插件 coredns的日志输出并不如nginx那么完善(并不能在配置文件中指定输出的文件目录,但是可以指定日志的格式),默认情况下不论…

【Midjourney实战】| 新年礼盒元素设计

文章目录 1 初步提示词2 润色提示词3 提示词发散联想 这期实践任务,我们想去做一个新年礼盒的效果,最后我们想把不同元素拼在一起,方便后期进行新年的相关设计 1 初步提示词 提示词初步我们乍一想,肯定要包括主体元素礼盒 新年礼…

Verilog基础:$time、$stime和$realtime系统函数的使用

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html $time、 $stime和$realtime这三个系统函数提供了返回当前仿真时间方法。注意,这里的仿真时间的最小分辨能力是由仿真时间精度决定的,简单来说,可以理解为…

gpt阅读论文利器

1. txyz.ai 读论文 严伯钧 3. consensus 两亿科学论文的资源库. 用英文. 中国经济发展, 美国加州没有,减肥没有. 2. chrome插件 gpt sidebar 3. gpt academic 论文润色和学术翻译 ,一键输出公式. 英语口语8000句. 托福备考计划表. 百词斩托福. 薄荷外刊. 分区笔记精读法.…

【STM32】EXTI外部中断

1 中断系统 1.1 中断简介 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。 比如&a…

GSLB是什么?谈谈对该技术的一点理解

GSLB是什么?它又称为全局负载均衡,是主流的负载均衡类型之一。众所周知,负载均衡位于服务器的前面,负责将客户端请求路由到所有能够满足这些请求的服务器,同时最大限度地提高速度和资源利用率,并确保无任何…

AIGC发展史

1 AIGC概况 1.1 AIGC定义 AIGC(AI Generated Content)是指利用人工智能技术生成的内容。它也被认为是继PGC,UGC之后的新型内容生产方式,AI绘画、AI写作等都属于AIGC的具体形式。2022年AIGC发展速度惊人,迭代速度更是呈现指数级发…

揭秘接口测试的必备基础知识!

这一篇讲接口测试的基础,如果你还在做手工测试,你可以从这里开始入门,做接口测试是最容易的一种自动化测试。 一、接口测试是什么 首先要理解接口测试就是测接口,如图所示: 让我们以数据驱动的视角来看接口测试&#…

AI生成视频-Pika

背景介绍 Pika 是一个使用 AI 生成和编辑视频的平台。它致力于通过 AI 技术使视频制作变得简单和无障碍。 Pika 1.0 是 Pika 的一个重大产品升级,包含了一个新的 AI 模型,可以在各种风格下生成和编辑视频,如 3D 动画,动漫,卡通和电影风格。…

亚马逊云科技向量数据库与生成式AI的完美融合:落地实践详解(四)

以往 OpenSearch 摄入时的一些最佳实践中并不包含 knn 的情况,所以在 knn 索引存在的情况,不能完全参照之前的结论,通过以上三种不同的实验方式,在多次实验的过程中,本文得到了以下的一些实践经验和结论,供…

java中 list.size() = 1 但显示 All elements are null

一、问题描述 serve层定义一个对象集合接收mybatis返回的结果,查询结果为空,但是接收集合对象长度却为1,集合内部显示All elements are null;导致在直接调用list集合中一些方法时导致报错java.lang.NullPointerException: null …