本书系统阐述了离散数学的经典内容,包括命题逻辑、谓词逻辑、集合、关系、代数系统、图论等方面的基本知识。本书根据计算机科学各专业的需要选择内容、把握尺度,尽可能将离散数学知识和计算机科学中的实际问题相结合。本书编排新颖,每章通过定义、定理、实例、例等形式将内容有机结合、融会贯通,达到学练兼顾的目的。本书加入了机上实现内容,满足了普通高校理工类本科生的实际需求。
本书书末还提供了离散数学常用符号、中英文名词术语对照表、英中文名词术语对照表以及习题答案与提示,能很好地帮助读者理解和学习。
本书既可作为应用型本科和高职高专院校计算机科学各专业的教材,也可作为工程技术人员的参考书。
离散数学是研究离散量的结构及相互关系的数学科学,是现代数学的一个重要分支。由于计算机只能处理离散的数量关系,所以离散数学是计算机科学各专业最重要的专业基础课之一。随着计算机科学的发展,离散数学作为计算机科学的一种数学工具,其作用日益重要。同时,离散数学还是计算机科学许多专业课程的基础,其基本概念、基本理论和基本方法在数据结构、操作系统、编译原理、软件工程、程序设计语言、算法设计与分析、计算机网络、通信与接口、多媒体技术、数据库管理系统、人工智能、形式语言与自动机、数字电路等课程中有广泛的应用。
应用型本科培养计算机技术方面的应用型高级技术人才。这种类型的人才既需要懂得离散数学的基本概念和基本理论,更需要掌握离散数学的基本方法和实际应用。
由于各院校计算机专业培养目标不同,因而对离散数学知识有不同的要求。已经出版的不同版本的离散数学教材不仅包含的数学分支不完全一样,而且各部分的广度差别较大,难度也显著不同。本教材是在已出版的同类教材的基础上继续探索和创新的结果,相信会满足不同读者的需要。
本教材编者有着长期从事离散数学课程教学的丰富经验,熟悉多门计算机科学专业课程。为了编写出有特色的高质量教材,编者多次向计算机科学方面的专家、学者请教,深入了解计算机科学各专业所需的离散数学知识。在此基础上确定了本教材的下列编写原则:
(1) 根据计算机科学各专业对离散数学知识的基本要求确定内容的广度和深度。
本教材包括命题逻辑、谓词逻辑、集合、关系、代数系统、图论6个分支,涵盖了离散数学的主要分支。每个分支都包括了基本内容,并严格把握其广度和深度。凡是重要的基本概念、基本方法不惜篇幅讲透彻,例题和习题恰当地控制了难度和深度。
针对应用型本科的培养目标,本教材编写了以下3个有特色的内容: ①第1章介绍了离散数学必需的基础知识; ②第8章介绍了几个主要算法的伪代码; ③附录A、附录B、附录C收录了离散数学的常用符号及中英文、英中文名词术语对照表。这些内容对应用型本科学生的学习很有帮助。
(2) 便于学生阅读理解。
针对应用型本科学生的实际水平和认知能力,本教材在编写方式上采取了以下3个措施,期望有助于读者阅读理解: ①尽可能先通过实例提出问题,再介绍有关定义、定理和概念,或者随后附加实例对有关概念的各个方面进行补充说明; ②对较难理解的概念,充分利用图形、图像和通俗的语言予以说明; ③对基本概念、重要定理、重要公式和解题方法,不惜篇幅,叙述清楚。
(3) 与专业知识相结合。
各章节都尽可能编写了本部分内容在计算机科学中的实际应用,使离散数学亲近专业。本教材突出培养学生运用离散数学知识解决与计算机科学相关的实际问题的能力。
本教材力求做到: 深入浅出、概念准确、知识结构完整。
本教材采用了周忠荣编著、清华大学出版社出版的《计算机数学》中的相关内容,特此说明。
为了便于读者理解和注意,本教材使用了一些特殊的表达方式:
(1) 重要数学名词在第一次出现时以黑体字标出。如: 集合.
(2) 重要的问题以【说明】的方式给出。
(3) 定理、推论、说明和一些重要结论都用楷体字表述。如: 一个关系可以既不是对称的,也不是反对称的。
本教材的编写得到了广州大学华软软件学院邹婉玲副院长、徐祥副院长、教务处麦才淞处长、网络技术系黄友谦主任、软件工程系黄思曾主任的全力支持和指导,编者对他们表示感谢。
本教材由周忠荣(第5, 7, 8章和附录),林伟初(第2章),江定汉(第6章),袁燕(第1, 4章),周志轩(第3章)编写。周忠荣为全书拟订了详细的编写提纲和要求,并负责统一修改、定稿。江定汉、周志轩审阅了部分章节的初稿,数学教研室的各位教师也给予了积极支持和帮助。
编者期望本教材能得到广大教师和学生的欢迎,能对离散数学课程的改革做些贡献。本教材虽经多次修改,但因编写时间紧迫、编者水平有限,书中疏漏、差错难免,恳请读者批评指正。希望本教材在广大教师和学生的建议和帮助下得到不断的改进和完善。编者的E-mail地址是:zzr@tsinghua.org.cn.
第1章 基础知识1
1.1 集合的初步知识1
1.2 数学归纳法1
1.3 整数的基本性质2
1.3.1 整除2
1.3.2 素数3
1.3.3 带余除法4
1.3.4 最大公约数5
1.3.5 最小公倍数7
1.3.6 模运算8
1.3.7 同余的应用10
1.4 序列的基本知识11
1.4.1 序列11
1.4.2 典型的整数序列12
1.4.3 序列求和13
1.5 计数15
1.5.1 加法原理和乘法原理15
1.5.2 排列与组合17
1.5.3 二项式定理21
1.5.4 鸽巢原理22
1.6 矩阵的初步知识23
1.6.1 矩阵的概念23
1.6.2 矩阵的加法和数乘25
1.6.3 矩阵的乘法26
1.6.4 转置矩阵和逆矩阵27
1.7 本章小结28
1.8 习题28
第2章 命题逻辑31
2.1 命题与联结词31
2.1.1 命题31
2.1.2 逻辑联结词33
2.1.3 联结词的优先级37
2.1.4 命题符号化37
2.1.5 逻辑运算在计算机中的直接运用39
2.2 命题公式与等价演算41
2.2.1 命题公式及其层次41
2.2.2 命题公式的赋值42
2.2.3 等价式与等价演算45
2.2.4 等价演算的实际应用48
2.3 联结词的扩充与联结词完备集49
2.3.1 联结词的扩充49
2.3.2 与非、或非、异或的性质51
2.3.3 联结词完备集52
2.4 范式53
2.4.1 析取范式与合取范式53
2.4.2 主析取范式与主合取范式57
2.4.3 主范式的作用62
2.4.4 用主范式解答实际问题63
2.5 命题逻辑推理66
2.5.1 推理的形式结构66
2.5.2 推理的证明方法68
2.5.3 命题逻辑推理的实际应用71
2.6 本章小结72
2.7 习题73
第3章 谓词逻辑76
3.1 谓词逻辑的基本概念76
3.1.1 个体和谓词76
3.1.2 量词78
3.1.3 特性谓词80
3.1.4 谓词逻辑符号化81
3.2 谓词公式与翻译82
3.2.1 谓词公式82
3.2.2 谓词逻辑的翻译83
3.3 变元的约束86
3.3.1 约束变元和自由变元86
3.3.2 约束变元的换名规则87
3.3.3 自由变元的代替规则88
3.4 谓词公式的解释与分类89
3.4.1 谓词公式的解释89
3.4.2 谓词公式的分类90
3.5 谓词逻辑的等价式和前束范式91
3.5.1 谓词逻辑等价式91
3.5.2 前束范式94
3.6 谓词逻辑推理95
3.6.1 推理定律95
3.6.2 推理规则97
3.6.3 谓词逻辑推理例题98
3.7 程序正确性证明100
3.8 本章小结102
3.9 习题102
第4章 集合106
4.1 集合的基本概念106
4.1.1 集合及其表示方法106
4.1.2 集合间的关系108
4.1.3 特殊集合109
4.1.4 有限幂集元素的编码表示110
4.2 集合的基本运算111
4.3 集合恒等式113
4.4 集合的划分与覆盖115
4.5 有穷集合的计数117
4.6 本章小结118
4.7 习题119
第5章 关系121
5.1 关系的概念与表示121
5.1.1 笛卡儿积121
5.1.2 二元关系的概念123
5.1.3 关系矩阵和关系图125
5.2 复合关系和逆关系127
5.2.1 复合关系127
5.2.2 逆关系130
5.3 关系的性质131
5.4 关系的闭包135
5.5 等价关系和偏序关系136
5.5.1 等价关系136
5.5.2 偏序关系138
5.5.3 字典排序和拓扑排序141
5.6 函数143
5.6.1 函数的基本概念143
5.6.2 复合函数和逆函数145
5.6.3 几个重要的函数147
5.7 二元关系的应用148
5.7.1 等价关系的应用149
5.7.2 函数的应用149
5.8 多元关系及其应用149
5.8.1 多元关系149
5.8.2 关系数据库151
5.9 本章小结153
5.10 习题153
第6章 代数系统155
6.1 二元运算及其性质155
6.1.1 二元运算与一元运算155
6.1.2 二元运算的性质与特殊元素157
6.1.3 代数系统简介162
6.1.4 典型例题分析163
6.2 半群与群164
6.2.1 半群、独异点与群164
6.2.2 幂167
6.2.3 群的性质168
6.2.4 典型例题分析170
6.3 子群、循环群与置换群170
6.3.1 元素的周期170
6.3.2 子群171
6.3.3 循环群173
6.3.4 置换群176
6.4 陪集和正规子群178
6.4.1 陪集178
6.4.2 正规子群180
6.4.3 典型例题分析181
6.5 群的同态与同构182
6.5.1 基本概念182
6.5.2 基本性质183
6.6 环和域184
6.6.1 环184
6.6.2 域187
6.7 格187
6.7.1 格的定义187
6.7.2 格的性质189
6.7.3 几种特殊的格191
6.8 布尔代数193
6.8.1 布尔代数及其性质193
6.8.2 布尔函数与布尔表达式196
6.9 应用实例196
6.9.1 门电路196
6.9.2 逻辑电路设计197
6.10 本章小结199
6.11 习题200
第7章 图论204
7.1 图的基本概念204
7.1.1 图的定义204
7.1.2 特殊的图207
7.1.3 子图208
7.1.4 结点的度209
7.2 图的连通性211
7.2.1 路径和回路211
7.2.2 无向图的连通性212
7.2.3 有向图的连通性212
7.2.4 欧拉图213
7.2.5 哈密顿图217
7.2.6 带权图的最短路217
7.3 图的矩阵表示219
7.3.1 无向图的关联矩阵219
7.3.2 有向图的关联矩阵220
7.3.3 有向图的邻接矩阵220
7.3.4 无向图的邻接矩阵221
7.4 树222
7.4.1 无向树与生成树222
7.4.2 有向树224
7.4.3 最优二元树226
7.4.4 前缀码228
7.4.5 树的遍历230
7.5 本章小结231
7.6 习题232
第8章 算法与伪代码234
8.1 算法概述234
8.2 判断素数算法236
8.3 求最大数算法236
8.4 求最大公约数的欧几里得算法237
8.5 求拓扑排序的算法237
8.6 求欧拉路的Fleury算法239
8.7 求最短路径的Dijkstra算法240
8.8 求最小生成树的Prim算法241
8.9 求最优二元树的Huffman算法243
附录A 离散数学常用符号245
附录B 中英文名词术语对照表250
附录C 英中文名词术语对照表263
附录D 习题答案与提示275
参考文献286