词法分析前置知识 题型分析

本文详细探讨了有限自动机与正规表达式之间的转换,包括NFA转化为DFA的方法子集构造法,正则文法转化为NFA,DFA转化为正规文法的方程法,以及正规表达式如何转化为有限自动机。此外,还介绍了消除ε转换的NFA构造方法,以及DFA的化简过程,如填表法和等价替换。
摘要由CSDN通过智能技术生成

题型分类

NFA    ⟹    \implies DFA

方法:子集构造法

例:设NFA M = ( Σ , Q , q 0 , F , δ ) M=(\Sigma,Q,q_0,F,\delta) M=(Σ,Q,q0,F,δ),其中 Q Q Q={ q 0 q_0 q0, q q q}, T T T={ a a a, b b b}, Σ \Sigma Σ={ q q q}, δ \delta δ如表所示, M M M的状态转换图。找出等效的DFA M D M_D MD

a a a b b b
q 0 q_0 q0 { q 0 q_0 q0, q q q} { q q q}
q q q ϕ \phi ϕ { q 0 q_0 q0, q q q}

在这里插入图片描述

Sol. 构造一个接受 L L L ( ( ( M M M ) ) )的DFA L L L ( ( ( M D M_D MD ) ) )= ( Σ D , Q D , q 0 D , F , δ D ) (\Sigma_D,Q_D,q_{0D},F,\delta_D) (ΣD,QD,q0D,F,δD),其中
Q D = ( [ q 0 ] , [ q ] , [ q 0 , q ] , ϕ ) Q_D=([q_0],[q],[q_0,q],\phi) QD=([q0],[q],[q0,q],ϕ) q 0 D = [ q 0 ] q_{0D}=[q_0] q0D=[q0] F D = ( [ q ] , [ q 0 , q ] ) F_D=([q],[q_0,q]) FD=([q],[q0,q]) δ D \delta_D δD的定义如下,
由于 δ \delta δ ( ( ( q 0 q_0 q0, a a a ) ) )={ q 0 q_0 q0, q q q},则有 δ D \delta_D δD ( ( ([ q 0 q_0 q0, a a a] ) ) )= [ [ [ q 0 q_0 q0, q q q ] ] ];
由于 δ \delta δ ( ( ( q 0 q_0 q0, b b b ) ) )={ q q q},则有 δ D \delta_D δD ( ( ([ q 0 q_0 q0, b b b] ) ) )= [ [ [ q q q ] ] ];
由于 δ \delta δ ( ( ( q q q, a a a ) ) )= ϕ \phi ϕ,则有 δ D \delta_D δD ( ( ([ q q q, a a a] ) ) )= ϕ \phi ϕ;
由于 δ \delta δ ( ( ( q q q, b b b ) ) )={ q 0 q_0 q0, q q q},则有 δ D \delta_D δD ( ( ([ q q q, b b b] ) ) )={ q 0 q_0 q0, q q q};
由于 δ \delta δ ( ( ({ q 0 q_0 q0, q q q}, a a a ) ) )= δ \delta δ ( ( ( q 0 q_0 q0, a a a ) ) ) ⋃ \bigcup δ \delta δ ( ( ( q q q, a a a ) ) )={ q 0 q_0 q0, q q q} ⋃ \bigcup ϕ \phi ϕ={ q 0 q_0 q0, q q q},则有 δ D \delta_D δD ( ( ([ q 0 q_0 q0, q q q], a a a ) ) )= [ [ [ q 0 q_0 q0, q q q ] ] ];
由于 δ \delta δ ( ( ({ q 0 q_0 q0, q q q}, b b b ) ) )= δ \delta δ ( ( ( q 0 q_0 q0, b b b ) ) ) ⋃ \bigcup δ \delta δ ( ( ( q q q, b b b ) ) )={ q q q} ⋃ \bigcup { q 0 q_0 q0, q q q}={ q 0 q_0 q0, q q q},则有 δ D \delta_D δD ( ( ([ q 0 q_0 q0, q q q], b b b ) ) )= [ [ [ q 0 q_0 q0, q q q ] ] ]
因此,DFA M D M_D MD的状态转换图如图所示

在这里插入图片描述

ϵ \epsilon ϵ-NFA    ⟹    \implies NFA

方法: ϵ \epsilon ϵ闭包法

  • 首先对应有 ϵ \epsilon ϵ转换的NFA M M M={ Σ , Q , q 0 , F , δ \Sigma,Q,q_0,F,\delta Σ,Q,q0,F,δ},构造无 ϵ \epsilon ϵ转换的NFA M 1 M_1 M1={ Σ , Q , q 0 , F 1 , δ 1 \Sigma,Q,q_0,F_1,\delta_1 Σ,Q,q0,F1,δ1}
  • F 1 = { F ⋃ { q 0 } , 当 ϵ − c l o s u r e ( q 0 ) 含 F 的一个状态 F , 否则 F_1=\begin{cases} F\bigcup\{q_0\}, & \text {当$\epsilon-closure(q_0)$含$F$的一个状态} \\ F, & \text{否则} \end{cases} F1={ F{ q0},F,ϵclosure(q0)F的一个状态否则
  • 定义 δ 1 \delta_1 δ1:对任意 q ∈ Q , a ∈ Σ q\in{Q},a\in{\Sigma}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值