Post on 21-Jan-2016
description
1
形式语言和 自动机初步
2
第 11 章 形式语言和自动机初步 11.1 形式语言和形式文法
11.2 有穷自动机
11.3 有穷自动机和正则文法的等价性
11.4 图灵机
3
字符串和形式语言 形式文法 形式文法的分类
0 型文法 1 型文法 或上下文有关文法 2 型文法 或上下文无关文法 3 型文法 或正则文法
11.1 形式语言与形式文法
4
语言的基本要素
汉语字符 : 汉字和标点符号字符集 : 合法字符的全体句子 : 一串汉字和标点符
号语法 : 形成句子的规则
形式语言字符字母表字符串形式文法
5
字符串字母表 Σ: 非空的有穷集合字符串 : Σ 中符号的有穷序列 如 Σ ={a,b}
a, b, aab, babb
字符串 ω 的长度 |ω|: ω 中的字符个数 如 |a|=1, |aab|=3
空字符串 ε: 长度为 0, 即不含任何符号的字符串an : n 个 a 组成的字符串Σ*: Σ 上字符串的全体
6
子字符串 ( 子串 ):
字符串中若干连续符号组成的字符串前缀 : 最左端的子串后缀 : 最右端的子串例如 ω =abbaab
a,ab,abb 是 ω 的前缀 aab,ab,b 是 ω 的后缀 ba 是 ω 的子串 , 但既不是前缀 , 也不是后缀 ω 本身也是 ω 的子串 , 且既是前缀 , 也是后缀 ε 也是 ω 的子串 , 且既是前缀 , 也是后缀
7
字符串的连接运算设 α=a1a2 … an, β= b1b2 … bm,
αβ=a1a2 … anb1b2 … bm 称作 α 与 β 作的连接 如 α=ab, β=baa, αβ=abbaa, βα=baaab
对任意的字符串 α, β, γ
(1) (αβ)γ=α(βγ)
即 , 连接运算满足结合律 (2) εα=αε=α
即 , 空串 ε 是连接运算的单位元
n 个 α 的连接记作 αn
如 (ab)3= ababab, α0=ε
8
形式语言定义 : Σ* 的子集称作字母表 Σ 上的形式语言 ,
简称 语言例如 Σ={a,b}
A={a,b,aa,bb}
B={an | n∈N}
C={anbm | n,m≥1}
D={ε}
空语言 Ø
9
形式文法
一个例子——标识符< 标识符 > : < 字母 > | < 下划线 > | < 标识符 > <
字母 > | < 标识符 > < 下划线 >| < 标识符 >< 数字 >
< 字母 > : a | b | … | z | A | B | … | Z
< 下划线 > : _
< 数字 > : 0 | 1 | … | 9
10
形式文法的定义
定义 形式文法是一个有序 4 元组 G=<V,T,S,P >,
其中(1) V 是非空有穷集合 , V 的元素称作变元或非终极符(2) T 是非空有穷集合且 V∩T =Ø, T 的元素称作终极符(3) S∈V 称作起始符(4) P 是非空有穷集合 , P 的元素称作产生式或改写规则 ,
形如 α→β, 其中 α,β∈(V∪T)* 且 α≠ε.
11
文法生成的语言设文法 G = <V,T,S,P>, ω, λ∈(V∪T)*,
ω λ: 存在 α→β∈P 和 ξ,η∈(V∪T)*, 使得 ω= ξαη, λ= ξβη
称 ω 直接派生出 λ.
ω λ: 存在 ω1, ω2, … , ωm, 使得 ω= ω1 ω2 … ωm= λ
称 ω 派生出 λ.
恒有 ω ω ( 当 m=1 时 )
是 的自反传递闭包
*
*
*
12
文法生成的语言 定义 设文法 G= <V,T,S,P >, G 生成的语言 L(G)={ω∈T* ∣S ω}
L(G) 由所有满足下述条件的字符串组成 :
(1) 仅含终结符 ;
(2) 可由起始符派生出来 .
定义 如果 L(G1)= L(G2), 则称文法 G1 与 G2 等价 .
*
13
举例例 1 文法 G1= <V,T,S,P>, 其中 V={S}, T={a,b},
P: S→aSb | ab
L(G1)={anbn | n>0}
例 2 文法 G2= <V,T,S,P>, 其中 V={A,B,S}, T={0,1},
P: S→1A, A→0A | 1A | 0B, B→0
L(G2)={1x00 | x{0, 1}*}
例 3 文法 G3= <V,T,S,P>, 其中 V={A,B,S}, T={0,1},
P: S→B0, B→A0, A→A1 | A0, A→1
L(G3)= L(G2), G3 与 G2 等价
14
例 4 G= <V,T,S,P>, 其中 V={S,A,B,C,D,E}, T={a},
P: (1) S→ACaB (2) Ca→aaC (3) CB→DB
(4) CB→E (5) aD→Da (6) AD→AC
(7) aE→Ea (8) AE→ε
试证明 : i 1, S
证 : a2 和 a4 的派生过程 S ACaB (1)
AaaCB (2)
AaaE (4)
AEaa 2 次 (7)
a2 (8)*
i
a2*
举例 ( 续 )
15
例 4 ( 续 )
S AaaCB
AaaDB (3)
ADaaB 2 次 (5)
ACaaB (6)
AaaaaCB 2 次 (2)
AaaaaE (4)
AEaaaa 4 次 (7)
a4 (8)
*
*
*
*
16
例 4( 续 )
先用归纳法证明 i 1,
当 i=1 时结论成立 , 假设对 i 结论成立 ,
(3)
2i 次 (5)
(6)
2i 次 (2)
得证对 i +1 结论成立 , 故对所有的 i 成立 .
CBAai2*S
* CBAai2
DBAai2
BADai2
BACai2
CBAai 12
*
*
S
17
例 4 ( 续 )
于是 , i 1,
(4)
2i 次 (7)
(8)
可以证明 :
L(G) = { | i 1}i
a2
* CBAai2
EAai2
i
AEa2
i
a2
*
S
18
形式文法的分类 —Chomsky 谱系0 型文法 ( 短语结构文法 , 无限制文法 )
1 型文法 ( 上下文有关文法 ):
所有产生式 α→β, 满足 |α||β|
另一个等价的定义 : 所有的产生式形如 ξAη→ξαη
其中 AV, ξ,η,α(V∪T)*, 且 αε2 型文法 ( 上下文无关文法 ): 所有的产生式形如 A→α 其中 AV,α(V∪T)*,
19
形式文法的分类 ( 续 )
3 型文法 ( 正则文法 ): 右线性文法和左线性文法的统称右线性文法 : 所有的产生式形如 A→αB 或 A→α左线性文法 : 所有的产生式形如 A→Bα 或 A→α其中 A,BV,αT*
例 1 是上下文无关文法例 2 是右线性文法 , 例 3 是左线性文法 , 都是正则文法例 4 是 0 型文法
20
Chomsky 谱系0 型语言 : 0 型文法生成的语言1 型语言 ( 上下文有关语言 ): 如果 L-{ε} 可由 1 型文法 生成 , 则称 L 是 1 型语言2 型语言 ( 上下文无关语言 ) : 2 型文法生成的语言3 型语言 ( 正则语言 ): 3 型文法生成的语言 如 {1x00 | x{0, 1}*} 是正则语言 ( 例 1)
{anbn | n>0} 是上下文无关语言 ( 例 2,3)
{ | i 1} 是 0 型语言 ( 例 4)
定理 0 型语言 1 型语言 2 型语言 3 型语言
i
a2
21
描述算术表达式的文法
G={{E,T,F},{a,+.-.*,/,(,)},E,P}
其中 E: 算术表达式 , T: 项 ,
F: 因子 , a: 数或变量 P: E → E+T | E-T | T
T → T*F | T/F | F
F → (E) | a
这是上下文无关文法
22
左、右线性文法的等价性定理 设 G 是右 ( 左 ) 线性文法 , 则存在左 ( 右 )
线 性文法 G 使得 L(G )=L(G).
证明 : G 用模拟 GG= <V,T,S,P > G= <V∪{S},T,S,P>P: A→αB P: B→Aα
A→α S→Aα
S→ε
23
一个实例——模拟例 2 中的 G2
可删去 G2 中的 S, 这实际上就是 G3
G2= <V,T,S,P > G2 = <V ,T ,S ,P > V={A,B,S} V ={A,B,S,S} T={0,1} T ={0,1} P: S→1A P: A→S1 A→0A A→A0 A→1A A→A1 A→0B B→A0 B→0 S→B0 S→ε