【计算理论】【《计算理论导引(原书第3版)》笔记】第二章:上下文无关文法

2023-12-24 17:44

本文主要是介绍【计算理论】【《计算理论导引(原书第3版)》笔记】第二章:上下文无关文法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • @[toc]
      • 2.1|上下文无关文法概述
        • 上下文无关文法的形式化定义
        • 乔姆斯基范式
          • 定理
            • 证明

因上努力

个人主页:丷从心

系列专栏:计算理论

果上随缘


2.1|上下文无关文法概述

上下文无关文法的形式化定义
  • 上下文无关文法是一个 4 4 4元组 ( V , Σ , R , S ) (V , \Sigma , R , S) (V,Σ,R,S),且
    • V V V是一个有穷集合,称为变元集
    • Σ \Sigma Σ是一个与 V V V不相交的有穷集合,称为终结符集
    • R R R是一个有穷规则集,每条规则由一个变元和一个由变元及终结符组成的字符串构成
    • S ∈ V S \in V SV是起始变元
乔姆斯基范式
  • 称一个上下文无关文法为乔姆斯基范式,如果它的每一个规则具有如下形式

A → B C A → a A \rightarrow BC \\ A \rightarrow a ABCAa

  • 其中, a a a是任意的终结符, A A A B B B C C C是任意的变元,且 B B B C C C不能是起始变元,此外允许规则 S → ε S \rightarrow \varepsilon Sε,其中 S S S是起始变元
定理
  • 任一上下文无关语言都可以用一个乔姆斯基范式的上下文无关文法产生
证明
  • 首先,添加一个新的起始变元 S 0 S_{0} S0和规则 S 0 → S S_{0} \rightarrow S S0S,其中 S S S是原来的起始变元
    • 这样可以保证起始变元不会出现在规则的右边
  • 第二阶段,考虑所有的 ε \varepsilon ε规则
    • 删除 ε \varepsilon ε规则 A → ε A \rightarrow \varepsilon Aε,这里 A A A不是起始变元,然后对在规则右边出现的每一个 A A A,删除这个 A A A后得到一条新的规则
  • 第三阶段,处理所有的单一规则
    • 删除单一规则 A → B A \rightarrow B AB,然后只要有一条规则 B → u B \rightarrow u Bu,就要添加规则 A → u A \rightarrow u Au,除非 A → u A \rightarrow u Au是已在前面被删除的单一规则
  • 最后,把所有留下的规则转换成适当的形式
    • 把每一条规则 A → u 1 u 2 ⋯ u k A \rightarrow u_{1} u_{2} \cdots u_{k} Au1u2uk替换成规则 A → u 1 A 1 A \rightarrow u_{1} A_{1} Au1A1 A 1 → u 2 A 2 A_{1} \rightarrow u_{2} A_{2} A1u2A2 ⋯ \cdots A k − 2 → u k − 1 u k A_{k - 2} \rightarrow u_{k - 1} u_{k} Ak2uk1uk,其中 k ≥ 3 k \geq 3 k3,每一个 u i u_{i} ui是一个变元或终结符, A i A_{i} Ai是新的变元,用新变元 U i U_{i} Ui替换终结符 u i u_{i} ui,并增加规则 U i → u i U_{i} \rightarrow u_{i} Uiui

这篇关于【计算理论】【《计算理论导引(原书第3版)》笔记】第二章:上下文无关文法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/532590

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个