上下文无关以及下推自动机

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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) 一个开始变量
相关文档
最新文档