文章目录
-
- @[toc]
-
- 3.1|语言的识别
- 3.2|有穷状态自动机
-
- 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]
-
- 3.1|语言的识别
- 3.2|有穷状态自动机
- 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的一些变形
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 \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+a≤3a1+a2+a3+a>3={ q[a1a2a3a4a],qt,a1+a2+a3+a4+a≤3a1+a2+a3+a4+a>3={ q[a2a3a4a5a],qt,a2+a3+a4+a5+a≤3a2+a3+a4+a5+a>3
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 |
|---|

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



