当前位置: 首页 > article >正文

《形式语言与自动机理论(第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 \begin{aligned} \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} \end{aligned} δ(q[ε],a1)δ(q[a1],a2)δ(q[a1a2],a3)δ(q[a1a2a3],a)δ(q[a1a2a3a4],a)δ(q[a1a2a3a4a5],a)δ(qt,a)=qt=q[a1]=q[a1a2]=q[a1a2a3]={q[a1a2a3a],qt,a1+a2+a3+a3a1+a2+a3+a>3={q[a1a2a3a4a],qt,a1+a2+a3+a4+a3a1+a2+a3+a4+a>3={q[a2a3a4a5a],qt,a2+a3+a4+a5+a3a2+a3+a4+a5+a>3


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.kler.cn/a/160578.html

相关文章:

  • 新版 idea 编写 idea 插件时,启动出现 ClassNotFound
  • js 获取某日期到现在的时长 js 数字补齐2位
  • WPF学习之路,控件的只读、是否可以、是否可见属性控制
  • 【前端学习指南】Vue computed 计算属性 watch 监听器
  • Kafka参数了解
  • 人脸识别技术:从算法到深度学习的全面解析
  • elment-ui部分ui组件在移动端也能实现自适应
  • Altair推出 Altair RapidMiner 2023 平台,提供生成式 AI 功能
  • 【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第一次作业
  • 【前端设计模式】之工厂模式
  • 文档一键黏贴供应商
  • sql常用语法练习
  • WTV380语音芯片赋能电蒸锅:智能声音提示与数码管显示驱动引领未来厨房革新
  • linux的磁盘管理
  • 基于PicGo实现Typora图片自动上传GitHub
  • 【EI会议征稿中】第三届信号处理与通信安全国际学术会议(ICSPCS 2024)
  • 五花八门客户问题(BUG) - 重复打印
  • 华为配置流量抑制示例
  • linux逻辑卷LVM
  • 【LeetCode刷题】-- 79.单词搜索
  • 机器学习之布谷鸟搜索算法(Cuckoo Search Algorithm,CSA)剖析
  • 【MySQL】:数据库基本认识
  • 【网络奇缘】- 计算机网络|深入学习物理层|网络安全
  • HarmonyOS4.0从零开始的开发教程01运行Hello World
  • Linux(centos)学习笔记(初学)
  • git 分支的创建与删除