形式语言自动机(1)—— 预备知识

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

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

(0)集合

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

(1)交并差补

一张图不解释
在这里插入图片描述

(2)幂集

  • 幂集:集合A的幂集为A的所有子集之集,记 2 A 2^A 2A
  • 例:
    • A={a,b,c},
      2 A = { B ∣ B ⊆ A } = { Θ , { 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\}\} 2A={BBA}={Θ,{a},{b},{c},{a,b},{a,c},{b,c},{a,b,c}}

(3)笛卡尔积

  • 笛卡尔积:集合的笛卡尔积 A × B = { ( a , b ) ∣ a ∈ A , b ∈ B } A\times B=\{(a,b)|a∈A,b∈B\} A×B={(a,b)aA,bB},其中(a,b)称为有序对
  • 注意:有序对有先后关系,所以一般 A × B ≠ B × A A\times B \neq B\times A A×B=B×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) \} A×B={(1,a),(1,b),(1,c),(2,a),(2,b),(2,c)}

(4)关系

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

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

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

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

    • 规定 R 0 R^0 R0 a 1 R 0 a 2 < = > a 1 = a 2 a_1R^0a_2 <=> a_1=a_2 a1R0a2<=>a1=a2,则 R ∗ = R 0 ∪ R + R^*=R^0\cup R^+ R=R0R+
    • 只比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. 字符串的逆转 X R X^R XR:将字符串中各符号逆序写出,若X为单个符号串或ε,则 X R = X X^R=X XR=X
    3. 前缀删去原字符串尾部的零个或多于零个符号
    4. 后缀删去原字符串的头部的零个或多于零个符号
      • (真)前/后缀:X为XY前缀;若 X ≠ X Y X\neq XY X=XY,X为真前缀(X可为ε)
    5. 子串:从原字符串中删去一个前缀和一个后缀
    6. 子序列:从原字符串中删去零个或多于零个符号(这些符号不要求连续
    7. 字符串长度 ∣ X ∣ |X| X字符串中字符个数
    8. 字符串的幂 a n a^n an : 符号/字符串a连续出现n次
      在这里插入图片描述

(3)语言

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云端FFF

所有博文免费阅读,求打赏鼓励~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值