【计算理论】计算理论总结 ( 上下文无关文法 | 乔姆斯基范式 | 乔姆斯基范式转化步骤 | 示例 ) ★★

简介: 【计算理论】计算理论总结 ( 上下文无关文法 | 乔姆斯基范式 | 乔姆斯基范式转化步骤 | 示例 ) ★★

文章目录

一、乔姆斯基范式

二、上下文无关语法转为乔姆斯基范式步骤

三、上下文无关语法转为乔姆斯基范式示例1

四、上下文无关语法转为乔姆斯基范式示例 2



参考博客 :


【计算理论】上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 | 语法分析树 )

【计算理论】上下文无关语法 ( 代数表达式 | 代数表达式示例 | 确定性有限自动机 DFA 转为 上下文无关语法 )

【计算理论】上下文无关语法 CFG ( CFG 设计示例 | CFG 歧义性 | Chomsky 范式 | 上下文无关语法 转为 Chomsky 范式 )





一、乔姆斯基范式


1 . Chomsky 范式 : 上下文无关语法中的任何规则都是如下 格式 ;


① 单个变元到 2 22 个变元 A → B C \rm A \to BCA→BC : A AA 是 变元 , B , C \rm B,CB,C 也是变元 ;


② 单个变元到常元 A → a \rm A \to aA→a : A \rm AA 是 变元 , a \rm aa 是常元 , A \rm AA 可以被终端字符替换 ;


③ B , C \rm B ,CB,C 变元要求 : B , C \rm B, CB,C 变元一定不能是开始变元 ;


④ S → ε \rm S \to \varepsilonS→ε : S \rm SS 开始变元可以为空 ;


⑤ 不能出现 变 元 → 变 元 \rm 变元 \to 变元变元→变元 单个变元 到 单个变元不允许出现 ;



2 . S → ε \rm S \to \varepsilonS→ε 规则 说明 :


① 语言包含空字符串 : 如果上下文无关语法包含空字符串时 , 一定 需要 S → ε \rm S \to \varepsilonS→ε 规则 ;


② 语言不包含空字符串 : 如果上下文无关语法不包含空字符串时 , 一定 不需要 S → ε \rm S \to \varepsilonS→ε 规则 ;


③ 规则总结 : 该规则决定 上下文无关语法 所生成的语言 是否包含 空字符串 ; 如果包含 , 必须要这个规则 ; 如果不包含 , 空字符串一定不要这个规则 ;






二、上下文无关语法转为乔姆斯基范式步骤


上下文无关语法转为乔姆斯基范式步骤 :



1 . 添加开始变元及规则 : 添加一个新的 开始变元 S 0 \rm S_0S

0


 , 以及配套的规则 S 0 → S \rm S_0 \to SS

0


→S , S \rm SS 是旧的开始变元 ;


① 目的 : 添加开始变元的目的是 开始变元 永远出现在左边 ;


② Chomsky 范式 中 , 开始变元始终在规则的左边 , 不允许开始变元在规则的右侧 ;


③ 对应 Chomsky 范式 规则 : A → B C \rm A \to BCA→BC 规则 , A \rm AA 是 变元 , B , C \rm B,CB,C 也是变元 , 并且 B , C \rm B,CB,C 不允许是开始变元 ;



2 . 消除所有的 ε \varepsilonε 规则 : 消除所有 从 变元 到 空字符 的规则 ;



3 . 消除所有的 A → B \rm A \to BA→B 规则 : 消除所有 从 单个变元 到 单个变元的 单条规则 , 允许从 单个变元 到 多个变元或常元 ; 如 : A → B \rm A \to BA→B 是需要删除的 , A → B S \rm A \to BSA→BS 可以保留 ;



4 . 添加变元 : 将 A → B C D \rm A \to BCDA→BCD 规则 , 转为 A → E D \rm A \to EDA→ED 规则 , 添加变元 E → B C \rm E \to BCE→BC ;






三、上下文无关语法转为乔姆斯基范式示例1


将 上下文无关语法 转为 Chomsky 范式 :


S → A S A ∣ a B \rm S \to ASA | aBS→ASA∣aB

A → B ∣ S \rm A \to B|SA→B∣S

B → b ∣ ε \rm B \to b|\varepsilonB→b∣ε


1 . 添加新的开始变元 : S 0 \rm S_0S

0


 ;


S 0 → S \rm S_0 \to SS

0


→S

S → A S A ∣ a B \rm S \to ASA | aBS→ASA∣aB

A → B ∣ S \rm A \to B|SA→B∣S

B → b ∣ ε \rm B \to b|\varepsilonB→b∣ε


2 . 消除 B → ε \rm B \to \varepsilonB→ε 规则 : 根据消除前后等价原则 , 重新构造含有 B \rm BB 的规则 ; 消除 B → ε \rm B \to \varepsilonB→ε , 即在对应的含有 B \rm BB 的规则中添加 B \rm BB 为空的情况 , a B \rm aBaB 如果 B \rm BB 为空就是 a \rm aa , B \rm BB 如果 B \rm BB 为空就是 ε \rm \varepsilonε ;


S 0 → S \rm S_0 \to SS

0


→S

S → A S A ∣ a B ∣ a \rm S \to ASA | aB | aS→ASA∣aB∣a

A → B ∣ ε ∣ S \rm A \to B| \varepsilon |SA→B∣ε∣S

B → b \rm B \to bB→b


3 . 消除 A → ε \rm A \to \varepsilonA→ε 规则 : 根据消除前后等价原则 , 重新构造含有 A \rm AA 的规则 ; 消除 A → ε \rm A \to \varepsilonA→ε , 即在对应的含有 A \rm AA 的规则中添加 A \rm AA 为空的情况 , A S A \rm ASAASA 如果 A \rm AA 为空就产生 S , A S , S A \rm S , AS, SAS,AS,SA 三种 ( 考虑不同 A \rm AA 为空的情况 ) ;


S 0 → S \rm S_0 \to SS

0


→S

S → A S A ∣ A S ∣ S A ∣ a B ∣ a \rm S \to ASA | AS | SA | aB | aS→ASA∣AS∣SA∣aB∣a

A → B ∣ S \rm A \to B| SA→B∣S

B → b \rm B \to bB→b


4 . 消除 A → B \rm A \to BA→B 规则 : 找 B \rm BB 出现在左边的情况 , 发现有 B → b \rm B \to bB→b 规则 , 直接使用 A → b \rm A \to bA→b 替换 A → B \rm A \to BA→B 规则 ; ( 注意 : B → b \rm B \to bB→b 规则 不变 )


S 0 → S \rm S_0 \to SS

0


→S

S → A S A ∣ A S ∣ S A ∣ S ∣ a B ∣ a \rm S \to ASA | AS | SA | S | aB | aS→ASA∣AS∣SA∣S∣aB∣a

A → b ∣ S \rm A \to b | SA→b∣S

B → b \rm B \to bB→b


5 . 消除 S 0 → S \rm S_0 \to SS

0


→S 规则 : 找 S \rm SS 出现在左边的情况 , 发现有 S → A S A ∣ A S ∣ S A ∣ S ∣ a B ∣ a \rm S \to ASA | AS | SA | S | aB | aS→ASA∣AS∣SA∣S∣aB∣a , 使用 S 0 → A S A ∣ A S ∣ S A ∣ S ∣ a B ∣ a \rm S_0 \to ASA | AS | SA | S | aB | aS

0


→ASA∣AS∣SA∣S∣aB∣a , 替换 S 0 → S \rm S_0 \to SS

0


→S ; ( 注意 : S → A S A ∣ A S ∣ S A ∣ S ∣ a B ∣ a \rm S \to ASA | AS | SA | S | aB | aS→ASA∣AS∣SA∣S∣aB∣a 规则不变 )


S 0 → A S A ∣ A S ∣ S A ∣ S ∣ a B ∣ a \rm S_0 \to ASA | AS | SA | S | aB | aS

0


→ASA∣AS∣SA∣S∣aB∣a

S → A S A ∣ A S ∣ S A ∣ a B ∣ a \rm S \to ASA | AS | SA | aB | aS→ASA∣AS∣SA∣aB∣a

A → b ∣ A S A ∣ A S ∣ S A ∣ a B ∣ a \rm A \to b | ASA | AS | SA | aB | aA→b∣ASA∣AS∣SA∣aB∣a

B → b \rm B \to bB→b


6 . 添加变元 : 添加新规则 R → S A \rm R \to SAR→SA ;


S 0 → A R ∣ A S ∣ S A ∣ S ∣ a B ∣ a \rm S_0 \to AR | AS | SA | S | aB | aS

0


→AR∣AS∣SA∣S∣aB∣a

S → A R ∣ A S ∣ S A ∣ a B ∣ a \rm S \to AR | AS | SA | aB | aS→AR∣AS∣SA∣aB∣a

A → b ∣ A R ∣ A S ∣ S A ∣ a B ∣ a \rm A \to b | AR | AS | SA | aB | aA→b∣AR∣AS∣SA∣aB∣a

R → S A \rm R \to SAR→SA

B → b \rm B \to bB→b





四、上下文无关语法转为乔姆斯基范式示例 2


将 上下文无关语法转为 Chomsky 范式 :


A → B A B ∣ B ∣ ε \rm A \to BAB | B | \varepsilonA→BAB∣B∣ε

B → 00 ∣ ε \rm B \to 00 | \varepsilonB→00∣ε


1 . 添加新的开始变元 : S 0 \rm S_0S

0


 ;


S 0 → A \rm S_0 \to AS

0


→A

A → B A B ∣ B ∣ ε \rm A \to BAB | B | \varepsilonA→BAB∣B∣ε

B → 00 ∣ ε \rm B \to 00 | \varepsilonB→00∣ε


2 . 消除 B → ε \rm B \to \varepsilonB→ε 规则 : 根据消除前后等价原则 , 重新构造含有 B \rm BB 的规则 , 即添加使用 ε \varepsilonε 替换 B \rm BB 的各种情况 , 如 : B A B \rm BABBAB , 替换 1 11 个 B \rm BB 两种情况 , 替换 2 22 个 B \rm BB 一种情况 ;


S 0 → A \rm S_0 \to AS

0


→A

A → B A B ∣ B A ∣ A B ∣ A ∣ B ∣ ε \rm A \to BAB | BA | AB | A | B | \varepsilonA→BAB∣BA∣AB∣A∣B∣ε

B → 00 \rm B \to 00B→00


3 . 消除 A → ε \rm A \to \varepsilonA→ε 规则 : 根据消除前后等价原则 , 重新构造含有 A \rm AA 的规则 , 如 : B A B \rm BABBAB 如果 A \rm AA 为空 就是 B B \rm BBBB , A B \rm ABAB 如果 A \rm AA 为空 , 多出一个 B \rm BB ;


S 0 → A \rm S_0 \to AS

0


→A

A → B A B ∣ B A ∣ A B ∣ A ∣ B ∣ B B \rm A \to BAB | BA | AB | A | B | BBA→BAB∣BA∣AB∣A∣B∣BB

B → 00 \rm B \to 00B→00


4 . 消除 A → B \rm A \to BA→B 规则 : 找 B \rm BB 出现在左边的情况 , 发现有 B → 00 \rm B \to 00B→00 规则 , 直接使用 A → 00 \rm A \to 00A→00 规则 替换 A → B \rm A \to BA→B 规则 ; ( 注意 : B → 00 \rm B \to 00B→00 规则 不变 )


S 0 → A \rm S_0 \to AS

0


→A

A → B A B ∣ B A ∣ A B ∣ A ∣ 00 ∣ B B \rm A \to BAB | BA | AB | A | 00 | BBA→BAB∣BA∣AB∣A∣00∣BB

B → 00 \rm B \to 00B→00


5 . 消除 S 0 → A \rm S_0 \to AS

0


→A 规则 : 找 A \rm AA 出现在左边的情况 , 发现有 A → B A B ∣ B A ∣ A B ∣ A ∣ 00 ∣ B B \rm A \to BAB | BA | AB | A | 00 | BBA→BAB∣BA∣AB∣A∣00∣BB 规则 , 直接使用 S 0 → B A B ∣ B A ∣ A B ∣ A ∣ 00 ∣ B B \rm S_0 \to BAB | BA | AB | A | 00 | BBS

0


→BAB∣BA∣AB∣A∣00∣BB 规则 替换 S 0 → A \rm S_0 \to AS

0


→A 规则 ; ( 注意 A → B A B ∣ B A ∣ A B ∣ A ∣ 00 ∣ B B \rm A \to BAB | BA | AB | A | 00 | BBA→BAB∣BA∣AB∣A∣00∣BB 规则 规则不变 )


S 0 → B A B ∣ B A ∣ A B ∣ A ∣ 00 ∣ B B \rm S_0 \to BAB | BA | AB | A | 00 | BBS

0


→BAB∣BA∣AB∣A∣00∣BB

A → B A B ∣ B A ∣ A B ∣ A ∣ 00 ∣ B B \rm A \to BAB | BA | AB | A | 00 | BBA→BAB∣BA∣AB∣A∣00∣BB

B → 00 \rm B \to 00B→00


6 . 添加变元 : 添加新规则 R → B A \rm R \to BAR→BA ; 目的是使用 2 22 个变元的规则替换 3 33 个变元的规则 ;


S 0 → R B ∣ B A ∣ A B ∣ A ∣ 00 ∣ B B \rm S_0 \to RB | BA | AB | A | 00 | BBS

0


→RB∣BA∣AB∣A∣00∣BB

A → R B ∣ B A ∣ A B ∣ A ∣ 00 ∣ B B \rm A \to RB | BA | AB | A | 00 | BBA→RB∣BA∣AB∣A∣00∣BB

B → 00 \rm B \to 00B→00

R → B A \rm R \to BAR→BA


7 . 添加变元 : 添加新规则 C → 0 \rm C \to 0C→0 ; 目的是将 B → 00 \rm B \to 00B→00 中的 2 22 个终端字符转为两个变元 ;


S 0 → R B ∣ B A ∣ A B ∣ A ∣ C C ∣ B B \rm S_0 \to RB | BA | AB | A | CC | BBS

0


→RB∣BA∣AB∣A∣CC∣BB

A → R B ∣ B A ∣ A B ∣ A ∣ C C ∣ B B \rm A \to RB | BA | AB | A | CC | BBA→RB∣BA∣AB∣A∣CC∣BB

B → C C \rm B \to CCB→CC

R → B A \rm R \to BAR→BA

C → 0 \rm C \to 0C→0


目录
相关文章
|
存储 Java 调度
Springboot集成Quartz(任务存储在数据库)
集成quartz实现定时调度,quartz是一个功能丰富的开源的任务调用系统,它可以定义很多job并发执行,支持事务和集群
2203 0
|
5月前
|
人工智能 运维 监控
Agent OS:企业为什么要建一个专门"管AI"的平台?
Agent OS是企业级AI智能体治理平台,解决多Agent协同中的权限混乱、技能重复、审计缺失与运维不可见等痛点。它统一管控创建、编排、技能共享与安全审计,让数字员工有序、可控、高效运行。(239字)
251 0
|
7月前
|
人工智能 JSON 文字识别
一行命令,让你的 Code Agent 会读PDF
一行命令 `npx skills add tanis90/pdf-converter-mineru`,即可为Claude Code、Cursor等主流Code Agent注入PDF阅读能力。基于上海AI Lab开源的MinerU引擎,支持扫描件OCR、表格/公式识别、中英混排,自动选择快读或高精模式,开箱即用,无需部署MCP服务。(239字)
3803 16
|
7月前
|
人工智能 自然语言处理 数据可视化
阿里云百炼上线DeepSeek-V4:API 价格与官网一致,百万Tokens输入最低1元、输出最低2元
阿里云百炼正式推出DeepSeek-V4系列模型,包含DeepSeek-V4-pro和DeepSeek-V4-flash两款,全模型享受低至4.5折优惠,API价格与DeepSeek官网一致,百万Tokens输入最低1元、输出最低2元。该系列模型覆盖全面、成本优化显著且使用便捷,支持跨模型使用,承诺消费越高、周期越长,折扣越大。活动提供多种包月、包季套餐及特惠价格,满足不同用户需求,助力企业和开发者轻松实现AI落地,广泛应用于电商营销、广告创作、短剧漫剧、AI Coding、智能客服及AI办公等领域。
10331 4
|
12月前
|
IDE 开发工具 开发者
Mac 怎么安装 PyCharm 2020.1.dmg?超简单教程(附安装包)
下载PyCharm 2020.1.dmg文件后,双击打开并拖拽至“应用程序”文件夹。若提示“无法验证开发者”,可通过系统偏好设置或右键强制打开。安装完成后,从启动台或应用程序中启动即可使用。
|
存储 弹性计算 缓存
阿里云服务器价格表参考,不同实例规格云服务器月付及年付活动价格(2024更新)
阿里云租服务器一年多少钱?不同时期阿里云服务器的租用价格不同,进入2024年,阿里云继续推出各种云服务器优惠政策,轻量应用服务器2核2G 61元1年,2核4G 165元1年;云服务器2核2G3M只要99元1年,2核4G5M只要199元1年;4核16G月付只要26.52元1个月。本文为大家整理汇总了目前阿里云的活动中,所有云服务器的月付及年付价格情况,以表格形式展示给大家,以供参考。
阿里云服务器价格表参考,不同实例规格云服务器月付及年付活动价格(2024更新)
|
前端开发
「前端经验总结」大型业务项目中,前端如何撰写设计文档
设计文档可以帮助开发梳理业务功能,呈现优质的开发思维的载体。另外,当开发思路逐渐丰富,开发速度也就提上来了。所以本篇分享笔者前端的开发中尤其是大型业务项目,是如何撰写设计文档的。
2017 1
|
人工智能 前端开发 程序员
平替cursor吗?通义灵码创造AI导航网站
作为一名古老语言COBOL程序员,我习惯了面向过程的编程方式。近期尝试用通义灵码创建了一个AI导航网站,并发布在微信公众号上。由于前端知识有限,网站的CSS特效是逐步生成的。尽管之前使用过cursor、cline+deepseek等工具,但这次通义灵码的帮助让我更顺利地完成了项目。网站展示了收集的资料和资源,效果令人满意。 [查看网站](https://mp.weixin.qq.com/s/LsrAgdq6-0rnednxDjrqUw)
|
安全 Shell Linux
ssh密码忘记了怎么办
通过上述措施,不仅能够有效应对SSH密码遗忘的挑战,还能全方位加固SSH连接的安全,确保数据传输的无忧。
1581 2
|
API
国家名称大全免费API接口教程
此API提供全球国家信息查询服务,包括坐标、中英文名称、简称及域名后缀。支持POST/GET请求,需提供用户ID和KEY。返回状态码、消息内容及结果集。示例URL:https://cn.apihz.cn/api/other/country.php?id=88888888&key=88888888。详情见:https://www.apihz.cn/api/country.html。
824 15

热门文章

最新文章