【计算理论】【《计算理论导引(原书第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

你可能感兴趣的:(#,计算理论,计算理论,笔记)