【形式语言】第一章绪论

集合

集合:一定范围内的、确定的、并且彼此可以区分的对象汇集在一起形成的整体叫做集合(set),简称为集(set)
元素:集合的成员为该集合的元素(element)
基数:集合中元素个数
集合的描述形式有列举法命题法两种

集合的运算

  1. 并( ∪ \cup )
  2. 交( ∩ \cap )
  3. 差( − - )
  4. 对称差( ⊕ \oplus )
  5. 笛卡尔积( × \times ×)
    A × B = { ( a , b ) ∣ a ∈ A & b ∈ B } A\times B =\{ (a,b) | a \in A \& b \in B\} A×B={(a,b)aA&bB}
  6. 幂集( 2 A 2^A 2A)
    所有集合子集(包含本身和空集)
  7. 补集( A ‾ \overline A A)

令A = {1,2,3},B = {2,3,4},U = {1,2,3,4}
A ∪ B = { 1 , 2 , 3 , 4 } , A ∩ B = { 2 , 3 } , A − B = { 1 } , A ⊕ B = { 1 , 4 } , A × B = { ( 1 , 2 ) , ( 1 , 3 ) , ( 1 , 4 ) , ( 2 , 2 ) , ( 2 , 3 ) , ( 2 , 4 ) , ( 3 , 2 ) , ( 3 , 3 ) , ( 3 , 4 ) } , 2 A = { ∅ , { 1 } , { 2 } , { 3 } , { 1 , 2 } , { 1 , 3 } , { 2 , 3 } , { 1 , 2 , 3 } } , A ‾ = { 4 } A\cup B=\{1,2,3,4\},A\cap B=\{2,3\},A-B=\{1\},A\oplus B=\{1,4\},A\times B = \{(1,2),(1,3),(1,4),(2,2),(2,3),(2,4),(3,2),(3,3),(3,4)\},2^A=\{\empty , \{1\},\{2\},\{3\},\{1,2\},\{1,3\},\{2,3\},\{1,2,3\}\},\overline A = \{4\} AB={1,2,3,4},AB={2,3},AB={1},AB={1,4},A×B={(1,2),(1,3),(1,4),(2,2),(2,3),(2,4),(3,2),(3,3),(3,4)},2A={,{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}},A={4}

关系

二元关系

二元关系:任意的 R ⊆ A × B R\subseteq A\times B RA×B ,称 R R R A A A B B B上的二元关系。
表示 ( a , b ) ∈ R (a,b)\in R (a,b)R也可表示为 a R b aRb aRb
两个域:A称为定义域,B称为值域
A = B A = B A=B时称 R R R A A A上的二元关系

几种二元关系性质
  1. 自反性 2.反自反 3.对称性 4. 反对称性 5. 传递性
    ps:对称和反对称并不是互斥的
等价关系与等价类

等价关系:具有自反性、对称性、传递性的二元关系称为等价关系。
等价类 S S S的满足如下要求的划分: S 1 S_1 S1 S 2 S_2 S2 S 3 S_3 S3、…、 S n S_n Sn、…称为S关于R的等价划分, S i S_i Si称为等价类。
(1) S = S 1 ∪ S 2 ∪ S 3 ∪ . . . ∪ S n ∪ . . . S = S_1\cup S_2\cup S_3\cup...\cup S_n\cup... S=S1S2S3...Sn...
(2)如果 i ≠ j i\not =j i=j,则 S i ∩ S j = ∅ S_i\cap S_j = \empty SiSj=
(3)对于任意的 i i i S i S_i Si中的任意两个元素 a a a b b b a R b aRb aRb恒成立。
(4)对于任意的 i i i j j j i ≠ j i\not =j i=j S i S_i Si中的任意元素 a a a S j S_j Sj中的任意元素 b b b a R b aRb aRb恒不成立

关系的合成

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_1R_2 R1R2 A A A C C C的关系:
R 1 R 2 = { ( a , c ) ∣ ∃ ( a , b ) ∈ R 1 且 ( b , c ) ∈ R 2 } R_1R_2= \{(a,c)|\exists(a,b)\in R_1且(b,c)\in R_2\} R1R2={(a,c)(a,b)R1(b,c)R2}

关系的闭包

设P是关于关系的性质的集合,关系R的P闭包(closure)是包含R并且具有P中所有性质的最小关系。

正闭包(传递闭包)

(1) R ⊆ R + R\subseteq R^+ RR+
(2)如果 ( a , b ) (a,b) (a,b) ( b , c ) ∈ R + (b,c)\in R^+ (b,c)R+,则 ( a , c ) ∈ R + (a,c)\in R^+ (ac)R+
(3)除(1)、(2)外, R + R^+ R+不再含有其他任何元素。
具有传递性
对于任意的关系R,有
R + = R ∪ R 2 ∪ R 3 ∪ . . . ∪ R n ∪ . . . . R^+ = R\cup R^2 \cup R^3\cup ... \cup R^n \cup .... R+=RR2R3...Rn....
当S为有穷集(元素所属于的集合)时,有
R + = R ∪ R 2 ∪ R 3 ∪ . . . ∪ R ∣ S ∣ R^+ = R \cup R^2 \cup R^3\cup ... \cup R^{|S|} R+=RR2R3...RS
提供一种求出 R + R^+ R+的一套算法(S为有穷集时,这是我自己想的,还没有证明)
step1:
求出 R 2 R^2 R2,令 Δ R = R 2 − R , R = R 2 ∪ R \Delta R = R^2-R,R = R^2\cup R ΔR=R2R,R=R2R
step2:
R ′ = Δ R R ∪ R Δ R R' = \Delta RR\cup R\Delta R R=ΔRRRΔR
Δ R ′ = R ′ − R \Delta R' = R' - R ΔR=RR
R = R ∪ R ′ R = R\cup R' R=RR
Δ R ′ = = ∅ \Delta R'==\empty ΔR==,则结束算法,此时 R + = = R R^+==R R+==R
Δ R ′ ≠ ∅ \Delta R'\not=\empty ΔR=,则令 Δ R = Δ R ′ \Delta R=\Delta R' ΔR=ΔR,转step2
PS:“=”均表示赋值

# python代码实现
def getmutify(set1,set2):
	s = set()
	for item1 in set1:
		for item2 in set2:
			if item1[1] == item2[0]:
				s.add(item1[0]+item2[1])
	return s

def getPositiveClosure(R):
	R_2 = getmutify(R,R)
	detR = R_2 - R
	R = R.union(R_2)
	while True:
		Rc = getmutify(detR,R).union(getmutify(R,detR))
		detRc = Rc - R
		R = R.union(Rc)
		if len(detRc) == 0:
			return R
		detR = detRc

s = getPositiveClosure({"ab","bb","bc"})
print(s) #{'ac', 'ab', 'bc', 'bb'}
克林闭包

(1) R 0 ⊆ R ∗ , R ⊆ R ∗ R^0\subseteq R^*,R\subseteq R^* R0R,RR
(2)如果 ( a , b ) (a,b) (a,b) ( b , c ) ∈ R ∗ (b,c)\in R^* (b,c)R,则 ( a , c ) ∈ R ∗ (a,c)\in R^* (ac)R
(3)除(1)、(2)外, R ∗ R^* R不再含有其他任何元素。
具有自反性、传递性

语言

语言:某个集合中的元素,按照规则组合成的符号串的集合。
形式语言理论:用数学方法,对语言的表示法、结构及特性进行研究的理论。
(1)怎么构造语言
(2)怎么识别语言
(3)怎么去分析语言的含义
自动机理论:克林在研究神经细胞中,建立了识别语言的系统——有穷状态自动机。
(1)文法与自动机是等价的。
(2)文法与自动机的运算对象:集合。

基本概念

1.字母表:字母表是一个非空有穷集合,字母表中的元素称为该字母表的一个字母(letter)。又叫做符号(symbol)、或者字符(character)。通常用 ∑ \sum 符号表示。
字符两个特性
(1)整体性,也叫不可分性。
(2)可辨认性,也叫可区分性。
2.字母表的乘积
∑ 1 ∑ 2 = { a b ∣ a ∈ ∑ 1 , b ∈ ∑ 2 } \sum_{1}\sum_2=\{ab|a\in \sum_1,b\in \sum_2\} 12={aba1,b2}
个人感觉类似于笛卡尔乘积。
3.字母表 ∑ \sum n n n次幂
∑ 0 = { ε } \sum^0=\{\varepsilon\} 0={ε}
∑ n = ∑ n − 1 ∑ \sum^n=\sum^{n-1}\sum n=n1
其中, ε \varepsilon ε是由 ∑ \sum 中的0个字符组成的。 ∣ { ε } ∣ = 1 |\{\varepsilon\}|=1 {ε}=1, ∣ ε ∣ = 0 |\varepsilon|=0 ε=0
4. ∑ \sum 的正闭包和克林闭包
∑ + = ∑ ∪ ∑ 2 ∪ ∑ 3 ∪ . . . \sum^+=\sum\cup \sum^2\cup \sum^3\cup... +=23...
∑ ∗ = ∑ 0 ∪ ∑ + \sum^*=\sum^0\cup\sum^+ =0+
正闭包和克林闭包都是集合。其中,正闭包是由 ∑ \sum 中至少一个字符连接而成,而克林闭包可以不含 ∑ \sum 中的字符。
5.句子
∑ \sum 是一个字母表, ∀ x ∈ ∑ ∗ \forall x\in \sum^* x x x x叫做 ∑ \sum 上的一个句子。
6.句子的长度
∀ x ∈ ∑ ∗ \forall x\in \sum^* x,句子 x x x中字符出现的总个数叫做该句子的长度,记作 ∣ x ∣ |x| x
7.并置
x , y ∈ ∑ ∗ x,y\in\sum^* x,y x x x y y y的并置是由串 x x x直接相接 y y y所组成的。记作 x y xy xy。并置又叫做连结。
8.串x的n次幂
x 0 = ε x^0=\varepsilon x0=ε
x n = x n − 1 x x^n = x^{n-1}x xn=xn1x
9.前缀和后缀
x x x y y y z z z w w w v ∈ ∑ ∗ v\in\sum^* v,且 x = y z x=yz x=yz w = y v w=yv w=yv
(1) y y y x x x的前缀,若 ∣ z ∣ ≠ 0 |z|\not = 0 z=0,则称 y y y x x x的真前缀
(2) z z z x x x的后缀,若 ∣ y ∣ ≠ 0 |y|\not = 0 y=0,则称 z z z x x x的真后缀
(3) y y y x x x w w w的公共前缀
(4)如果 x x x w w w的任何公共前缀都是 y y y的前缀,则 y y y x x x w w w的最大公共前缀
(5)如果 x = z y x=zy x=zy w = v y w=vy w=vy,则 y y y x x x w w w的公共后缀
(6)如果 x x x w w w的任何公共后缀都是 y y y的后缀,则 y y y x x x w w w的最大公共后缀
10.子串
w w w x x x y y y z ∈ ∑ ∗ z\in \sum^* z,且 w = x y z w=xyz w=xyz,则称 y y y w w w的子串。
(1) t t t u u u v v v w w w x x x y y y z ∈ ∑ ∗ z\in\sum^* z,且 t = u y v t=uyv t=uyv w = x y z w=xyz w=xyz,则称 y y y t t t w w w的公共子串。如果 y 1 y_1 y1 y 2 y_2 y2,……, y n y_n yn t t t w w w的公共子串,且有 ∣ y j ∣ = m a x { ∣ y 1 ∣ , ∣ y 2 ∣ , … , ∣ y n ∣ } |y_j|=max\{|y_1|,|y_2|,…,|y_n|\} yj=max{y1,y2,,yn},则称 y j y_j yj t t t w w w的最大公共子串。
PS:两个串的最大公共子串不一定是唯一的。
11.语言
∀ L ⊆ ∑ ∗ \forall L\subseteq \sum^* L L L L称为字母表 ∑ \sum 上的一个语言, ∀ x ∈ L \forall x\in L xL x x x叫做 L L L的一个句子。
12.语言的乘积
L 1 ⊆ ∑ 1 ∗ L_1\subseteq \sum_1^* L11 L 2 ⊆ ∑ 2 ∗ L_2\subseteq \sum_2^* L22,语言 L 1 L_1 L1 L 2 L_2 L2的乘积是一个语言,该语言定义为:
L 1 L 2 = { x y ∣ x ∈ L 1 , y ∈ L 2 } L_1L_2=\{xy|x\in L_1,y\in L_2\} L1L2={xyxL1,yL2}是字母表 ∑ 1 ∪ ∑ 2 \sum_1\cup \sum_2 12上的语言。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值