2012-计算理论_2_上下文无关文法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11
上下文无关文法与正则语言
任何正则语言可以由 CFG 描述。
如果 (qi, a) = qj,则增加规则 Vi aVj
如果 qi 是接受状态,则增加规则 Vi
如果 q0 是起始状态,则 V0 是起始变元。 DFA start
0
1 1
q0
q1
0
CFG
G = ( {V0, V1}, {0,1}, R, V0 ) V0 0V0 | 1V1 | V1 1V1 | 0V0
q1
CFG
G = ( {V0, V1}, {0,1}, R, V0 ) V0 0V0 | 1V1 | V1 1V1 | 0V0
20
REVIEW(2012-03-13)
最左派生 文法 G 中的一个字符串 w 的派生,如果在每一步都是替换 左边剩下的变元。 歧义性 如果字符串 w 在上下文无关文法 G 中有两个或两个以上不 同的最左派生,则称 G 歧义地(ambiguously) 产生字符串 w, 如果文法 G 歧义地产生某个字符串,则称 G 是歧义的。
After removing AB
29
例题
Then, we remove A S
S0 ASA | aB | a | SA | AS S ASA | aB | a | SA | AS Ab|S Bb
Before removing AS
S0 ASA | aB | a | SA | AS S ASA | aB | a | SA | AS A b | ASA | aB | a | SA | AS Bb
22
乔姆斯基范式
定理 2.6
任一上下文无关语言都可以用一个乔姆斯基范式的 上下文无关文法产生。
Step 1: 增加起始变元 S0 和规则 S0 S, 其中S是原来的起始 变元。 Step 2: 考虑所有的 规则。 对于 A , 删去每个A都会产 生一个新规则。 例如 R uAvAw R uAvw, R uvAw, R uvw
计算理论
1
主要内容
2.1 上下文无关文法概述
2.1.1 上下文无关文法的形式化定义
2.1.2 上下文无关文法举例 2.1.3 设计上下文无关文法 2.1.4 歧义性 2.1.5 乔姆斯基范式
2.2 下推自动机
2.2.1 下推自动机的形式化定义
2.2.2 下推自动机举例
2.2.1 与上下文无关文法的等价性
REVIEW(2012-03-13)
广义非确定型有穷自动机(GNFA) GNFA与NFA等价 非正则语言B={ 0n1n | n≥0 } 证明非正则性的技术——泵引理,所有的正则语言都有一 种特殊的性质,如果一个语言没有这个性质,则其不是正 则的。 若 A 是一个正则语言,则存在一个数 p (泵长度) 使 得,如果 s 是 A 中任一长度不小于 p 的字符串,那 么 s 可以被分成 3 段,s = xyz,满足下述条件: (1) 对于每一个 i 0, xyiz∈A (2) | y | 0 (3) | xy | ≤ p 18
3
如何利用 CFG 产生字符串
A 0A1 AB A# (1) 写下起始变元——第一条规则左边的变元。 (2) 取一个已写下的变元,并找到以该变元开始 的规则,把这个变元替换成规则右边的字符 串。 (3) 重复步骤2,直到写下的字符串没有变元。 获取一个字符串的替换过程叫派生。
例如字符串 000#111 的过程如下:
12
最左派生
对于文法 G 中的一个字符串 w 的派生,如果在每一步都是 替换左边剩下的变元,则称这个派生是最左派生。 例如G=( {S}, {(,)}, R, S ) ,其中规则为 S ( S ) | SS | S SS (S)S ( )S ( ) ( S ) ( ) ( ) S SS S(S) (S)(S) ( ) ( S ) ( ) ( )
文法 G = (V,T,R,S)的语言为 L(G) = { wT*| S w }
8
上下文无关文法举例
例2.1 考虑文法 G = ( {S}, {a,b}, R, S ),其中规则集 R 为:
S aSb | SS | 。
该文法生成 abab,aaabbb,aababb,… 如果将 a 看作 (,将 b 看作 ),
L(G)是所有正常嵌套的括号字符串构成的语言。
9
设计上下文无关文法
设计如下语言的上下文无关文法 {0n1n | n 0}∪{1n0n | n 0} {0n1n | n 0} {1n0n | n 0} 设计技巧
化繁为简,利用正则,考察子串,利用递归。
10
设计上下文无关文法
CFG for L1 = {0n1n | n 0} S 0S1 | CFG for L2 = {1n0n | n 0} S 1S0 | CFG for L1∪L2 S S1 | S2 S1 0S11 | S2 1S20 | CFG for L3 = {02n13n | n 0}? S 00S111 |
13
歧义性
一个串可能有两个甚至更多的最左派生。 例如 CFG G=( {S}, {+,*,a}, R, S) ,其中规则为 SS+S|S*S|a 产生串 a + a * a S S + S a + S a +S *S a + a * S a+a*a S S *S S + S * S a +S * S a + a * S a+a*a
23
乔姆斯基范式
定理 2.6
任一上下文无关语言都可以用一个乔姆斯基范式的 上下文无关文法产生。
Step 3: 考虑单一产生式A B。 例如: A B, B aC, B CC, 则增加 A aC, A CC 。 Step 4: 考虑A u1 u2 …uk, 其中 k > 2且ui 是变量或终结符。 替换该规则 A u1A1, A1 u2A2, A2 u3A3, …, Ak-2 uk-1uk
2.3 非上下文无关语言
2
上下文无关文法 (CFG) 概述
A 0A1 替换规则又称为 产生式
替换规则
描述语言的方法: AB B# •有穷自动机 变量 (Variables) •正则表达式 A, B
终止符 (Terminals) 起始变元 (Start Variable) 0,1,# A
箭头的左侧只有一个变量
After removing S0 S
28
例题
Then, we remove A B
S0 ASA | aB | a | SA | AS S ASA | aB | a | SA | AS AB|S Bb
Before removing AB
S0 ASA | aB | a | SA | AS S ASA | aB | a | SA | AS Ab|S Bb
After removing B
26
例题
After that, we remove A
S0 S S ASA | aB | a AB|S| Bb
Before removing A
S0 S S ASA | aB | a | SA | AS | S AB|S Bb
24
例题
S ASA | aB AB|S Bb| S0 S S ASA | aB AB|S Bb|
25
例题
After that, we remove B
S0 S S ASA | aB AB|S Bb|
Before removing B
S0 S S ASA | aB | a AB|S| Bb
14
歧义性
S
S a + S a S x S a S a S + S a
S
x S a
15
歧义性
定义 2.4
如果字符串 w 在上下文无关文法 G 中有两个或 两个以上不同的最左派生,则称 G 歧义地 (ambiguously) 产生字符串 w,如果文法 G 歧义 地产生某个字符串,则称 G 是歧义的。 某些上下文无关语言只能用歧义文法产生,这样 的语言是固有二义的。
A 0A1 00A11 000A111 000B111 000#111
4
如何利用 CFG 产生字符串
A 0A1 AB A# 可以用语法生成树形象地表示派生过程。 A A A
A
0
1
0
0
B # 1
1
5
文法的语言
A 0A1 AB A# 文法 G1 可以产生的字符串包括: #, 0#1, 00#11, 000#111, … 用文法 生成的所有字符串的集合称为文法 的语言。 L(G1) 表示文法 G1 产生的语言。 L(G1) = { 0n#1n | n 0 }
REVIEW(2012-03-13)
泵引理的证明 泵引理的应用 例:非正则语言B={ 0n1n | n≥0 } 描述语言的方法:自动机——正则表达式——非正则性— —上下文无关文法 上下文无关文法 变元、转换规则、终止符、起始变元 上下文无关文法的形式化定义 1. uAv 生成 uwv,记作 uAv uwv 。 2. u 派生 v,记作 u * v。 文法 G = (V,T,R,S)的语言为 L(G) = { wT*| S w }
16
REVIEW(2012-03-13)
广义非确定型有穷自动机(GNFA) GNFA与NFA等价 非正则语言B={ 0n1n | n≥0 } 证明非正则性的技术——泵引理,所有的正则语言都有一 种特殊的性质,如果一个语言没有这个性质,则其不是正 则的。 若 A 是一个正则语言,则存在一个数 p (泵长度) 使 得,如果 s 是 A 中任一长度不小于 p 的字符串,那 么 s 可以被分成 3 段,s = xyz,满足下述条件: (1) 对于每一个 i 0, xyiz∈A (2) | y | 0 (3) | xy | ≤ p 17
7
CFG的术语
假设 u 与 v 由变元及终结符构成的字符串,Aw 是文法 的一条规则,称 uAv 生成 uwv,记作 uAv uwv 。 如果 u = v ,或者存在 u1, u2, …, uk, k 0 使得 u u1 u2… uk v,则称 u 派生 v,记作 u * v。
After removing A
27
例题
Then, we remove S S and S0 S
S0 S S ASA | aB | a | SA | AS AB|S Bb
After removing SS
S0 ASA | aB | a | SA | AS S ASA | aB | a | SA | AS AB|S Bb
19
REVIEW(2012-03-13)
设计上下文无关文法 任何正则语言可以由 CFG 描述。 如果 (qi, a) = qj,则增加规则 Vi aVj 如果 qi 是接受状态,则增加规则 Vi 如果 q0 是起始状态,则 V0 是起始变元。 DFA start
0 1 1
q0 0
21
乔姆斯基范式
定义 2.5
称一个上下文无关文法是为乔姆斯基范式(Chomsky normal form),如果它的每一个规则具有如下形式:
A ห้องสมุดไป่ตู้C
A a
其中 a 是任意的终结符,A、B 和 C 是任意的变元, 且 B 和 C 不能同时是起始变元。此外,允许规则 S ,其中 S 是起始变元。
用上下文无关文法产生的语言叫上下文无 关语言。 文法 G1 的简写: A 0A1 | B B#
6
上下文无关文法的形式化定义
定义 2.1
上下文无关文法是一个 4 元组 ( V, , R, S ),且 (1) V 是一个有穷集合,称为变元集。 (2) 是一个与 V 不相交的有穷集合,称为终结符 集。 (3) R 是一个有穷规则集,每条规则由一个变元和 一个由变元及终结符组成的字符串构成。 (4) SV 是起始变元。
相关文档
最新文档