上下文无关以及下推自动机
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
●
证明的思想
●
例:设语言 L={ anbncn | n 是自然数 } ,证明 L 不 是上下文无关的语言 .
●
证明: ( 反证 ) 假设存在 p ,使得任意长度大于 p 的串 s ,有 s 的划分 s=uvxyz 满足泵引理。 考虑 s= apbpcp (1) 若 v 和 y 都只含一种字母,易得矛盾。 (2) 若 v 和 y 至少有一个含两种字母,那么 uv2xy2z 就不再具有同一种字母都连成一段的特 点了。
<EXPR> → <EXPR>+<TERM> | <TERM> <TERM> → <TERM> x <FACTOR> |<FACTOR> <FACTOR> → ( <EXPR> ) | a
a a × a
●
一般,每个串 w 由其生成的过程都对应着一棵 树,称之为 w 的语法分析树 (parse tree)
●
定义相应的一条规则
q xq '
●
另外对每个
qF ∈F
, 相应地有规则
qF
●
例:下面我们考虑 {0,1} 上的语言。试设计一个 上下文无关语法,使得它确定的语言为 (1)L ={ w | w 至少有 3 个 1}
●
●
S → AAA A → B1B B → 0B | 1B | λ
●
事实上,这个语言还是正则语言,可以用正则表 达式
●
这个语法中, A,B 是变量 ( 非终结符 ) ,其中 A 是开始变量。 0,1,# 是字母 ( 终结符 ).
●
刚才的例子也可以简记为: A → 0A1 | B B→#
●
日常语言的句子也可以用类似的替换规则构成: < 句子 > → < 主语 >< 谓语 > < 主语 > → < 名词 > | < 复合名词 >
∗ ∗
∗
●
由语法 G 定义的语言
●
例:语法 其中 R 是
G ={ S } , {a , b } , R , S S aSb | SS |
●
例:G = V
, , R, S
V={ <EXPR>, <TERM>, <FACTOR> }
={ a , , × , , }
●
R:
(2) 有限字母表
●
一个串被接受的定义和前面的非确定性有限状态 机类似。所有被接受的串的全体就定义了一个语 言。
●
例:下面我们设计一个下推自动机来识别语言 { 0n1n | n 为自然数 } Q={ q1, q2, q3, q4 }
●
● ●
={ 0, 1 } ={ 0, $ }
F={q1,q4}
●
0 ∪1 1 0 ∪1 1 0∪ 1 1 0 ∪1 ∗ ∗ ∗ ∗ 或 0 1 0 1 0 1 0 ∪1 表示
∗
∗
∗
∗
●
(2) L ={ w | w 中的 1 和 0 一样多 }
●
S → 0S1 | 1S0 | SS | λ
●
(3) L ={ w | w 中的 1 比 0 多 }
●
●
例: L ={ ww | w ∈{ 0,1 }
∗
wenku.baidu.com
}
●
证明 L 不是上下文无关语言。
●
证明 :( 反证 ) 设 p 是满足泵引理的整数, 考虑 s = 0p1p0p1p
作业
●
(1), 字母表是 {0,1} 设计一个上下文无关语法 G ,使得 G 定义的语言为 L ={w | w = wR} 。并设 计一个下推自动机 M ,使得 L ={ s| s 被 M 接受 } (2) 字母表 {a,b} ,设计一个上下文无关语法 G ,使得 G 定义的语言 L={ w | w 中 a 的个数是 b 的两倍 }
●
●
有限状态机
●
下推自动机比 有限状态机 多了一个栈
●
一个下推自动机由六部分构成 (1) 有限状态集 Q
(3) 栈的字母表 (4) 转移函数 : Q × × P Q × (5) 初始状态 q ∈ Q 0 (6) 接受状态 F ⊆Q M = Q , , , , q0, F
●
●
●
●
例: L ={ a
i
b c | 0 ≤i ≤ j ≤ k }
j
k
●
证明 L 不是上下文无关语言。
●
证明: ( 反证 ) 设 p 是满足泵引理的整数 , 令 s =apbpcp 对 s 的划分 s=uvxyz ,分两种情况
●
(1) v, y 都只含一种字母 (2)v 或 y 含 2 种字母
● ● ●
S → 0S1 | 1S0 | SS | SA | AS | B B → 1B | 1 A → 0A1 | 1A0 | AA | λ
二、下推自动机 Pushdown Automata
●
下面介绍一种和上下文无关语言等价的自动机, 就是所谓的下推自动机
●
和有限状态机不同,我们一般说下推自动机,指 的是非确定性的下推自动机。并且确定性的下 推自动机和非确定性的下推自动机不等价。 下面,我们只介绍非确定性的下推自动机,简称 下推自动机。
●
●
三、非上下文无关语言 Non-context-free Languages
●
泵引理 : 设 L 是一个上下文无关的语言,那么存 在一个正整数 p ,使得 L 任意长度大于 p 的串 s ,都存在一个划分 s=uvxyz 满足下面条件 (1) |vy| >0 (2) |vxy| <=p (3) 对任意自然数 i , uvixyiz 还是 L 中的串
●
●
例: L ={aibjck | i,j,k >=0 , j=i 或 k=i }
●
例:
●
设 w 是一个串 w=w1w2 … wn 定义 wR = wn wn-1 … w2 w1 设
R
●
●
L ={ w w | w ∈{ 0,1 } }
∗
●
定理:一个语言 L 是上下文无关语言的充分必要 条件是 L 可以用一个下推自动机来定义。 证明:(略)
S ∈V
G = V , , R , S
●
假设 u,v 和 w 是由变量和字母构成的串, A → w 是一条规则。 那么 uAv 由这条规则可以生成 ( 派生 ) 出 uwv ,我们记作
●
uAv ⇒ uwv
●
更一般地,若
u ⇒ u1 ⇒ u 2 ⇒ ... ⇒ u k ⇒ v
●
我们记为
u⇒ v L ={ w ∈ | S ⇒ w }
●
例:所有正则语言都是上下文无关语言 证明:设 L 是一个正则语言,即由某一个有限状 态机 M 确定。
●
M = Q , , , q 0, F
●
下面我们构造一个上下文无关的语法 G
G = Q , , R , q 0
●
语法的规则 R 如下 : 对每个有序对 (q,x) ,若
q , x = q '
上下文无关语言 Context-free Languages
中山大学 杨超 yangch8@mail.sysu.edu.cn
一、上下文无关的语法 Context-free Grammars
●
下面我们用语法来定义串和语言。 一个语法 ( 文法 ) 是由一系列的替换规则构成。 如有一个语法由下面三个规则构成 A → 0A1 A→B B→#
< 复合名词 > → < 冠词 > < 名词 >
< 谓语 > → < 动词 > < 名词 > → dog < 冠词 > → a | the < 动词 > → bark | bite
●
一个语法由四部分要素构成: (1) 有限个变量的集合 V (2) 有限个字母的集合 ( 字母表 ) (3) 有限个规则的集合 R (4) 一个开始变量