- 形式语言自动机课程笔记
- 学到编译原理的时候用到了文法相关概念,复习自动机正好把以前的笔记整理一下也贴上来
一、集合及集合的基本运算
(0)集合
-
集合(set):一组可区分的对象的全体称为集合,而这些对象称为集合的元素(element) - 集合的描述:
| 描述方式 | 适用 | 规则 | 例子 |
|---|---|---|---|
| 列举法 | 元素个数较少的集合 | 直接把元素全部列出 | S={a,b,c,d} |
| 形式化描述 | 元素个数较多的集合特别是由无穷多个元素组成的集合 | {x│P(x)} | S={n│n是偶数} |
(1)交并差补
一张图不解释
(2)幂集
-
幂集:集合A的幂集为A的所有子集之集,记 - 例:
- A={a,b,c},
则
- A={a,b,c},
(3)笛卡尔积
-
笛卡尔积:集合的笛卡尔积 ,其中(a,b)称为有序对 - 注意:有序对有先后关系,所以一般
- 例:
- 设 A={1,2 },B = {a,b,c},
则
- 设 A={1,2 },B = {a,b,c},
(4)关系
-
关系R:- 由集合A到集合B的关系,是AxB的任何子集。
- (a,b)∈R,写作
aRb。 - 本质上是有序对的集合,看作A到B的一个映射
- 若A=B,称A上的关系;否则称A到B的关系
-
关系的k次积:- 递归定义:
- <=>
- <=>
- 看作在A上映射了k-1次
- 递归定义:
-
关系的传递闭包:-
<=>
即 - 看作在A上映射了任意多次(不含0次)
-
<=>
-
关系的自反传递闭包:- 规定:,则
- 只比R+多一些形如(a,a)的,看作看作在A上映射了任意多次,(含0次)
二、字母表,字符串和语言
(1)字母表
-
字母表(Σ):字母符号的有限非空集。(这里的字母符号不是指狭义的英文字符,可以是数字,也可以加号下划线之类的任何符号)
(2)字符串
-
字符串:在Σ上定义的符号串称字符串,定义:- ε为空串,它不含任何Σ上的符号
- 若X为Σ上符号串,a∈Σ,则Xa是Σ上符号串
- Y为Σ上符号串 <=> Y由1、2推出
-
空串(ε): 特殊字符串,由0个符号组成- 不是空白符号( 空格也是一个符号 )
- 任何Σ中都有ε
- 空串和其他串拼接时失去作用:Xε=εX=X
- 字符串术语:
-
字符串的连接:若X.Y为Σ上符号串,则XY也是Σ上符号串 -
字符串的逆转:将字符串中各符号逆序写出,若X为单个符号串或ε,则 -
前缀:删去原字符串尾部的零个或多于零个符号 -
后缀:删去原字符串的头部的零个或多于零个符号-
(真)前/后缀:X为XY前缀;若,X为真前缀(X可为ε)
-
-
子串:从原字符串中删去一个前缀和一个后缀 -
子序列:从原字符串中删去零个或多于零个符号(这些符号不要求连续) -
字符串长度:字符串中字符个数 -
字符串的幂: 符号/字符串a连续出现n次
-
(3)语言
-
语言(L):对于给定字母表Σ,Σ上字符串的一个集合,称为Σ上的语言 -
前缀性质:L为某Σ上的一个语言,若L中任意字符串都不是另一个字符串的前缀,则L有~ - 语言的运算:
-
集合基本运算:交并差补(语言是特殊的集合)
-
语言的连接:和的连接 由下式定义:(排列组合) -
语言的闭包: 递归定义:- 对于n≥1, ;
直观含义:以任意次序连接L中任意多个字符串,所组成的集合)
-
语言的正闭包:
注意:字母表Σ本身也是Σ上的语言,有Σ*和Σ+类似定义
-