《形式语言与自动机理论(第4版)》笔记(一)

文章目录

    • @[toc]
    • 第一章:绪论
      • 1.1|集合的基础知识
        • 集合论的发展
        • 集合的基数
        • 无穷集
        • 包集
        • 等价符号
        • 集族
        • 对称差
        • 幂集
      • 1.2|关系
        • 二元关系
        • 等价类
        • 关系的合成
        • 递归定义
        • 归纳法证明
          • 例题
            • 问题
            • 解答
        • 闭包
          • 正闭包
          • 克林闭包
          • 正闭包和克林闭包的性质
      • 1.3|图
        • 无向图
          • 度数
        • 有向图
      • 1.4|语言
        • 形式语言的产生
        • 字母表的乘积
        • 字母表的幂
        • 字母表的闭包
          • 正闭包
          • 克林闭包
        • 句子
        • 出现
        • 语言
    • 第二章:文法
      • 2.1|启示
      • 2.2|形式定义
        • 文法
          • 产生式
        • 推导
          • 语法范畴
        • 文法产生的语言
        • 句子
        • 句型
      • 2.3|文法的构造
        • 文法的等价
        • 文法的表示
        • 文法的构造
      • 2.4|文法的乔姆斯基体系
        • 文法
          • 0 0 0型文法
          • 1 1 1型文法
          • 2 2 2型文法
          • 3 3 3型文法
        • L L L R L RL RL的充要条件
          • 证明
            • 充分性
            • 必要性
        • 线性文法
          • 右线性文法
          • 左线性文法
          • L L L是左线性语言的充要条件
          • 定理
          • 句子的分析过程
      • 2.5|空语句
        • 空产生式
        • 定理
          • 证明
            • 证明 L ( G ′ ) ⊆ L ( G ) L(G^{'}) \subseteq L(G) L(G)L(G)
            • 证明 L ( G ) ⊆ L ( G ′ ) L(G) \subseteq L(G^{'}) L(G)L(G)
    • 后继
      • 《形式语言与自动机理论(第4版)》笔记(二)

第一章:绪论


1.1|集合的基础知识

集合论的发展
  • 集合论是德国数学家康托于 1874 1874 1874年创立的,经历了两个阶段
    • 1908 1908 1908年以前称为朴素集合论,又称为康托集合论,存在集合悖论问题
    • 哲墨罗于 1908 1908 1908年提出了第一个集合论公理系统,经富兰科尔和斯库利姆改进和补充,形成了 Z F ZF ZF公理系统,同年,罗素给出了关于集合型的层次理论——类型论
集合的基数
  • 如果集合 A A A与集合 B B B之间有一个一一对应,则称它们具有相同的基数
  • 通常用 ∣ A ∣ |A| A表示集合 A A A的基数
  • 集合的基数又称为集合的势
无穷集
  • 无穷集可以分成可数集和不可数集
    • S S S是一个无穷集,如果集合 S S S与自然数集 N N N具有相同的基数,则称 S S S是可数集
    • 否则,称 S S S是不可数集
包集
  • 如果集合 A A A是集合 B B B的子集,则称集合 B B B是集合 A A A的包集
等价符号
  • ⇔ \Leftrightarrow 可用 i f f iff iff表示
集族
  • 当一个集合的元素都是集合时,这样的集合称为集族
对称差
  • A A A B B B是两个集合, A A A B B B的对称差由属于 A A A但不属于 B B B,以及属于 B B B但不属于 A A A的所有元素组成,记作 A ⊕ B A \oplus B AB

  • A ⊕ B = ( A ∪ B ) − ( A ∩ B ) = ( A − B ) ∪ ( B − A ) A \oplus B = (A \cup B) - (A \cap B) = (A - B) \cup (B - A) AB=(AB)(AB)=(AB)(BA)

幂集
  • 对任意集合 A A A B B B,有 2 A ∩ B = 2 A ∩ 2 B 2^{A \cap B} = 2^{A} \cap 2^{B} 2AB=2A2B

1.2|关系

二元关系
  • A A A B B B是两个集合,任意的 R ⊆ A × B R \subseteq A \times B RA×B R R R A A A B B B的二元关系
  • R R R A A A上的二元关系
    • 如果对任意 a ∈ A a \in A aA,有 ( a , a ) ∉ R (a , a) \notin R (a,a)/R,则称 R R R是反自反的
    • 如果对任意 a a a b ∈ A b \in A bA,当 ( b , a ) ∈ R (b , a) \in R (b,a)R ( a , b ) ∈ R (a , b) \in R (a,b)R同时成立时,必有 a = b a = b a=b,则称 R R R是反对称的
  • 自反、对称、传递称为关系的三歧性
等价类
  • R R R是集合 S S S上的等价关系,则满足如下要求的 S S S的划分 S 1 S_{1} S1 S 2 S_{2} S2 ⋯ \cdots S n S_{n} Sn ⋯ \cdots 称为 S S S关于 R R R的等价划分, S i S_{i} Si称为等价类

    • S = S 1 ∪ S 2 ∪ ⋯ ∪ S n ∪ ⋯ S = S_{1} \cup S_{2} \cup \cdots \cup S_{n} \cup \cdots S=S1S2Sn

    • 如果 i ≠ j i \neq j i=j,则 S i ∩ S j = ∅ S_{i} \cap S_{j} = \emptyset SiSj=

    • 对任意 i i i S i S_{i} Si中的任意两个元素 a a a b b b a R b a R b aRb恒成立

    • 对任意 i i i j j j i ≠ j i \neq j i=j S i S_{i} Si中的任意元素 a a a S j S_{j} Sj中的任意元素 b b b a R b a R b aRb恒不成立

  • R R R S S S分成的等价类的个数称为 R R R S S S上的指数, R R R可将 S S S分成无穷多个等价类,此时称 R R R具有无穷指数

关系的合成
  • R 1 ⊆ A × B R_{1} \subseteq A \times B R1A×B A A A B B B的关系, R 2 ⊆ B × C R_{2} \subseteq B \times C R2B×C B B B C C C的关系,则 R 1 R_{1} R1 R 2 R_{2} R2的合成 R 1 ∘ R 2 R_{1} \circ R_{2} R1R2 A A A C C C的关系

R 1 ∘ R 2 = {   ( a , c ) ∣ ∃ ( a , b ) ∈ R 1 , ( b , c ) ∈ R 2   } R_{1} \circ R_{2} = \set{(a , c) \mid \exist (a , b) \in R_{1} , (b , c) \in R_{2}} R1R2={(a,c)(a,b)R1,(b,c)R2}

递归定义
  • 又称为归纳定义,可以用来定义一个集合,由 3 3 3部分组成

    • 基础:指出该集合最基本的元素
    • 归纳:指出用集合中的元素来构造集合的新元素的规则
    • 极小性限定:指出一个对象是所定义的集合中的元素的充要条件是对该对象可以通过有限次地使用基础和归纳条款中所给的规定构造出来
  • R R R S S S上的二元关系,则 R n R^{n} Rn递归定义如下

    • R 0 = {   ( a , a ) ∣ a ∈ S   } R^{0} = \set{(a , a) \mid a \in S} R0={(a,a)aS}

    • R i = R i − 1 R ( i = 1 , 2 , 3 , ⋯   ) R^{i} = R^{i - 1} R (i = 1 , 2 , 3 , \cdots) Ri=Ri1R(i=1,2,3,)

归纳法证明
  • 归纳法证明与递归定义相对应,由三步组成

    • 基础:证明该集合的最基本元素具有性质 P P P

    • 归纳:证明如果被定义集合的元素 a a a b b b ⋯ \cdots 具有性质 P P P,则用某种运算、函数或组合规则对这些元素进行处理后所得的结果也具有性质 P P P

    • 由归纳法原理,集合中的所有元素具有性质 P P P——集合具有性质 P P P

例题
问题
  • 对有穷集合 A A A,证明 ∣ 2 A ∣ = 2 ∣ A ∣ |2^{A}| = 2^{|A|} 2A=2A
解答
  • A A A为一个有穷集合,现施归纳于 ∣ A ∣ |A| A

  • 基础:当 ∣ A ∣ = 0 |A| = 0 A=0时, 2 A = {   ∅   } 2^{A} = \set{\emptyset} 2A={},从而 ∣ 2 A ∣ = ∣ {   ∅   } ∣ = 1 |2^{A}| = |\set{\emptyset}| = 1 2A={}=1 2 ∣ A ∣ = 2 0 = 1 2^{|A|} = 2^{0} = 1 2A=20=1,所以 ∣ 2 A ∣ = 2 ∣ A ∣ |2^{A}| = 2^{|A|} 2A=2A ∣ A ∣ = 0 |A| = 0 A=0成立

  • 归纳

    • 假设 ∣ A ∣ = n |A| = n A=n时结论成立, n ≥ 0 n \geq 0 n0,往证当 ∣ A ∣ = n + 1 |A| = n + 1 A=n+1时结论成立

    • A = B ∪ {   a   } A = B \cup \set{a} A=B{a} a ∉ B a \notin B a/B ∣ A ∣ = ∣ B ∪ {   a   } ∣ = ∣ B ∣ + ∣ {   a   } ∣ = ∣ B ∣ + 1 |A| = |B \cup \set{a}| = |B| + |\set{a}| = |B| + 1 A=B{a}=B+{a}=B+1

    • 2 A = 2 B ∪ {   C ∪ {   a   } ∣ C ∈ 2 B   } 2^{A} = 2^{B} \cup \set{C \cup \set{a} \mid C \in 2^{B}} 2A=2B{C{a}C2B}

    • 由于 a ∉ B a \notin B a/B,所以 2 B ∩ {   C ∪ {   a   } ∣ C ∈ 2 B   } = ∅ 2^{B} \cap \set{C \cup \set{a} \mid C \in 2^{B}} = \emptyset 2B{C{a}C2B}=

    • 可以构造一个一一对应 f : {   C ∪ {   a   } ∣ C ∈ 2 B   } → 2 B f : \set{C \cup \set{a} \mid C \in 2^{B}} \rightarrow 2^{B} f:{C{a}C2B}2B,所以 ∣ {   C ∪ {   a   } ∣ C ∈ 2 B   } ∣ = ∣ 2 B ∣ |\set{C \cup \set{a} \mid C \in 2^{B}}| = |2^{B}| {C{a}C2B}=2B

    • ∣ 2 A ∣ = ∣ 2 B ∪ {   C ∪ {   a   } ∣ C ∈ 2 B   } ∣ = ∣ 2 B ∣ + ∣ {   C ∪ {   a   } ∣ C ∈ 2 B   } ∣ = ∣ 2 B ∣ + ∣ 2 B ∣ = 2 ∣ 2 B ∣ |2^{A}| = |2^{B} \cup \set{C \cup \set{a} \mid C \in 2^{B}}| = |2^{B}| + |\set{C \cup \set{a} \mid C \in 2^{B}}| = |2^{B}| + |2^{B}| = 2 |2^{B}| 2A=2B{C{a}C2B}=2B+{C{a}C2B}=2B+2B=2∣2B

    • 显然, B = n B = n B=n ∣ 2 B ∣ = 2 ∣ B ∣ |2^{B}| = 2^{|B|} 2B=2B

    • ∣ 2 A ∣ = 2 ∣ 2 B ∣ = 2 × 2 ∣ B ∣ = 2 ∣ B ∣ + 1 = 2 ∣ A ∣ |2^{A}| = 2 |2^{B}| = 2 \times 2^{|B|} = 2^{|B| + 1} = 2^{|A|} 2A=2∣2B=2×2B=2B+1=2A,结论对 ∣ A ∣ = n + 1 |A| = n + 1 A=n+1成立

    • 由归纳法原理,结论对任意有穷集合成立

闭包
  • P P P是关于关系的性质的集合,关系 R R R P P P闭包是包含 R R R并且具有 P P P中所有性质的最小关系
正闭包
  • R R R S S S上的二元关系, R R R的正闭包 R + R^{+} R+定义为

    • 1 1 1 R ⊆ R + R \subseteq R^{+} RR+

    • 2 2 2)如果 ( a , b ) (a , b) (a,b) ( b , c ) ∈ R + (b , c) \in R^{+} (b,c)R+,则 ( a , c ) ∈ R + (a , c) \in R^{+} (a,c)R+

    • 3 3 3)除( 1 1 1)和( 2 2 2)外, R + R^{+} R+不再含有其他任何元素

  • R + R^{+} R+具有传递性,又称为传递闭包

  • 对任意二元关系 R R R,有 R + = R ∪ R 2 ∪ R 3 ∪ ⋯ R^{+} = R \cup R^{2} \cup R^{3} \cup \cdots R+=RR2R3,当 S S S为有穷集时,有 R + = R ∪ R 2 ∪ R 3 ∪ ⋯ ∪ R ∣ S ∣ R^{+} = R \cup R^{2} \cup R^{3} \cup \cdots \cup R^{|S|} R+=RR2R3RS

克林闭包
  • R R R S S S上的二元关系, R R R的克林闭包 R ∗ R^{*} R定义为

    • 1 1 1 R 0 ⊆ R ∗ R^{0} \subseteq R^{*} R0R R ⊆ R ∗ R \subseteq R^{*} RR

    • 2 2 2)如果 ( a , b ) (a , b) (a,b) ( b , c ) ∈ R ∗ (b , c) \in R^{*} (b,c)R,则 ( a , c ) ∈ R ∗ (a , c) \in R^{*} (a,c)R

    • 3 3 3)除( 1 1 1)和( 2 2 2)外, R ∗ R^{*} R不再含有其他任何元素

  • R ∗ R^{*} R具有自反性、传递性,又称为自反传递闭包

  • 对任意二元关系 R R R,有 R ∗ = R 0 ∪ R + R^{*} = R^{0} \cup R^{+} R=R0R+

正闭包和克林闭包的性质
  • R 1 R_{1} R1 R 2 R_{2} R2 S S S上的两个二元关系,则
    • ( R 1 + ) + = R 1 + (R_{1}^{+})^{+} = R_{1}^{+} (R1+)+=R1+

    • ( R 1 ∗ ) ∗ = R 1 ∗ (R_{1}^{*})^{*} = R_{1}^{*} (R1)=R1

    • R 1 + ∪ R 2 + ⊆ ( R 1 ∪ R 2 ) + R_{1}^{+} \cup R_{2}^{+} \subseteq (R_{1} \cup R_{2})^{+} R1+R2+(R1R2)+

    • R 1 ∗ ∪ R 2 ∗ ⊆ ( R 1 ∪ R 2 ) ∗ R_{1}^{*} \cup R_{2}^{*} \subseteq (R_{1} \cup R_{2})^{*} R1R2(R1R2)


1.3|图

无向图
度数
  • G = ( V , E ) G = (V , E) G=(V,E)是一个无向图,对于 v ∈ V v \in V vV ∣ {   w ∣ ( v , w ) ∈ E   } ∣ |\set{w \mid (v , w) \in E}| {w(v,w)E}称为顶点 v v v的度数,记为 d e g ( v ) deg(v) deg(v)
有向图
  • ∀ ( v 1 , v 2 ) ∈ E \forall (v_{1} , v_{2}) \in E (v1,v2)E称为从顶点 v 1 v_{1} v1到顶点 v 2 v_{2} v2的有向边或弧, v 1 v_{1} v1称为前导, v 2 v_{2} v2称为后继

1.4|语言

形式语言的产生
  • 1959 1959 1959年,乔姆斯基通过深入研究,将本人的研究成果与克林的研究成果结合,不仅确定了文法和自动机分别从生成和识别的角度去表达语言,而且证明了文法与自动机的等价性,此时形式语言才真正诞生,并被置于数学的光芒之下
字母表的乘积
  • Σ 1 \Sigma_{1} Σ1 Σ 2 \Sigma_{2} Σ2是两个字母表, Σ 1 \Sigma_{1} Σ1 Σ 2 \Sigma_{2} Σ2的乘积: Σ 1 Σ 2 = {   a b ∣ a ∈ Σ 1 , b ∈ Σ 2   } \Sigma_{1} \Sigma_{2} = \set{ab \mid a \in \Sigma_{1} , b \in \Sigma_{2}} Σ1Σ2={abaΣ1,bΣ2}
字母表的幂
  • Σ \Sigma Σ是一个字母表, Σ \Sigma Σ n n n次幂递归地定义为

    • Σ 0 = {   ε   } \Sigma^{0} = \set{\varepsilon} Σ0={ε}

    • Σ n = Σ n − 1 Σ , n ≥ 1 \Sigma^{n} = \Sigma^{n - 1} \Sigma , n \geq 1 Σn=Σn1Σ,n1

字母表的闭包
正闭包
  • Σ \Sigma Σ是一个字母表, Σ \Sigma Σ的正闭包: Σ + = Σ ∪ Σ 2 ∪ Σ 3 ∪ ⋯ \Sigma^{+} = \Sigma \cup \Sigma^{2} \cup \Sigma^{3} \cup \cdots Σ+=ΣΣ2Σ3
克林闭包
  • Σ \Sigma Σ是一个字母表, Σ \Sigma Σ的克林闭包: Σ ∗ = Σ 0 ∪ Σ + \Sigma^{*} = \Sigma^{0} \cup \Sigma^{+} Σ=Σ0Σ+
句子
  • Σ \Sigma Σ是一个字母表, ∀ x ∈ Σ ∗ \forall x \in \Sigma^{*} xΣ x x x称为 Σ \Sigma Σ上的一个句子,句子还称为字、行、串
出现
  • Σ \Sigma Σ是一个字母表, x x x y ∈ Σ ∗ y \in \Sigma^{*} yΣ a ∈ Σ a \in \Sigma aΣ,句子 x a y xay xay中的 a a a称为 a a a在该句子中的一个出现
语言
  • Σ \Sigma Σ是一个字母表, ∀ L ⊆ Σ ∗ \forall L \subseteq \Sigma^{*} LΣ L L L称为字母表 Σ \Sigma Σ上的一个语言
  • 当含有可数无穷个句子时,称 L L L为无穷语言
  • L 1 = {   0 n ∣ n ≥ 1   } L_{1} = \set{0^{n} \mid n \geq 1} L1={0nn1} L 2 = {   1 n ∣ n ≥ 1   } L_{2} = \set{1^{n} \mid n \geq 1} L2={1nn1} L 1 L 2 = {   0 n 1 m ∣ n , m ≥ 1   } L_{1} L_{2} = \set{0^{n} 1^{m} \mid n , m \geq 1} L1L2={0n1mn,m1}

第二章:文法


2.1|启示


2.2|形式定义

文法
  • 文法 G G G是一个四元组: G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S)

    • V V V——变量的非空有穷集, ∀ A ∈ V \forall A \in V AV A A A称为语法变量,简称变量,也称为非终极符号,它表示一个语法范畴,记作 L ( A ) L(A) L(A)

    • T T T——终极符的非空有穷集, ∀ a ∈ T \forall a \in T aT a a a称为终极符,由于 V V V中符号表示语法范畴, T T T中的符号是语言的句子中出现的字符,所以有 V ∩ T = ∅ V \cap T = \emptyset VT=

    • P P P——产生式的非空有穷集合, P P P中的元素均具有形式 α → β \alpha \rightarrow \beta αβ,称为产生式,读作 α \alpha α定义为 β \beta β,其中 α ∈ ( V ∪ T ) + \alpha \in (V \cup T)^{+} α(VT)+,且 α \alpha α中至少有 V V V中的一个元素出现, β ∈ ( V ∪ T ) ∗ \beta \in (V \cup T)^{*} β(VT) α \alpha α称为产生式 α → β \alpha \rightarrow \beta αβ的左部, β \beta β称为产生式 α → β \alpha \rightarrow \beta αβ的右部,产生式又称为定义式或者语法规则

    • S S S—— S ∈ V S \in V SV,文法 G G G的开始符号

产生式
  • 对一组有相同左部的产生式: α → β 1 \alpha \rightarrow \beta_{1} αβ1 α → β 2 \alpha \rightarrow \beta_{2} αβ2 ⋯ \cdots α → β n \alpha \rightarrow \beta_{n} αβn可以简单地记为 α → β 1 ∣ β 2 ∣ ⋯ ∣ β n \alpha \rightarrow \beta_{1} \mid \beta_{2} \mid \cdots \mid \beta_{n} αβ1β2βn,其中 β 1 \beta_{1} β1 β 2 \beta_{2} β2 ⋯ \cdots β n \beta_{n} βn称为候选式

  • 文法中所有定义 α \alpha α的产生式为 α \alpha α产生式

推导
  • G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S)是一个文法,如果 α → β ∈ P \alpha \rightarrow \beta \in P αβP γ \gamma γ δ ∈ ( V ∪ T ) ∗ \delta \in (V \cup T)^{*} δ(VT),则称 γ α δ \gamma \alpha \delta γαδ G G G中直接推导出 γ β δ \gamma \beta \delta γβδ,记作 γ α δ ⇒ G γ β δ \gamma \alpha \delta \xRightarrow[G]{} \gamma \beta \delta γαδ Gγβδ,读作 γ α β \gamma \alpha \beta γαβ在文法 G G G中直接推导出 γ β δ \gamma \beta \delta γβδ,称 γ β δ \gamma \beta \delta γβδ在文法 G G G中直接归约成 γ α δ \gamma \alpha \delta γαδ

  • 推导也称为派生

  • ⇒ G \xRightarrow[G]{} G ( V ∪ T ) ∗ (V \cup T)^{*} (VT)上的二元关系,用 ⇒ G + \xRightarrow[G]{+} + G代表 ( ⇒ G ) + (\xRightarrow[G]{})^{+} ( G)+,用 ⇒ G ∗ \xRightarrow[G]{*} G代表 ( ⇒ G ) ∗ (\xRightarrow[G]{})^{*} ( G),用 ⇒ G n \xRightarrow[G]{n} n G代表 ( ⇒ G ) n (\xRightarrow[G]{})^{n} ( G)n

    • α ⇒ G n β \alpha \xRightarrow[G]{n} \beta αn Gβ表示 α \alpha α G G G中经过 n n n步推导出 β \beta β β \beta β G G G中经过 n n n步归约于 α \alpha α,即存在 α 1 \alpha_{1} α1 α 2 \alpha_{2} α2 ⋯ \cdots α n − 1 ∈ ( V ∪ T ) ∗ \alpha_{n - 1} \in (V \cup T)^{*} αn1(VT),使得 α ⇒ G α 1 \alpha \xRightarrow[G]{} \alpha_{1} α Gα1 α 1 ⇒ G α 2 \alpha_{1} \xRightarrow[G]{} \alpha_{2} α1 Gα2 ⋯ \cdots α n − 1 ⇒ G β \alpha_{n - 1} \xRightarrow[G]{} \beta αn1 Gβ
    • n = 0 n = 0 n=0时,有 α = β \alpha = \beta α=β,即 α ⇒ G 0 β \alpha \xRightarrow[G]{0} \beta α0 Gβ
语法范畴
  • G = ( {   S , A , B   } , {   0 , 1   } , {   S → A ∣ A B , A → 0 ∣ 0 A , B → 1 ∣ 11   } , S ) G = (\set{S , A , B} , \set{0 , 1} , \set{S \rightarrow A \mid AB , A \rightarrow 0 \mid 0A , B \rightarrow 1 \mid 11} , S) G=({S,A,B},{0,1},{SAAB,A00A,B111},S),则有如下一些推导

    • 对于 n ≥ 1 n \geq 1 n1 A ⇒ n 0 n A \xRightarrow{n} 0^{n} An 0n A ⇒ n 0 n A A \xRightarrow{n} 0^{n} A An 0nA

    • B ⇒ 1 B \Rightarrow 1 B1 B ⇒ 11 B \Rightarrow 11 B11

    • 语法范畴 A A A代表的集合 L ( A ) L(A) L(A) {   0 , 00 , 000 , ⋯   } = {   0 n ∣ n ≥ 1   } \set{0 , 00 , 000 , \cdots} = \set{0^{n} \mid n \geq 1} {0,00,000,}={0nn1}

    • 语法范畴 B B B代表的集合 L ( B ) L(B) L(B) {   1 , 11   } \set{1 , 11} {1,11}

    • 语法范畴 S S S代表的集合为 L ( S ) = L ( A ) ∪ L ( A ) L ( B ) = {   0 , 00 , 000 , ⋯   } ∪ {   0 , 00 , 000 , ⋯   } {   1 , 11   } = {   0 , 00 , 000 , ⋯   } ∪ {   01 , 001 , 0001 , ⋯   } ∪ {   011 , 0011 , 00011 , ⋯   } L(S) = L(A) \cup L(A) L(B) = \set{0 , 00 , 000 , \cdots} \cup \set{0 , 00 , 000 , \cdots} \set{1 , 11} = \set{0 , 00 , 000 , \cdots} \cup \set{01 , 001 , 0001 , \cdots} \cup \set{011 , 0011 , 00011 , \cdots} L(S)=L(A)L(A)L(B)={0,00,000,}{0,00,000,}{1,11}={0,00,000,}{01,001,0001,}{011,0011,00011,}

文法产生的语言
  • 设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),则称 L ( G ) = {   w ∣ w ∈ T ∗ 且 S ⇒ ∗ w   } L(G) = \set{w \mid w \in T^{*} 且 S \xRightarrow{*} w} L(G)={wwTS w}为文法 G G G产生的语言

  • 对于任意一个文法 G G G G G G产生的语言 L ( G ) L(G) L(G)就是该文法的开始符号 S S S对应的语法范畴 L ( S ) L(S) L(S)

句子
  • ∀ w ∈ L ( G ) \forall w \in L(G) wL(G) w w w称为 G G G的一个句子
句型
  • 设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),对于 ∀ α ∈ ( V ∪ T ) ∗ \forall \alpha \in (V \cup T)^{*} α(VT),如果 S ⇒ ∗ α S \xRightarrow{*} \alpha S α,则称 α \alpha α G G G产生的一个句型

2.3|文法的构造

文法的等价
  • 设有两个文法 G 1 G_{1} G1 G 2 G_{2} G2,如果 L ( G 1 ) = L ( G 2 ) L(G_{1}) = L(G_{2}) L(G1)=L(G2),则称 G 1 G_{1} G1 G 2 G_{2} G2等价
文法的表示
  • 如果约定所列的第一个产生式的左部就是该文法的开始符号,则对于一个文法,只用列出它的所有产生式
文法的构造
  • 构造文法 G G G,使得 L ( G ) = {   ω ∣ ω ∈ {   0 , 1   } +   } L(G) = \set{\omega \mid \omega \in \set{0 , 1}^{+}} L(G)={ωω{0,1}+}

    • S → 0 ∣ 1 ∣ 0 S ∣ 1 S S \rightarrow 0 \mid 1 \mid 0S \mid 1S S010S1S
  • 构造文法 G G G,使得 L ( G ) = {   ω ω T ∣ ω ∈ {   0 , 1 , 2 , 3   } +   } L(G) = \set{\omega \omega^{T} \mid \omega \in \set{0 , 1 , 2 , 3}^{+}} L(G)={ωωTω{0,1,2,3}+}

    • S → 00 ∣ 11 ∣ 22 ∣ 33 ∣ 0 S 0 ∣ 1 S 1 ∣ 2 S 2 ∣ 3 S 3 S \rightarrow 00 \mid 11 \mid 22 \mid 33 \mid 0S0 \mid 1S1 \mid 2S2 \mid 3S3 S001122330S01S12S23S3
  • 构造文法 G G G,使得 L ( G ) = {   a n b n c n ∣ n ≥ 1   } L(G) = \set{a^{n} b^{n} c^{n} \mid n \geq 1} L(G)={anbncnn1}

S → a B C ∣ a S B C C B → B C a B → a b b B → b b b C → b c c C → c c S \rightarrow aBC \mid aSBC \\ CB \rightarrow BC \\ aB \rightarrow ab \\ bB \rightarrow bb \\ bC \rightarrow bc \\ cC \rightarrow cc SaBCaSBCCBBCaBabbBbbbCbccCcc

S → a b c ∣ a S B c b B → b b c B → B c S \rightarrow abc \mid aSBc \\ bB \rightarrow bb \\ cB \rightarrow Bc SabcaSBcbBbbcBBc


2.4|文法的乔姆斯基体系

文法
0 0 0型文法
  • 设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),则 G G G叫做 0 0 0型文法或短语结构文法, L ( G ) L(G) L(G)叫做 0 0 0型语言、短语结构语言( P S L PSL PSL)或递归可枚举集
1 1 1型文法
  • 设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P αβP,均有 ∣ β ∣ ≥ ∣ α ∣ |\beta| \geq |\alpha| βα成立,则称 G G G 1 1 1型文法或上下文有关文法, L ( G ) L(G) L(G)叫做 1 1 1型语言或上下文有关语言( C S L CSL CSL
2 2 2型文法
  • 设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P αβP,均有 ∣ β ∣ ≥ ∣ α ∣ |\beta| \geq |\alpha| βα,并且 α ∈ V \alpha \in V αV成立,则称 G G G 2 2 2型文法或上下文无关文法, L ( G ) L(G) L(G)叫做 2 2 2型语言或上下文无关语言( C F L CFL CFL
3 3 3型文法
  • 设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P αβP α → β \alpha \rightarrow \beta αβ均具有形式 A → w A \rightarrow w Aw A → w B A \rightarrow wB AwB A A A B ∈ V B \in V BV w ∈ T + w \in T^{+} wT+,则称 G G G 3 3 3型文法、正则文法或正规文法, L ( G ) L(G) L(G)叫做 3 3 3型语言、正则语言或正规语言( R L RL RL
L L L R L RL RL的充要条件
  • L L L R L RL RL的充要条件是存在一个文法,该文法产生语言 L L L,并且它的产生式要么是形如 A → a A \rightarrow a Aa的产生式,要么是形如 A → a B A \rightarrow aB AaB的产生式,其中 A A A B B B为语法变量, a a a为终极符号
证明
充分性
  • 设有 G ′ G^{'} G L ( G ′ ) = L L(G^{'}) = L L(G)=L,且 G ′ G^{'} G的产生式形式满足定理要求,这种文法是 R G RG RG,所以, G ′ G^{'} G产生的语言是 R L RL RL
必要性
  • 构造文法 G ′ G^{'} G

    • L L L R L RL RL,存在有 R G   G RG \ G RG G,该文法产生 L L L,设 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S) P P P中的产生式要么是形如 A → w A \rightarrow w Aw的,要么是形如 A → w B A \rightarrow wB AwB的,设 w = a 1 a 2 ⋯ a n , n ≥ 1 w = a_{1} a_{2} \cdots a_{n} , n \geq 1 w=a1a2an,n1

    • 对于 P P P中的每一个产生式,如果该产生式形如 A → a 1 a 2 ⋯ a n A \rightarrow a_{1} a_{2} \cdots a_{n} Aa1a2an,则将 A → a 1 A 1 A \rightarrow a_{1} A_{1} Aa1A1 A 1 → a 2 A 2 A_{1} \rightarrow a_{2} A_{2} A1a2A2 ⋯ \cdots A n − 1 → a n A_{n - 1} \rightarrow a_{n} An1an放入产生式集 P ′ P^{'} P

    • 如果该产生式形如 A → a 1 a 2 ⋯ a n B A \rightarrow a_{1} a_{2} \cdots a_{n} B Aa1a2anB,则将 A → a 1 A 1 A \rightarrow a_{1} A_{1} Aa1A1 A 1 → a 2 A 2 A_{1} \rightarrow a_{2} A_{2} A1a2A2 ⋯ \cdots A n − 1 → a n B A_{n - 1} \rightarrow a_{n} B An1anB放入产生式集 P ′ P^{'} P

    • V ′ V^{'} V是由 P ′ P^{'} P中所有产生式中的语法变量构成的集合, G ′ = ( V ′ , T , P ′ , S ) G^{'} = (V^{'} , T , P^{'} , S) G=(V,T,P,S)

  • 证明 L ( G ′ ) = L ( G ) L(G^{'}) = L(G) L(G)=L(G)

    • 需证明 ∀ x ∈ T ∗ , x ∈ L ( G ′ ) ⇔ x ∈ L ( G ) \forall x \in T^{*} , x \in L(G^{'}) \Leftrightarrow x \in L(G) xT,xL(G)xL(G)

    • 首先证明如果 A ⇒ G n x A \xRightarrow[G]{n} x An Gx,则 A ⇒ G ′ m x A \xRightarrow[G^{'}]{m} x Am Gx

      • n = 1 n = 1 n=1时,必有 A → x ∈ P A \rightarrow x \in P AxP,设 x = a 1 a 2 ⋯ a h x = a_{1} a_{2} \cdots a_{h} x=a1a2ah,在 P ′ P^{'} P中有 A ⇒ G ′ a 1 A 1 ⇒ G ′ a 1 a 2 A 2 ⇒ G ′ ⋯ ⇒ G ′ a 1 a 2 ⋯ a h A \xRightarrow[G^{'}]{} a_{1} A_{1} \xRightarrow[G^{'}]{} a_{1} a_{2} A_{2} \xRightarrow[G^{'}]{} \cdots \xRightarrow[G^{'}]{} a_{1} a_{2} \cdots a_{h} A Ga1A1 Ga1a2A2 G Ga1a2ah

      • 所以, n = 1 n = 1 n=1时结论成立

      • n = k n = k n=k时结论成立,往证 n = k + 1 n = k + 1 n=k+1时结论成立

      • n = k + 1 n = k + 1 n=k+1 x = x 1 x 2 x = x_{1} x_{2} x=x1x2,有 A ⇒ G x 1 B ⇒ G k x 1 x 2 A \xRightarrow[G]{} x_{1} B \xRightarrow[G]{k} x_{1} x_{2} A Gx1Bk Gx1x2 B ⇒ G k x 2 B \xRightarrow[G]{k} x_{2} Bk Gx2,设 x 1 = a 1 a 2 ⋯ a h x_{1} = a_{1} a_{2} \cdots a_{h} x1=a1a2ah,则 A → a 1 a 2 ⋯ a h B ∈ P A \rightarrow a_{1} a_{2} \cdots a_{h} B \in P Aa1a2ahBP

      • P ′ P^{'} P中有 A ⇒ G ′ a 1 A 1 ⇒ G ′ a 1 a 2 A 2 ⇒ G ′ ⋯ ⇒ G ′ a 1 a 2 ⋯ a h B A \xRightarrow[G^{'}]{} a_{1} A_{1} \xRightarrow[G^{'}]{} a_{1} a_{2} A_{2} \xRightarrow[G^{'}]{} \cdots \xRightarrow[G^{'}]{} a_{1} a_{2} \cdots a_{h} B A Ga1A1 Ga1a2A2 G Ga1a2ahB,由归纳假设,存在 m m m,使得 B ⇒ G ′ m x 2 B \xRightarrow[G^{'}]{m} x_{2} Bm Gx2,所以 A ⇒ G ′ a 1 A 1 ⇒ G ′ a 1 a 2 A 2 ⇒ G ′ ⋯ ⇒ G ′ a 1 a 2 ⋯ a h B ⇒ G ′ m a 1 a 2 ⋯ a h x 2 A \xRightarrow[G^{'}]{} a_{1} A_{1} \xRightarrow[G^{'}]{} a_{1} a_{2} A_{2} \xRightarrow[G^{'}]{} \cdots \xRightarrow[G^{'}]{} a_{1} a_{2} \cdots a_{h} B \xRightarrow[G^{'}]{m} a_{1} a_{2} \cdots a_{h} x_{2} A Ga1A1 Ga1a2A2 G Ga1a2ahBm Ga1a2ahx2

      • 由归纳法原理,结论对 ∀ A ∈ V \forall A \in V AV成立

    • 再证明,如果 A ⇒ G ′ n x A \xRightarrow[G^{'}]{n} x An Gx,则 A ⇒ G m x A \xRightarrow[G]{m} x Am Gx

      • n = 1 n = 1 n=1时,必有 A → x ∈ P ′ A \rightarrow x \in P^{'} AxP,必有 A → x ∈ P A \rightarrow x \in P AxP,所以 A ⇒ G x A \xRightarrow[G]{} x A Gx,即结论对 n = 1 n = 1 n=1成立

      • 假设结论对 n < k n < k n<k成立

      • n = k ( k ≥ 2 ) n = k (k \geq 2) n=k(k2)时,必有 A ⇒ G ′ a 1 A 1 ⇒ G ′ a 1 a 2 A 2 ⇒ G ′ ⋯ ⇒ G ′ a 1 a 2 ⋯ a h A \xRightarrow[G^{'}]{} a_{1} A_{1} \xRightarrow[G^{'}]{} a_{1} a_{2} A_{2} \xRightarrow[G^{'}]{} \cdots \xRightarrow[G^{'}]{} a_{1} a_{2} \cdots a_{h} A Ga1A1 Ga1a2A2 G Ga1a2ah A ⇒ G ′ a 1 A 1 ⇒ G ′ a 1 a 2 A 2 ⇒ G ′ ⋯ ⇒ G ′ a 1 a 2 ⋯ a h B ⇒ G ′ m a 1 a 2 ⋯ a h x 2 A \xRightarrow[G^{'}]{} a_{1} A_{1} \xRightarrow[G^{'}]{} a_{1} a_{2} A_{2} \xRightarrow[G^{'}]{} \cdots \xRightarrow[G^{'}]{} a_{1} a_{2} \cdots a_{h} B \xRightarrow[G^{'}]{m} a_{1} a_{2} \cdots a_{h} x_{2} A Ga1A1 Ga1a2A2 G Ga1a2ahBm Ga1a2ahx2

        • 当第一种情况出现时, x = a 1 a 2 ⋯ a h x = a_{1} a_{2} \cdots a_{h} x=a1a2ah,有 A → a 1 a 2 ⋯ a h ∈ P A \rightarrow a_{1} a_{2} \cdots a_{h} \in P Aa1a2ahP,所以 A ⇒ G a 1 a 2 ⋯ a h A \xRightarrow[G]{} a_{1} a_{2} \cdots a_{h} A Ga1a2ah

        • 当第二种情况出现时, x = a 1 a 2 ⋯ a h x 2 x = a_{1} a_{2} \cdots a_{h} x_{2} x=a1a2ahx2,必有 A → a 1 a 2 ⋯ a h B ∈ P A \rightarrow a_{1} a_{2} \cdots a_{h} B \in P Aa1a2ahBP A ⇒ G a 1 a 2 ⋯ a h B A \xRightarrow[G]{} a_{1} a_{2} \cdots a_{h} B A Ga1a2ahB,且 B B B G ′ G^{'} G中用不足 k k k步推导出 x 2 x_{2} x2,由归纳假设,存在 m m m B B B G G G中经过 m m m步推导出 x 2 x_{2} x2,从而 A ⇒ G a 1 a 2 ⋯ a h B ⇒ G m a 1 a 2 ⋯ a h x 2 A \xRightarrow[G]{} a_{1} a_{2} \cdots a_{h} B \xRightarrow[G]{m} a_{1} a_{2} \cdots a_{h} x_{2} A Ga1a2ahBm Ga1a2ahx2

        • 所以,无论是第一种情况还是第二种情况,对 n = k n = k n=k结论都成立

      • 由归纳法原理,结论对 ∀ A ∈ V \forall A \in V AV成立

线性文法
  • G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P αβP α → β \alpha \rightarrow \beta αβ均具有 A → x A \rightarrow x Ax A → w B x A \rightarrow wBx AwBx形式,其中, A A A B ∈ V B \in V BV w w w x ∈ T ∗ x \in T^{*} xT,则称 G G G为线性文法, L ( G ) L(G) L(G)称为线性语言
右线性文法
  • G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P αβP α → β \alpha \rightarrow \beta αβ均具有 A → x A \rightarrow x Ax A → w B A \rightarrow wB AwB形式,其中, A A A B ∈ V B \in V BV w ∈ T + w \in T^{+} wT+,则称 G G G为右线性文法, L ( G ) L(G) L(G)称为右线性语言
左线性文法
  • G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P αβP α → β \alpha \rightarrow \beta αβ均具有 A → x A \rightarrow x Ax A → B w A \rightarrow Bw ABw形式,其中, A A A B ∈ V B \in V BV w ∈ T + w \in T^{+} wT+,则称 G G G为左线性文法, L ( G ) L(G) L(G)称为左线性语言
L L L是左线性语言的充要条件
  • L L L是左线性语言的充要条件是存在文法 G G G G G G中的产生式要么是形如 A → a A \rightarrow a Aa的产生式,要么是形如 A → B a A \rightarrow Ba ABa的产生式,且 L ( G ) = L L(G) = L L(G)=L,其中 A A A B B B为语法变量, a a a为终极符号
定理
  • 左线性文法与右线性文法等价
句子的分析过程
  • 在句子的分析过程中,右线性文法对应于句子的推导过程,左线性文法对应于句子的归约过程

2.5|空语句

空产生式
  • 形如 A → ε A \rightarrow \varepsilon Aε的产生式称为空产生式,也可称为 ε \varepsilon ε产生式
定理
  • G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S)为一文法,则存在与 G G G同类型的文法 G ′ = ( V ′ , T , P ′ , S ′ ) G^{'} = (V^{'} , T , P^{'} , S^{'}) G=(V,T,P,S),使得 L ( G ) = L ( G ′ ) L(G) = L(G^{'}) L(G)=L(G),但 G ′ G^{'} G的开始符号 S ′ S^{'} S不出现在 G ′ G^{'} G的任何产生式的右部
证明
  • 当文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S)的开始符号 S S S不出现在 P P P中任何产生式的右部时, G G G就是所求
  • 否则,取 S ′ ∉ V S^{'} \notin V S/V G ′ = ( V ∪ {   S ′   } , T , P ′ , S ′ ) G^{'} = (V \cup \set{S^{'}} , T , P^{'} , S^{'}) G=(V{S},T,P,S) P ′ = P ∪ {   S ′ → α ∣ S → α ∈ P   } P^{'} = P \cup \set{S^{'} \rightarrow \alpha \mid S \rightarrow \alpha \in P} P=P{SαSαP},显然 G ′ G^{'} G G G G有相同的类型
证明 L ( G ′ ) ⊆ L ( G ) L(G^{'}) \subseteq L(G) L(G)L(G)
  • 对任意 x ∈ L ( G ′ ) x \in L(G^{'}) xL(G),在 G ′ G^{'} G中存在推导 S ′ ⇒ α ⇒ ∗ x S^{'} \Rightarrow \alpha \xRightarrow{*} x Sα x
  • P ′ P^{'} P的定义,有 S → α ∈ P S \rightarrow \alpha \in P SαP,所以 S ⇒ α ⇒ ∗ x S \Rightarrow \alpha \xRightarrow{*} x Sα x,故 x ∈ L ( G ) x \in L(G) xL(G)
证明 L ( G ) ⊆ L ( G ′ ) L(G) \subseteq L(G^{'}) L(G)L(G)
  • 对任意 x ∈ L ( G ) x \in L(G) xL(G),在 G G G中存在推导 S ⇒ α ⇒ ∗ x S \Rightarrow \alpha \xRightarrow{*} x Sα x
  • P ′ = P ∪ {   S ′ → α ∣ S → α ∈ P   } P^{'} = P \cup \set{S^{'} \rightarrow \alpha \mid S \rightarrow \alpha \in P} P=P{SαSαP},在 G ′ G^{'} G S ′ ⇒ α ⇒ ∗ x S^{'} \Rightarrow \alpha \xRightarrow{*} x Sα x,故 x ∈ L ( G ′ ) x \in L(G^{'}) xL(G)

后继


《形式语言与自动机理论(第4版)》笔记(二)


你可能感兴趣的:(数学,形式语言与自动机,笔记)