【计算理论】计算理论总结 ( 上下文无关文法 ) ★★

举报
韩曙亮 发表于 2022/01/11 00:21:44 2022/01/11
【摘要】 文章目录 一、上下文无关文法 ( CFG )二、上下文无关文法 ( CFG ) 示例三、确定性有限自动机 DFA 转为 上下文无关语法 CFG 参考博客 : 【计算理论】上下文无关...



参考博客 :





一、上下文无关文法 ( CFG )



上下文无关语法 组成 : { V , Σ , R , S } \{ \quad V , \Sigma , R , S \quad \} {V,Σ,R,S} 四部分组成 ;

变量集 V V V : 有限的变量集合 ;

终端字符集 Σ \Sigma Σ : 有限的终端字符组成的集合 ; 相当于常量的含义 , 与变量相对 ;

规则集 R R R : 有限的规则组成的集合 , 规则规定如何进行代换操作 , 规定 变量 , 终端字符 , 字符串变量 等 ;

开始变量 S S S : 该变量作为开始变量 ;


规则 :

① 已知条件 : 假设 u , v , w u, v , w u,v,w变量 ( 变元 )终端字符集 ( 常量 / 常元 ) ;

② 规则描述 : 规则是一个箭头 , A → w A \to w Aw , A A A 是变元 , w w w 是 变元 和 常元 组成的终端字符 ;

③ 规则用法 : 在字符串中 , 根据 A → w A \to w Aw 规则进行替换 , 只需要将 A A A 变元替换成 w w w 字符串即可 ;

④ 规则示例 : u A v uAv uAv 中使用上述规则进行替换 , 将 A A A 替换成 w w w , 替换结果是得到新字符串 u w v uwv uwv ;

u A v ⇒ u w v uAv \Rightarrow uwv uAvuwv





二、上下文无关文法 ( CFG ) 示例



上下文无关文法 ( CFG ) : G 3 = (    { S } , { a , b } , R , S    ) \rm G3 =( \; \{ S \}, \{ a, b \}, R , S \; ) G3=({S},{a,b},R,S) 其组成如下 :

  • 变量集 { S } \rm \{ S \} {S} ;

  • 终端字符集 { a , b } \rm \{ a, b \} {a,b} ;

  • 规则 R \rm R R ;

  • 开始变量 S \rm S S ;


规则 R \rm R R 描述 : S → a S b    ∣    S S    ∣    ε \rm S \to aSb \; | \; SS \; | \; \varepsilon SaSbSSε

  • S \rm S S 变量 可以使用 a S b \rm aSb aSb 字符串替换 ;
  • S \rm S S 变量 可以使用 S S \rm SS SS 字符串替换 ;
  • S \rm S S 变量 可以使用 ε \rm \varepsilon ε 字符串替换 ;

规则替换过程 : 下面的 ① ~ ⑦ 分别对应七次规则替换 ;

S ⇒ a S b ⇒ a a S b b ⇒ a a S S b b ⇒ a a a S b S b b ⇒ a a a b S b b ⇒ a a a b a S b b b ⇒ a a a b a b b b \rm S \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbb \Rightarrow aaaSbSbb \Rightarrow aaabSbb \Rightarrow aaabaSbbb \Rightarrow aaababbb SaSbaaSbbaaSSbbaaaSbSbbaaabSbbaaabaSbbbaaababbb

  • S S \rm S S SS 是开始变量 , 可以使用 a S b \rm aSb aSb 替换 S \rm S S ; S ⇒ a S b \rm S \Rightarrow aSb SaSb
  • ② 使用 a S b \rm aSb aSb 替换 S \rm S S ; a S b ⇒ a a S b b \rm aSb \Rightarrow aaSbb aSbaaSbb
  • ③ 使用 S S \rm SS SS 替换 S \rm S S ; a a S b b ⇒ a a S S b b \rm aaSbb \Rightarrow aaSSbb aaSbbaaSSbb
  • ④ 使用 a S b \rm aSb aSb 替换第一个 S \rm S S ; a a S S b b ⇒ a a a S b S b b \rm aaSSbb \Rightarrow aaaSbSbb aaSSbbaaaSbSbb
  • ⑤ 使用 ε \rm \varepsilon ε 替换第一个 S \rm S S ; a a a S b S b b ⇒ a a a b S b b \rm aaaSbSbb \Rightarrow aaabSbb aaaSbSbbaaabSbb
  • ⑥ 使用 a S b \rm aSb aSb 替换 S \rm S S ; a a a b S b b ⇒ a a a b a S b b b \rm aaabSbb \Rightarrow aaabaSbbb aaabSbbaaabaSbbb
  • ⑦ 使用 ε \rm \varepsilon ε 替换 S \rm S S ; a a a b a S b b b ⇒ a a a b a b b b \rm aaabaSbbb \Rightarrow aaababbb aaabaSbbbaaababbb




三、确定性有限自动机 DFA 转为 上下文无关语法 CFG



1 . 确定性有限自动机 ( DFA ) 转为 上下文无关语法 ( CFG ) :

确定性有限自动机 ( DFA ) 的指令 , 转为 对应的

上下文无关语法 ( CFG ) 规则 : δ ( q i , a ) = q j ⇒ R i → a R j \rm \delta ( q_i, a ) = q_j \Rightarrow R_i \to aR_j δ(qi,a)=qjRiaRj

δ ( q i , a ) = q j \delta ( q_i, a ) = q_j δ(qi,a)=qj 表示 q i q_i qi 状态下 , 读取字符 a a a , 跳转到 q j q_j qj 状态 ;


2 . 自动机的 状态跳转 转换成 规则 示例 : 下图中的 确定性有限自动机 , 开始状态 A A A 读取 1 1 1 字符 转化成 B B B 状态 , 表示成规则就是 R A → 1 R B R_A \to 1R_B RA1RB

在这里插入图片描述


3 . 自动机的状态 A A A 读取 字符 a a a 转换成另一个状态 B B B , 都可以转换成对应的规则 R A → a R B R_A \to aR_B RAaRB ;


4 . 计算能力对比 : 上下文无关语法 的计算能力 要大于等于 自动机的计算能力 ;

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/111402658

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。