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

news2024/11/29 6:28:53

文章目录

前导


《形式语言与自动机理论(第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.coloradmin.cn/o/1286281.html

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

相关文章

站点可靠性工程SRE最佳实践 -- 黄金监控信号

延迟、流量、错误率、饱和度这四大黄金信号是SRE的最佳实践,可用来帮助SRE团队快速评估系统状态,在异常情况下及时介入,保证系统始终工作在健康状态。原文: Four Golden Signals Of Monitoring: Site Reliability Engineering (SRE) Metrics[…

创建 Python Docker 镜像的完整指南

更多资料获取 📚 个人网站:ipengtao.com Python和Docker是两个极其流行的技术,结合它们可以创建强大的应用程序。Docker允许将应用程序及其依赖项打包到一个独立的容器中,而Python则提供了丰富的库和工具来开发应用程序。本文将提…

群晖NAS配置之自有服务器ngrok实现内网穿透

群晖NAS配置之自有服务器ngrok实现内网穿透 前言-内网穿透 内网穿透是指通过一种技术让外部网络可以访问到内网的NAS设备,这样即使在不同网络环境下,也能够远程访问和管理NAS设备。以下是一些常见的内网穿透方案: Synology官方提供的Quick…

华盛顿特区警方推荐购买 AirTag防止高端夹克被窃

根据美国媒体 Fox5 报道,近期由于天气变冷,华盛顿特区已发声多起高端 Canada Goose 夹克被窃事件。这些被偷走的加拿大鹅夹克价格从几百到几千美元不等,“Canada Goose”LOGO较为明显,很容易被小偷发现。 对此,警方建…

nodejs+vue+elementui校园演出赞助艺术资源管理系统

系统主要分为系统管理员和学生、校外人员三个部分,系统管理员主要功能包括:首页、个人中心、学生管理、校外人员管理、社团信息管理、校内演出管理、校外商演管理、系统管理;基本上实现了整个基于vue的校园艺术资源管理系统的设计与实现信息管…

SpringBoot3-快速体验

1、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…

Linux性能系统学习之监控工具

目录 前言linux性能度量标准监控工具topuptimeps/pstreefreempstatvmstat 前言 在实际产品开发过程中遇到一些莫名其妙的问题&#xff0c;比如swap交换分区随着时间增多影响到系统调用&#xff0c;或CPU占用以及内存的监测等&#xff0c;所以有必要系统了解Linux的性能问题。 …

CUDA简介——For循环并行化

1. 引言 前序博客&#xff1a; CUDA简介——基本概念CUDA简介——编程模式 kernel相关语法定义为&#xff1a; kernel函数定义&#xff0c;与常规C函数定义类似。不同之处在于&#xff0c;有__global__关键字。 为说明符&#xff0c;告诉编译器该函数应编译运行在device上&a…

极客大挑战2023 Reverse wp

文章目录 [toc] shiftjmp点击就送的逆向题幸运数字flower-or-tea小黄鸭mySelfeasymath听说cpp很难&#xff1f;砍树浪漫至死不渝是男人就来扎针ezandroid shiftjmp 64bit的ELF文件&#xff0c;IDA打开 考察花指令去除、将E9 nop掉 EXP&#xff1a; enc [ 0x53, 0x58, 0x41, 0…

面向注解编程—Spring 注解看这一篇就够了(2)

面向注解编程—Spring注解大全&#xff08;AOP篇&#xff09; AOP英文全称&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程、面向方面编程&#xff09;&#xff0c;其实说白 了&#xff0c;面向切面编程就是面向特定方法编程。 AOP的作用&#xff1a;在程序…

【好书推荐】Flutter入门经典

目录 作者简介内容简介文章详解介绍《Flutter入门经典》读者对象《Flutter入门经典》内容要点《Flutter入门经典》内容结构第I部分&#xff1a;Flutter编程基础第II部分&#xff1a;充当媒介的Flutter&#xff1a;具象化一个应用第III部分&#xff1a;创建可用于生产环境的应用…

广州数字孪生赋能工业制造,加速推进制造业数字化转型

广州数字孪生赋能工业制造&#xff0c;加速推进制造业数字化转型。数字孪生系统基于历史数据、实时数据&#xff0c;采用人工智能、大数据分析等新一代信息技术对物理实体的组成、特征、功能和性能进行数字化定义和建模。通过构建在信息世界对物理实体的等价映射&#xff0c;对…

Geodesic in Heat: 一种测地线计算方法

在之前的博客中&#xff0c;我已经介绍过了使用Fast Marching算法计算测地线。Fast Marching的好处是实现简单&#xff0c;方便扩展在点云上。但是缺点是精度不够&#xff0c;求解不平滑。早在2013年&#xff0c;Crane et al. [1]就已经提出利用热流来估算测地距离。我很早就知…

深入理解Java核心技术:Java工程师的实用干货笔记

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在Java工程师的职业生涯中&#xff0c;深入理解…

使用C语言创建高性能网络爬虫IP池

目录 一、引言 二、IP池的设计 1、需求分析 2、架构设计 3、关键技术 三、IP池的实现 1、存储实现 2、调度实现 3、通信实现 4、异常处理实现 四、代码示例 五、性能优化 六、测试与分析 七、结论 一、引言 随着互联网的快速发展&#xff0c;网络爬虫成为了获取…

日志JavaAgent-NoClassDefFoundError

一、引言 组内最近做了一个日志公共组件&#xff0c;用的是javaagent的方式&#xff0c;之前搞的maven jar包每次都要把所有系统都发一遍&#xff0c;太麻烦。 javaagent通过Java虚拟机&#xff08;JVM&#xff09;的Instrumentation API来实现代码的侵入。通过Instrumentation…

matlab diff和gradient

gradient 求解梯度。 示例 FX gradient(F) 返回向量 F 的一维数值梯度。输出 FX 对应于 ∂F/∂x&#xff0c;即 x&#xff08;水平&#xff09;方向上的差分。点之间的间距假定为 1。 使用方法&#xff1a; x -2:0.2:2; y x’; z x .* exp(-x.^2 - y.^2); [px,py] gradien…

K8S部署nginx并且使用NFS存储数据

安装NFS 在master安装NFS systemctl start nfs-server修改配置 /etc/exports /data *(rw,no_root_squash,no_all_squash,sync)目录为 /data 允许所有地址访问 验证下 [rootmaster nginx]# showmount -e 192.168.57.61 Export list for 192.168.57.61: /data *共享可以正常…

1.uniapp基础

1.uniapp基础 官方文档&#xff1a;uni-app官网 1.1开发工具 &#xff08;1&#xff09;工具&#xff1a; HBuilderX HBuilderX-高效极客技巧 1.2 新建项目 &#xff08;1&#xff09; 文件》新建项目 ​ &#xff08;2&#xff09;选择相应的配置信息&#xff0c;填写项目根路…

python超详细基础文件操作【建议收藏】

文章目录 前言1 文件操作1.1 文件打开与关闭1.1.1 打开文件1.1.2 关闭文件 1.2 访问模式及说明 2 文件读写2.1 写数据&#xff08;write&#xff09;2.2 读数据&#xff08;read&#xff09;2.3 读数据&#xff08;readlines&#xff09;2.3 读数据&#xff08;readline&#x…