简介及基础知识
什么是离散数学?
离散数学(Discrete mathematics)是以可枚举(enumerable)的数量或形状作为研究对象的数学分支
可枚举指对象与对象间有清晰明确界限,可一一罗列
离散数学研究与自然数集或其子集有一一对应关系的对象集合
现在的计算机只能处理可枚举的信息
任何由计算机处理的信息都必须编码为可枚举的二进制数据离散数学在计算机科学有广泛应用
逻辑语言
基本术语
命题(proposition):对某个事物进行判断,有真假值的陈述句
命题的真值(truth value)
原子命题和复合命题、逻辑联结词(与、或、非、蕴涵、双蕴涵)
逻辑公式:符号化的命题
表示原子命题的命题变量符号与逻辑运算符按照一定规则组合起来的串
逻辑蕴含命题:也称为条件命题
充分条件和必要条件
逻辑双蕴含命题:也称为双条件命题、逻辑等价命题
量化命题:对事物类的性质或事物类之间的关系进行判断
存在量词
对事物类是否存在一个或多个事物满足性质或参与关系进行判断
全称量词
对事物类是否所有事物满足性质或参与关系进行判断
存在量化命题
“有的4的倍数年份是闰年”
全称量化命题
“所有400的倍数年份都是闰年"
集合语言
基本术语
集合(Set):将一些数学对象作为一个总体进行研究时,称这个总体为集合
元素、属于、集合相等、子集、空集
关系(Relation)是有序对的集合,是笛卡尔积(Cartesian product)的子集
有序对(ordered pair)、笛卡尔积
集合A到B的二元关系建立了集合A元素与集合B元素间的对应
函数(Function)是特殊的关系,也是有序对的集合
函数的定义域(domain)、值域(range)、陪域(codomain)
函数有且有唯一的陪域元素与定义域的每个元素对应
定义集合的方法
元素枚举法
将集合的元素一一罗列,并且使用左右花括号括起来定义集合
性质概括法
通过概括属于集合的元素的共同性质的方法给出一个集合
将概括集合元素x要满足的性质记为P(x)
给出集合A的描述法为A =
对任意x,x∈A当且仅当P(x)为真
归纳定义法
归纳基:给出待定义集合的基本元素
归纳步:给出一些规则,从待定义集合已有元素构造属于待定义集合的元素
最小化声明:待定义集合的每个元素要么是基本元素,要么是通过规则构造出来的元素
图论语言
基本术语
图论语言用顶点和连接顶点的边表达事物及事物间的联系
无向图(graph)和有向图(digraph)
顶点、边、顶点和边之间的关联关系
无向图:边的两个端点是顶点
有向图:边的起点和终点是顶点
连通图:通路、回路、有向通路和有向回路
无向树:任意两个顶点之间有且仅有一条通路的无向图
根树:是有向图,不考虑边的方向时是无向树,且
存在一个顶点,到任意顶点都有且有唯一的有向通路
这个到其他顶点都有唯一有向通路的顶点是根树的根(root)
带权图
代数语言
基本术语
集合A的运算:一种特殊形式的函数\(f:A^n→A\)
运算的封闭性、二元运算的中缀表示形式
运算的性质和特殊元素
交换律、结合律、分配律
单位元、零元、逆元
实数集上的加、减、乘、除都是二元运算
整数集对于实数加法、减法、乘法封闭
但整数集对于除法不封闭
自然数集对于实数加法、乘法封闭
但自然数集对于减法、除法不封闭
实数集加法、乘法满足交换律、结合律
但实数集减法、除法不满足交换律,也不满足结合律
实数集乘法对加法有分配律
实数集加法有单位元0,没有零元
实数集的每个元素x对于加法有逆元−x
乘法有单位元1且有零元0
实数集的每个元素x对于乘法有逆元1/x
逻辑与、或、非、蕴涵是二元运算
集合并、交、差、补是二元运算
关系、函数的复合也是合适集合上的运算
算法语言
基本术语
算法(algorithm)是一些明确的步骤的有限序列,人或机器通过执行这些步骤可求解某一类问题
明确性:每个步骤是精确定义的,人和机器都可以理解和执行
有限性:每个步骤可在有限时间内完成,整个算法的步骤数也是有限的
通用性:算法解决一类问题,而非针对某一个输入
输入和输出:算法都有输入和输出
算法的表达:由一些基本步骤根据一些规则构成的有限序列
基本步骤需要人们对算法要求解的问题进行分析而提炼
组合执行基本步骤从而构成复合步骤的规则主要有三种
顺序结构(sequential structure):算法的一个或多个步骤按照书写顺序依次执行
选择结构(selective structure):算法包含条件,执行时根据是否满足该条件而选择执行不同的步骤
循环结构}(loop structure):算法的一个或多个步骤在满足某条件时不断重复执行
算法的正确性和效率
描述算法的结构化自然语言
选择结构和循环结构中的条件都用自然语言描述
for语句的条件通常指定一个整数的值的范围或指定一个集合或序列的所有元素
do和end之间的步骤称为循环体
选择结构和循环结构的排版
如果一个分支或循环体只有一个步骤,则不换行并省略end
如果分支或循环体有多个步骤则采用换行缩进的方式,并使用end标明整个分支结构或循环结构的范围
递归算法
存在直接或间接调用自己的步骤的算法称为递归算法(recursive algorithm)
总结