《形式语言与自动机理论(第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 3.4 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 3.5 3.5| F A FA 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| F A FA 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.mfbz.cn/a/218505.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习——logistic回归

在之前实验接触到的机器学习算法都是的目的都是对数据集进行分类,即预测得到的结果是数据样本所属的类别,预测输出结果是离散的集合,比如{‘是’,‘不是’}。这次实验学习的是回归模型,与分类模型不同的是,…

邻接矩阵深度优先遍历

深度优先遍历(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。这个算法会尽可能深地搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。 在用邻接矩阵表示的图中进行深度优先遍历…

第N个泰波那锲数

1.题目解析 动态规划算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 为了填写当前状态的时候,所需要的状态已经计算过了!!! 5.返回值 题目要求 状态表示 ------------------------------------------------------…

单机游戏推荐:巨击大乱斗 GIGABASH 中文安装版

在泰坦之中称霸天下吧!《GigaBash 巨击大乱斗》是一款多人战斗擂台游戏,有着受特摄片启发的巨型怪兽,具有传奇色彩的英雄,震天动地的特别攻击,以及可以完全摧毁的擂台场景。 ​游戏特点 怪物大解放 多达10个独特的角…

U2 文法和语言

文章目录 一、预备知识1、字母表和符号串2、符号串形式定义3、符号串相等4、延申 二、文法1、 一些概念2、文法的定义3、推导的形式定义4、规范推导5、语言的形式定义6、递归文法7、BNF范式总结 三、短语、简单短语和句柄四、语法树(推导树)1、概念2、语法树推导--句型的推导3、…

AI Agent 结构与分类

一、什么是AI agent 在人工智能中,智能代理AI Agent是以智能方式行事的代理;它感知环境,自主采取行动以实现目标,并可以通过学习或获取知识来提高其性能。人其实就是一种复杂代理。 为了理解智能代理的结构,我们应该熟…

C++面试宝典第2题:逆序输出整数

题目 写一个方法,将一个整数逆序打印输出到控制台。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如:123的逆序输出为321,8600的逆序输出为68,-609的逆序输出为-906。 解析 这道题本身并没有什么…

17、pytest自动使用fixture

官方实例 # content of test_autouse_fixture.py import pytestpytest.fixture def first_entry():return "a"pytest.fixture def order():return []pytest.fixture(autouseTrue) def append_first(order, first_entry):return order.append(first_entry)def test_s…

04数据平台Flume

Flume 功能 Flume主要作用,就是实时读取服务器本地磁盘数据,将数据写入到 HDFS。 Flume是 Cloudera提供的高可用,高可靠性,分布式的海量日志采集、聚合和传输的系统工具。 Flume 架构 Flume组成架构如下图所示: A…

SSM项目实战-前端-在Index.vue中展示第一页数据

1、util/request.js import axios from "axios";let request axios.create({baseURL: "http://localhost:8080",timeout: 50000 });export default request 2、api/schedule.js import request from "../util/request.js";export let getSchedu…

力扣刷题day1(两数相加,回文数,罗马数转整数)

题目1:1.两数之和 思路1和解析: //1.暴力枚举解法(历遍两次数组,时间复杂度O(N^2),空间复杂度O(1) int* twoSum(int* nums, int numsSize, int target, int* returnSize) {for (int i 0; i &…

【恋上数据结构】二叉堆学习笔记

二叉堆 需求分析 Top K 问题 什么是 Top K 问题? 从海量数据中找出前 K 个数据。 比如:从 100 万个整数中找出最大的 100 个整数Top K 问题的解法之一:可以用数据结构 “堆” 来解决。 堆 堆是一种【完全二叉树】,可以分为【…

SpringBoot自定义异常处理机制

说明:在完整的项目结构中,我们通常会创建一套自定义的异常处理机制,在系统可能出现异常的地方手动抛出这些异常,可以快速定位到异常代码片段,提高系统的可维护性。 本文介绍在SpringBoot项目中,搭建一套自…

2023.12.1 --数据仓库之 拉链表

目录 什么是拉链表 为什么要做拉链表? 没使用拉链表: 使用了拉链表: 题中订单拉链表的形成过程 实现语句 什么是拉链表 拉链表是缓慢渐变维的一种解决方案. 拉链表,记录每条信息的生命周期,一旦一条记录的生命周期结束,就重新开始一条新的记录,并把当前日期放入生效开始…

EI论文复现:基于组合双向拍卖的共享储能机制研究程序代码!

本程序参考EI期刊论文《基于组合双向拍卖的共享储能机制研究》,文中的组合双向拍卖交易机制较为新颖,本质上属于博弈范畴,共享储能是目前的研究热点,牵涉到共享储能参与者的投标策略和收益函数,文中所提模型可为电力市…

【兔子王赠书第10期】零基础入门Python,看这篇就够啦!

文章目录 写在前面推荐图书前言为什么要学习编程如何学习编程本书内容获得帮助 推荐理由粉丝福利写在后面 写在前面 粉丝福利第10期来啦,本期博主给大家推荐一本非常适合零基础入门Python的图书:《Python超能学习手册》,祝大家读完本书后都可…

深入微服务架构 | 微服务与k8s架构解读

微服务项目架构解读 ① 什么是微服务? 微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。 微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。也就是说&…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之linux存储管理(5)》(21)

《Linux操作系统原理分析之linux存储管理(5)》(21) 6 Linux存储管理6.6 Linux 物理空间管理6.6.1 Linux 物理内存空间6.6.2 物理页面的管理6.6.3 空闲页面管理——buddy 算法 6.7 内存的分配与释放6.7.1 物理内存分配的数据结构 6…

运维工具之MobaXterm工具安装和使用

一、MobaXterm工具简介 MobaXterm是远程计算的终极工具箱。在一个Windows应用程序中,它提供了大量的功能,这些功能是为程序员、网站管理员、it管理员以及几乎所有需要以更简单的方式处理远程工作的用户量身定制的。MobaXterm在一个开箱即用的可移植exe文…

ros2与stm32通讯比较优秀的串口库

这个是我确定的串口库:serial: serial::Serial Class Reference (wjwwood.io) 我也不知道其他的串口库了,我就知道几个,然后我觉得这个是3个里面学习周期比较短,然后质量比较可靠的库 我隐隐觉得这个串口库就是ros1选择的串口库…
最新文章