离散数学(形式语言与自动机)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17
用ε-NFA模拟右线性文法 模拟右线性文法
设右线性文法G=〈 设右线性文法 〈V,T,S,P 〉 ε-NFA M=〈Q,Σ,δ, q0 , F 〉构造如下 构造如下: 〈 Q=V∪{qf }, q0={S}, F={qf }, ∪ Σ={ α∈T *-{ε} | 存在 存在A→αB∈P或A→α∈P } ∈ ∈ 或 ∈ ∀A∈V和α∈Σ∪{ε}, ∈ 和 ∈ ∪ 中含有B; 若A→αB∈P, 则δ(A, α)中含有 ∈ 中含有 中含有q 若A→α∈P, 则δ(A, α)中含有 f; ∈ 中含有 ∀α∈Σ∪{ε}, δ(qf ,α)= ∅ ∈ ∪
14
模拟实例——例3(续) 例 续 模拟实例
ε-NFA M
δ →q0 q1 *q2 0 1 ε {q1} ∅ {q2} ∅ {q2} ∅ ∅ ∅ {q0}
DFA M′ ′
δ′ ′ →*{q0,q2} {q1} ∅ 0 1 {q1} ∅ ∅ {q0,q2} ∅ ∅
ε
ε
L(M)=L(M′)={ (01)n | n≥0 } ′ ≥
18
模拟实例
G =〈V,T,S,P 〉 〈 V={A,S} T={0,1} P: S→11S S→11A A→0A A→ε ε-NFA M=〈Q,Σ,δ, S, {qf} 〉 〈 Q ={A, S, qf} Σ ={11, 0} δ →S A *qf 11 0 ε ∅ {qf} ∅
{S,A} ∅ ∅ {A} ∅ ∅
δ ′( A, a ) =
∪ δ ( p, a )
p∈A
9
模拟实例
NFA M 0 1 δ →q0 {q0, q1} {q0} q1 {q2} ∅ *q2 ∅ ∅ DFA M′ ′ 0 δ′ ′ {q0, q1} →{q0} {q1} {q2} *{q2} ∅ {q0,q1} {q0,q1,q2} *{q0,q2} {q0,q1} *{q1,q2} {q2} *{q0,q1,q2} {q0,q1,q2} ∅ ∅ 1 {q0} ∅ ∅ {q0} {q0} ∅ {q0} ∅
q∈ A
构造DFA M′时不需要对不可达状态进行计算 做法如下 从q0′= 做法如下: 构造 ′ 不需要对不可达状态进行计算,做法如下 E(q0)开始 对每一个 ∈Σ计算 ′的值 然后对每一个新出现的子 开始, 计算δ′ 开始 对每一个a∈ 计算 的值, 集计算δ′的值, 重复进行, 直至没有新的子集出现为止. 集计算 ′的值 重复进行 直至没有新的子集出现为止
10
模拟实例 (续) 续
不可达状态:从初始状态出发永远不可能达到的状态 不可达状态 从初始状态出发永远不可能达到的状态 删去所有的不可达状态, 不会改变FA接受的语言 接受的语言. 删去所有的不可达状态 不会改变 接受的语言 如M′中的 1},{q2},{q0,q2},{q1,q2}和∅都是不可达状态 ′中的{q 和 都是不可达状态, 删去这些状态得到M′′ 删去这些状态得到 ′′ 0 1 δ′′ ′′ {q0, q1} {q0} →{q0} {q0,q1} {q0,q1,q2} {q0} *{q0,q1,q2} {q0,q1,q2} {q0}
12
模拟ε-NFA 用DFA模拟 模拟
设ε-NFA M=〈Q,Σ,δ,q0,F 〉, q∈Q 〈 ∈ q的ε闭包 闭包E(q): 从q出发 经过 转移能够到达的所 出发, 的 闭包 出发 经过ε转移能够到达的所 有状态, 有状态 递归定义如下 (1) E(q)包含 包含q; 包含 (2) 如果 ∈E(q), 则δ(p, ε)⊆E(q). 如果p∈ ⊆ 例3 ε-NFA M q E(q) 0 1 ε δ q0 {q0,q2} →q0 {q1} ∅ {q2} q1 {q1} q1 ∅ {q2} ∅ q2 {q0,q2} *q2 ∅ ∅ {q0}
7
例2 (续) 续
δ*(q0 ,w) w 1 {q0, q1} 10 {q0, q3} 101 {q0, q1} 1011 {q0, q1 , q2} 10110 {q0, q2 , q3} L(G) = { x00y, x11y | x,y∈{0,1}*} ∈
8
DFA与NFA的等价性 与 的等价性
13
用DFA模拟ε-NFA(续) 模拟 续
模拟的方法与用DFA模拟不带 的NFA的方法基本相同 模拟不带ε的 的方法基本相同, 模拟的方法与用 模拟不带 的方法基本相同 只是要用E(q)代替 代替q. 只是要用 代替 用DFA M′=〈Q′,Σ,δ′,q0′,F′ 〉模拟 ′ 〈 ′ ′ ′ 模拟ε-NFA M=〈Q,Σ,δ,q0,F 〉 〈 Q′=P(Q), q0′=E(q0) ′ F ′={A∈Q | A∩F≠∅} ∈ ∅ ∀A∈Q和a∈Σ, ∈ 和 ∈ δ ′( A, a ) = ∪ { r ∈ E ( t ) | ∃p, t使p ∈ E ( q ), t ∈ δ ( p, a )}
6
NFA接受的语言 接受的语言
δ*:Q×Σ*→Q 递归定义如下 ∀q∈Q, a∈Σ 和 w∈Σ* 递归定义如下: ∈ × ∈ ∈ δ*(q,ε)={q} δ*(q,wa)= ∪ δ ( p, a )
p∈ p∈δ ∗ ( q , w )
接受w. 定义 ∀w∈Σ*,如果 *(q0 ,w)∩F≠∅, 则称 接受 ∈ 如果δ ∅ 则称M接受 M接受的字符串的全体称作 接受的语言 记作 接受的字符串的全体称作M接受的语言 接受的字符串的全体称作 接受的语言,记作 L(M), 即 L(M)={ w∈Σ*| δ*(q0 ,w)∩F≠∅ } ∈ ∅
3
DFA接受的语言 续) 接受的语言(续 接受的语言
例1 M= 〈{q0, q1},{a}, δ,q0,{q1}〉 〉 δ(q0, a)=q1, δ(q1, a)=q0
q1 , n为奇数 δ (q0 , a ) = q0 , n为偶数 q0 , n为奇数 n ∗ δ (q1 , a ) = q1 , n为偶数
11
带ε转移的非确定型有穷自动机 转移的非确定型有穷自动机
ε转移 不读如何符号 自动转移状态 转移: 不读如何符号, 自动转移状态. 转移 ε-NFA: δ:Q×(Σ∪{ε})→P(Q) × ∪ 对每一个ε-NFA M 都存在 都存在DFA M ′ 使得 定理 对每一个 L(M)=L(M′) ′ DFA, NFA 和 ε-NFA 接受同一个语言类
∗ n
L(M)={a2k+1 | k∈N} ∈
4
非确定型有穷自动机
定义 非确定型有穷自动机 (NFA) M =〈 Q,Σ,δ,q0,F 〉, 〈 其中 Q,Σ, q0, F 的定义与 DFA 的相同 而 的相同, δ: Q ×Σ→P(Q)
5
实例
一台NFA 例2 一台 δ 0 1 →q0 {q0 , q3} {q0 , q1} q1 ∅ {q2} *q2 {q2} {q2} q3 {q4} ∅ *q4 {q4} {q4}
20
模拟实例
DFA M δ →q0 q1 *q2 0 q1 q2 q0 1 q0 q1 q2 G =〈V,T,S,P〉 〈 〉 V={q0,q1,q2}, T={0,1}, S= q0 P: q0→0q1 q0→1q0 q1→0q2 q1→1q1 q2→0q0 q2→1q2 q2→ε L(M)=L(G), 它们是所有含 它们是所有含3k+2 (k≥0)个0的0,1串组成的集合 ≥ 个 的 串组成的集合
a1 a2 … ai … an
2
DFA接受的语言 接受的语言
扩张到Q× 把δ扩张到 ×Σ*上 δ*:Q×Σ*→Q, 递归定义如下 扩张到 × ∀q∈Q, a∈Σ和w∈Σ* ∈ ∈ 和 ∈ δ*(q,ε)=q δ*(q,wa)= δ(δ*(q,w),a) 接受w. 定义 ∀w∈Σ*,如果 *(q0,w)∈F, 则称 M接受 ∈ 如果δ ∈ 接受 M接受的字符串的全体称作 接受的语言 记作 接受的字符串的全体称作M接受的语言 接受的字符串的全体称作 接受的语言,记作 L(M), 即 L(M)={ w∈Σ*| δ*(q0,w)∈F } ∈ ∈
对每一个NFA M 都存在 都存在DFA M ′使得 定理 对每一个 L(M)=L(M ′)
用M′=〈Q′,Σ,δ′,q0′,F′ 〉 模拟 M=〈Q,Σ,δ,q0,F 〉 ′ 〈 ′ ′ ′ 〈 Q′=P(Q), q0′={q0} ′ F′={ A∈Q | A∩F≠∅} ′ ∈ ∅ ∀A∈Q 和 a∈Σ, ∈ ∈
11.2 有穷自动机
确定型有穷自动机(DFA) 确定型有穷自动机 非确定型有穷自动机(NFA) 非确定型有穷自动机 转移的NFA(ε-NFA) 带ε转移的 转移的
1
确定型有穷自动机
确定型有穷自动机(DFA)是一个有序 元组 是一个有序5元组 定义 确定型有穷自动机 是一个有序 M = 〈Q,Σ,δ,q0,F 〉, 其中 状态集合Q: (1) 状态集合 非空有穷集合 (2) 输入字母表 非空有穷集合 输入字母表Σ: (3) 状态转移函数 状态转移函数δ:Q×Σ→Q × 控制器 (4) 初始状态 q0∈Q (5) 终结状态集 F⊆Q ⊆
21

15
wk.baidu.com
11.3 有穷自动机和正则文法 的等价性
用ε-NFA模拟右线性文法 模拟右线性文法 用右线性文法模拟DFA 用右线性文法模拟
16
有穷自动机和正则文法的等价性
是右线性文法, 定理 设G是右线性文法 则存在 是右线性文法 则存在ε-NFA M 使得 L(M)=L(G); 设M是DFA, 则存在右线性文法 使 则存在右线性文法G使 是 得L(G)= L(M). 下述命题是等价的: 定理 下述命题是等价的 (1) L是正则语言 是正则语言; 是正则语言 (2) 语言 能由右线性文法生成 语言L能由右线性文法生成 能由右线性文法生成; (3) 语言 能由左线性文法生成 语言L能由左线性文法生成 能由左线性文法生成; (4) 语言 能被 语言L能被 能被DFA接受 接受; 接受 (5) 语言 能被 语言L能被 能被NFA接受 接受; 接受 (6) 语言L能被 语言 能被ε-NFA接受 接受. 能被 接受
L(G)=L(M)={ (11)m0n | m≥1, n≥0 } ≥ ≥
19
用右线性文法模拟DFA 右线性文法模拟
设DFA M=〈Q,Σ,δ,q0,F 〉 〈 右线性文法G=〈 构造如下: 右线性文法 〈V,T,S,P 〉构造如下 V=Q, T=Σ, S=q0 ∀q∈Q和α∈Σ, ∈ 和 ∈ 则有产生式q→ap 若δ(q,a)=p, 则有产生式 若q∈F, 则有产生式 ∈ 则有产生式q→ε
相关文档
最新文档