【形式语言与自动机】【《形式语言与自动机理论(第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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

构造方式
  • 先只把开始状态 [ 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值