Learning never exhausts the mind.
文章目录
- 引言
- 正文
- 元包
- 序列的定义
- 序列与函数的关系
- 空序列
- 长度
- 连接
- 头尾运算符
- 限制运算符
- 逆置运算符
- 单射序列
引言
笔者一直觉得在计算机这一学科的学习中,离散数学是极为重要的知识基础。离散化的思想体现在计算机学科的方方面面。举例来说,“像素”这一概念是我们日常生活中耳熟能详的,将一个图片拆分成一个个极微小的像素,就是利用了离散化的思想。为了帮助大家打好离散数学的思维基础,笔者新开一个专栏,对《离散数学导学》这本书做一个精炼,使其更易理解。这篇文章是这个专栏的第六部分,主要介绍第10章。
1-3章传送门
4-5章传送门
6-7章传送门
8章传送门
9章传送门
正文
元包
元包就像一个有重复元素的集合,用[ ]表示。比如:
[a,a,b,b,c]是一个元包。
注意,元包不考虑顺序,只考虑元素的种类和数量,即[a,b,b,c]和[a,c,b,b]是同一个元包。
序列的定义
序列就像一个考虑顺序的元包,用< >表示。比如:
<a,b,b,c>是一个序列。
序列与函数的关系
序列是特殊的函数。
序列<a,b,b,c>也可以写成{1→a,2→b,3→b,4→c}的函数形式。
空序列
没有元素的序列就是空序列。
长度
序列的长度就是序列的势(见集合论的势运算符),也就是序列中元素的个数。若s是个序列,那么#s表示序列的长度。
连接
连接运算符︵,我们依旧用例子说明:
A=<1,2,3>,B=<4,5>,则A︵B=<1,2,3,4,5>
这个运算符的作用就是把后面的序列“连”到前面序列上。再举一个例子:
A=<a,b,c>,B=<a,b>,则A︵B=<a,b,c,a,b>
头尾运算符
头运算符(head)返回序列的第一个元素,尾运算符(tail)返回序列头之外的所有元素。举个例子说明:
A=<a,b,c>,则head A=a,tail A=<b,c>
注意:
- head运算符返回一个元素,tail运算符返回一个序列。
- 看下面这个序列,这个例子说明了tail运算符是将第一个元素去掉后返回的序列:
A=< a >,则head A=a,tail A=< >
限制运算符
↑运算符返回一个序列的子集。我们举一个例子:
序列A=<a,b,b,c>,B={b},则A↑B=<b,b>
注意:
- 限制运算符返回一个序列
- 它返回序列的顺序遵循运算符右边集合中的元素的顺序:
序列A=<a,b,b,c>,B={c,b},则A↑B=<c,b,b>
逆置运算符
reverse(逆置运算符),将整个序列颠倒过来。依旧用例子说明:
序列A=<a,b,c>,则reverse A=<c,b,a>
单射序列
考虑单射函数的定义,很容易想到:如果序列中没有重复的元素,那么这个序列就是单射序列。
<a,b,c>是单射序列,而<a,b,b,c>不是。
我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的算法讲解!