文章目录
- @[toc]
- 前导
- 《形式语言与自动机理论(第4版)》笔记(一)
- 第三章:有穷状态自动机
- 3.1|语言的识别
- 3.2|有穷状态自动机
- 即时描述
- s e t ( ) set() set()
- 例题
-
- 3.3|不确定的有穷状态自动机
-
- 3.4|带空移动的有穷状态自动机
- 带空移动的不确定有穷状态自动机 ε − N F A \varepsilon-NFA ε−NFA
- ε − N F A \varepsilon-NFA ε−NFA与 N F A NFA NFA等价
- 构造与 M 1 M_{1} M1等价的 N F A M 2 NFA \ M_{2} NFA M2
- 证明:对 ∀ 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 ∈ Σ + , δ 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=∅
- 证明: ε ∈ L ( M 1 ) ⇔ ε ∈ L ( M 2 ) \varepsilon \in L(M_{1}) \Leftrightarrow \varepsilon \in L(M_{2}) ε∈L(M1)⇔ε∈L(M2)
- 例题
- 问题
- 解答
- 3.5|FA是正则语言的识别器
-
- 3.6|FA的一些变形
-
文章目录
- @[toc]
- 前导
- 《形式语言与自动机理论(第4版)》笔记(一)
- 第三章:有穷状态自动机
- 3.1|语言的识别
- 3.2|有穷状态自动机
- 即时描述
- s e t ( ) set() set()
- 例题
- 3.3|不确定的有穷状态自动机
- 3.4|带空移动的有穷状态自动机
- 带空移动的不确定有穷状态自动机 ε − N F A \varepsilon-NFA ε−NFA
- ε − N F A \varepsilon-NFA ε−NFA与 N F A NFA NFA等价
- 构造与 M 1 M_{1} M1等价的 N F A M 2 NFA \ M_{2} NFA M2
- 证明:对 ∀ 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 ∈ Σ + , δ 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=∅
- 证明: ε ∈ L ( M 1 ) ⇔ ε ∈ L ( M 2 ) \varepsilon \in L(M_{1}) \Leftrightarrow \varepsilon \in L(M_{2}) ε∈L(M1)⇔ε∈L(M2)
- 例题
- 问题
- 解答
- 3.5|FA是正则语言的识别器
- 3.6|FA的一些变形
前导
《形式语言与自动机理论(第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 xqay⊢xapy
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 ∀q∈Q,能引导 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)={x∣x∈Σ∗,δ(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 同余} {x∣x∈{0,1}∗,且当把x看成二进制数时,x模3与0同余}
解答
状态说明 | 状态 | 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={x∣x∈{0,1}∗,且对x中任意一个长度不大于5的子串a1a2⋯an,a1+a2+⋯+an≤3(n≤5)}
解答
-
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[a1a2⋯ai]∣a1,a2,⋯,ai∈{0,1}且1≤i≤5且a1+a2+⋯+ai≤3}
-
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+a≤3a1+a2+a3+a>3δ(q[a1a2a3a4],a)={q[a1a2a3a4a],qt,a1+a2+a3+a4+a≤3a1+a2+a3+a4+a>3δ(q[a1a2a3a4a5],a)={q[a2a3a4a5a],qt,a2+a3+a4+a5+a≤3a2+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
构造方式
- 先只把开始状态 [ 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 q∈Q
-
ε − C L O S U R E ( q ) = { p ∣ 从 q 到 p 有一条标记为 ε 的路 } \varepsilon-CLOSURE(q) = \set{p \mid 从 q 到 p 有一条标记为 \varepsilon 的路} ε−CLOSURE(q)={p∣从q到p有一条标记为ε的路}
-
δ ^ ( 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({p∣∃q∈δ^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} F⊆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 ≠ ∅ \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 q0∈F,则 δ ^ 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} q0∈F2,所以 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} F⊆F2,所以 q f ∈ F 2 q_{f} \in F_{2} qf∈F2,从而 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=∅
- 设 δ 2 ( q 0 , x ) ∩ F 2 ≠ ∅ \delta_{2}(q_{0} , x) \cap F_{2} \neq \emptyset δ2(q0,x)∩F2=∅,则有以下两种情况
证明: ε ∈ 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} q0∈F2,所以 δ 2 ( q 0 , ε ) = q 0 ∈ F 2 \delta_{2}(q_{0} , \varepsilon) = q_{0} \in F_{2} δ2(q0,ε)=q0∈F2,表明 ε ∈ 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,ε)=q0∈F2,只能有以下两种情况
- 第一种情况: q 0 ∈ F q_{0} \in F q0∈F,此时 ε ∈ 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 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,ε)=q0∈F2,只能有以下两种情况
- 故 ε ∈ 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
解答
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={q→ap∣δ(q,a)=p}∪{q→a∣δ(q,a)=p∈F}
证明: 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^{+} a1a2⋯an∈Σ+, 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+a1a2⋯an⇔q0→a1q1,q1→a2q2,⋯,qn−1→an∈P⇔δ(q0,a1)=q1,δ(q1,a2)=q2,⋯,δ(qn−1,an)=qn∈F⇔δ(q0,a1a2⋯an)=qn∈F
- 所以 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) a1a2⋯an∈L(G)⇔a1a2⋯an∈L(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 q0∈F,存在正则文法 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)={{B∣A→aB∈P}∪{Z},{B∣A→aB∈P},如果A→a∈P如果A→a∈/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^{+} a1a2⋯an∈T+, 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} a1a2⋯an∈T+⇔S+a1a2⋯an⇔S⇒a1A1⇒a1a2A2⇒⋯⇒a1a2⋯an⇔S→a1A1,A1→a2A2,⋯,An−1→an∈P⇔A1∈δ(S,a1),A2∈δ(A1,a2),⋯,Z∈δ(An−1,an)⇔Z∈δ(S,a1a2⋯an)⇔a1a2⋯an∈L(M)
- 即对于 ∀ x ∈ T + \forall x \in T^{+} ∀x∈T+, x ∈ L ( G ) ⇔ x ∈ L ( M ) x \in L(G) \Leftrightarrow x \in L(M) x∈L(G)⇔x∈L(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 A→a的产生式, A ∈ δ ( Z , a ) A \in \delta(Z , a) A∈δ(Z,a)
- 形如 A → B a A \rightarrow Ba A→Ba的产生式, δ ( 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 B→Aa
- 如果 δ ( A , a ) = B \delta(A , a) = B δ(A,a)=B,且 A A A是开始状态,则有产生式 B → a B \rightarrow a B→a
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 ∀q∈Q, λ ( 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^{*} ∀a1a2⋯an∈Σ∗, 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} δ(qn−1,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^{*} ∀a1a2⋯an∈Σ∗, 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} δ(qn−1,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)⋯λ(qn−1,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的输出