• 形式语言自动机课程笔记
  • 学到编译原理的时候用到了文法相关概念,复习自动机正好把以前的笔记整理一下也贴上来

一、集合及集合的基本运算

(0)集合

  • 集合(set):一组可区分的对象的全体称为集合,而这些对象称为集合的元素(element)
  • 集合的描述:
描述方式 适用 规则 例子
列举法 元素个数较少的集合 直接把元素全部列出 S={a,b,c,d}
形式化描述 元素个数较多的集合特别是由无穷多个元素组成的集合 {x│P(x)} S={n│n是偶数}

(1)交并差补

一张图不解释
形式语言自动机(1)—— 预备知识

(2)幂集

  • 幂集:集合A的幂集为A的所有子集之集,记2A2^A
  • 例:
    • A={a,b,c},
      2A={BBA}={Θ,{a},{b},{c},{a,b},{a,c},{b,c},{a,b,c}}2^A= \{ B∣B \subseteq A\}=\{ \Theta ,\{a\},\{b\},\{c\},\{a,b\},\{a,c\},\{b,c\},\{a,b,c\}\}

(3)笛卡尔积

  • 笛卡尔积:集合的笛卡尔积 A×B={(a,b)aA,bB}A\times B=\{(a,b)|a∈A,b∈B\},其中(a,b)称为有序对
  • 注意:有序对有先后关系,所以一般 A×BB×AA\times B \neq B\times A
  • 例:
    • 设 A={1,2 },B = {a,b,c},
      A×B={(1,a),(1,b),(1,c),(2,a),(2,b),(2,c)}A\times B=\{ (1, a), (1, b), (1, c), (2, a), (2, b), (2, c) \}

(4)关系

  1. 关系R:A,BaAbB设有集合A,B,a∈A,b∈B

    • 由集合A到集合B的关系,是AxB的任何子集
    • (a,b)∈R,写作aRb
    • 本质上是有序对的集合,看作A到B的一个映射
    • 若A=B,称A上的关系;否则称A到B的关系
  2. 关系的k次积RkR^kAa1,a2A设有集合A,a_1,a_2∈A

    • 递归定义:
      1. a1R1a2a_1R^1a_2 <=> a1Ra2a_1R a_2
      2. a1Ria2a_1R^ia_2 <=> bA,使a1RbbRi1a2,(i=2,3..k存在b \in A,使a_1Rb且bR^{i-1}a_2, (i=2,3..k)
    • 看作在A上映射了k-1次
  3. 关系的传递闭包R+R^+Aa1,a2A设有集合A,a_1,a_2∈A

    • a1R+a2a_1R^+a_2 <=> a1Ria2i=1,2,3..a_1R^ia_2 (i=1,2,3..)
      R+=i1RiR^+=\cup_{i≥1}R^i
    • 看作在A上映射了任意多次(不含0次)
  4. 关系的自反传递闭包RR^*Aa1,a2A设有集合A,a_1,a_2∈A

    • 规定R0R^0a1R0a2<=>a1=a2a_1R^0a_2 <=> a_1=a_2,则R=R0R+R^*=R^0\cup R^+
    • 只比R+多一些形如(a,a)的,看作看作在A上映射了任意多次,(含0次)

二、字母表,字符串和语言

(1)字母表

  1. 字母表(Σ)字母符号的有限非空集。(这里的字母符号不是指狭义的英文字符,可以是数字,也可以加号下划线之类的任何符号)

(2)字符串

  1. 字符串在Σ上定义的符号串称字符串,定义:
    1. ε为空串,它不含任何Σ上的符号
    2. 若X为Σ上符号串,a∈Σ,则Xa是Σ上符号串
    3. Y为Σ上符号串 <=> Y由1、2推出
  2. 空串(ε)特殊字符串,由0个符号组成
    1. 不是空白符号( 空格也是一个符号 )
    2. 任何Σ中都有ε
    3. 空串和其他串拼接时失去作用:Xε=εX=X
  3. 字符串术语:
    1. 字符串的连接:若X.Y为Σ上符号串,则XY也是Σ上符号串
    2. 字符串的逆转XRX^R:将字符串中各符号逆序写出,若X为单个符号串或ε,则XR=XX^R=X
    3. 前缀删去原字符串尾部的零个或多于零个符号
    4. 后缀删去原字符串的头部的零个或多于零个符号
      • (真)前/后缀:X为XY前缀;若XXYX\neq XY,X为真前缀(X可为ε)
    5. 子串:从原字符串中删去一个前缀和一个后缀
    6. 子序列:从原字符串中删去零个或多于零个符号(这些符号不要求连续
    7. 字符串长度X|X|字符串中字符个数
    8. 字符串的幂ana^n : 符号/字符串a连续出现n次
      形式语言自动机(1)—— 预备知识

(3)语言

  1. 语言(L)对于给定字母表Σ,Σ上字符串的一个集合,称为Σ上的语言
  2. 前缀性质:L为某Σ上的一个语言,若L中任意字符串都不是另一个字符串的前缀,则L有~
  3. 语言的运算:
    1. 集合基本运算:交并差补(语言是特殊的集合)

    2. 语言的连接L1L_1L2L_2的连接 L1L2L_1L_2 由下式定义:L1L2={xyxL1,yL2}L_1L_2=\{xy∣x∈L_1,y∈L_2\}(排列组合)

    3. 语言的闭包LL^*: 递归定义:

      1. L0={ε}L^0=\{ε\}
      2. 对于n≥1, Ln=LLn1L^n =LL^{n-1};
      3. L=LnL^*=∪L^n

      直观含义:以任意次序连接L中任意多个字符串,所组成的集合

    4. 语言的正闭包L+L^+L+=Ln(n>=1)L=L0L+L^+=∪L^n (n>=1),故L^*=L^0∪L^+
      注意:字母表Σ本身也是Σ上的语言,有Σ*和Σ+类似定义

相关文章:

  • 2021-05-04
  • 2021-04-08
  • 2021-10-26
  • 2021-05-25
  • 2021-05-29
  • 2021-09-13
  • 2022-12-23
  • 2021-12-18
猜你喜欢
  • 2021-06-06
  • 2021-08-20
  • 2021-11-10
  • 2022-01-06
相关资源
相似解决方案