> 文章列表 > 《离散数学导学》精炼——第10章(序列)

《离散数学导学》精炼——第10章(序列)

《离散数学导学》精炼——第10章(序列)

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>

注意:

  1. head运算符返回一个元素,tail运算符返回一个序列。
  2. 看下面这个序列,这个例子说明了tail运算符是将第一个元素去掉后返回的序列:

A=< a >,则head A=a,tail A=< >

限制运算符

↑运算符返回一个序列的子集。我们举一个例子:

序列A=<a,b,b,c>,B={b},则A↑B=<b,b>

注意:

  1. 限制运算符返回一个序列
  2. 它返回序列的顺序遵循运算符右边集合中的元素的顺序:

序列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>不是。

《离散数学导学》精炼——第10章(序列)
我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的算法讲解!