【计算理论】计算理论总结 ( 下推自动机计算过程 | 上下文无关文法 CFG 转为下推自动机 PDA ) ★★

简介: 【计算理论】计算理论总结 ( 下推自动机计算过程 | 上下文无关文法 CFG 转为下推自动机 PDA ) ★★

文章目录

一、下推自动机计算过程

二、上下文无关文法 CFG 转为下推自动机 PDA 流程



参考博客 :


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

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

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

【计算理论】下推自动机 PDA 及 计算示例

【计算理论】下推自动机 PDA ( 设计下推自动机 | 上下文无关语法 CFG 等价于 下推自动机 PDA )

【计算理论】上下文无关语法 ( CFG ) 转为 下推自动机 ( PDA )

【计算理论】下推自动机 PDA ( 上下文无关语言 CFL 的 泵引理 | 泵引理反证示例 | 自动机扩展 )





一、下推自动机计算过程


1 . 下推自动机 ( PDA ) 提升了自动机计算能力 : 在上述自动机的基础上 , 提升该自动机的计算能力 , 引入一个新的栈结构 ;


栈特点 : ① 后进先出 , ② 存储能力无限 ;



2 . 下推自动机计算有两个部分 , 一个是字符的读取 , 一个是栈内字符的存取 , 栈内只有最上面的字符会被替换 ;



3 . 下推自动机 ( PDA ) 的指令格式 : 该指令包含了 上述讲的两个操作 ;



1 , 0 → ε 1 , 0 \to \varepsilon

1,0→ε



① 自动机字符读取 : 左侧的 1 11 是从带子上读取的字符 ;


② 栈内字符存取操作 : 0 → ε 0 \to \varepsilon0→ε 是需要在栈上进行的操作 , 将栈顶的 0 00 取出 , 然后将 ε \varepsilonε 放入到栈中 , 相当于在栈中 , 使用 ε \varepsilonε 将栈顶的 0 00 替换掉 ;






二、上下文无关文法 CFG 转为下推自动机 PDA 流程


上下文无关文法 CFG 转为下推自动机 PDA 流程 :


① 开始状态 : 开始状态 q s t a r t \rm q_{start}q

start


 , 跳转到 q l o o p \rm q_{loop}q

loop


 状态的指令 ε , ε → K \rm \varepsilon , \varepsilon \to Kε,ε→K , 使用 K \rm KK 替换栈内空字符 ε \varepsilonε , 即将 K \rm KK 放入栈中 ;


② 循环状态 : q l o o p \rm q_{loop}q

loop


 状态的指令都是从本状态指向本状态 , 生成两种指令 , 一种是基本指令 , 一种是终端字符指令 ;


基本指令 S → a T b ∣ b \rm S \to aTb|bS→aTb∣b ,

生成为 " ε , S → a T b \rm \varepsilon , S \to aTbε,S→aTb " 和 " ε , S → b \rm \varepsilon , S \to bε,S→b " 两条指令 , 前面都是读取空字符作为栈读取的信息 ;


终端字符指令 , 如果存在终端字符 a \rm aa 和 b \rm bb , 那么生成 a , a → ε \rm a, a \to \varepsilona,a→ε 和 b , b → ε \rm b, b \to \varepsilonb,b→ε 两条指令 , 含义是读取栈顶 a \rm aa 字符 , 将该字符使用空字符替代 , 即从栈中删除该字符 ;



③ 接受状态 : q l o o p \rm q_{loop}q

loop


 状态跳转到 q a c c e p t \rm q_{accept}q

accept


 指令是 ε , K → ε \rm \varepsilon , K \to \varepsilonε,K→ε , 栈顶读取到 K \rm KK 字符删除 ;


④ 拆分指令 : 在循环状态 q l o o p \rm q_{loop}q

loop


 中的基本指令中存在多字符指令 , 如 ε , S → a T b \rm \varepsilon , S \to aTbε,S→aTb , S \rm SS 读取到空字符 ε \varepsilonε , 使用 a T b \rm aTbaTb 字符替换栈顶的 S \rm SS 字符 , 这是 3 33 个字符 , 肯定不行 , 需要逐个放进去 , 先放 b \rm bb , 再放 T \rm TT , 最后放 a \rm aa ;


最终分解为

ε , S → b \rm \varepsilon , S \to bε,S→b 读取空字符放入 b \rm bb 到栈顶 ,

ε , ε → T \rm \varepsilon , \varepsilon \to Tε,ε→T 读取空字符放入 T \rm TT 到栈顶 ,

ε , ε → a \rm \varepsilon , \varepsilon \to aε,ε→a 读取空字符放入 a \rm aa 到栈顶 ;


目录
相关文章
|
3月前
|
关系型数据库 MySQL 分布式数据库
你的业务库,可能就是最好的向量数据库
PolarDB MySQL版推出PolarVector,原生集成向量检索能力,无需同步数据、不新增运维体系。支持HNSW/IVF索引、多距离度量与智能过滤,兼容MySQL和OpenSearch双协议,具备ACID事务、低延迟(P95<5ms)、高召回率(>99%)等特性,适用于RAG、推荐、多模态搜索等AI场景。
279 1
你的业务库,可能就是最好的向量数据库
|
6月前
|
机器学习/深度学习 存储 人工智能
量子机器学习:AI 的下一个维度,真不是玄学
量子机器学习:AI 的下一个维度,真不是玄学
372 9
|
3月前
|
数据采集 算法 数据挖掘
大模型应用:从静态到动态:增量聚类+大模型破解无限流数据智能处理难题.98
本文详解“增量聚类 + 大模型”融合方案,破解无限流数据(如实时工单、舆情、日志)处理难题:增量聚类实现边流入边动态分组,大模型负责语义化打标(如“快递丢失理赔咨询”),替代人工标注。涵盖原理、StreamKM++算法、Embedding转换、Prompt工程及完整代码示例,助力企业构建实时智能分类系统。
371 3
|
7月前
|
传感器 数据采集 人工智能
智慧农业物联网:传感器数据上云、可视化与智能预警系统搭建
本文介绍智慧农业物联网系统三大核心:传感器数据上云、可视化展示与智能预警。涵盖传感组网、云平台对接、多维可视化及AI预警机制,结合LoRa、4G、MQTT等技术,实现精准灌溉、降本增效,推动农业数字化转型。(238字)
|
12月前
|
机器学习/深度学习 监控 算法
基于单尺度Retinex和多尺度Retinex的图像增强算法实现
基于单尺度Retinex(SSR)和多尺度Retinex(MSR)的图像增强算法实现
1394 1
|
人工智能 程序员 iOS开发
一文彻底学会HarmonyOS的AI编程助手
本文介绍了华为官方AI辅助编程工具CodeGenie,该工具支持HarmonyOS NEXT领域的智能问答、ArkTS代码补全/生成及万能卡片生成,显著提升开发效率。安装步骤包括下载插件、离线安装及授权登录,功能涵盖知识问答、代码补全与生成、以及智能生成HarmonyOS万能卡片。
798 0
|
应用服务中间件 Apache nginx
|
小程序 Java
微信小程序 | 微信公众平台SpringBoot开发实例 │ 模板消息的应用开发
在手机微信公众号中输入文本(如“你好”),公众号发送两条模板消息,
630 0
微信小程序 | 微信公众平台SpringBoot开发实例 │ 模板消息的应用开发
|
算法 Java 数据库连接
ShardingSphere 5.3.X系列【1】:Spring配置升级指南
ShardingSphere 5.3.X系列【1】:Spring配置升级指南
6165 0