简介:山东大学《离散数学》复习题(含答案)是一份面向计算机及相关专业学生的备考资料,围绕集合论、逻辑基础、图论、组合数学、布尔代数、递归与归纳、形式语言与自动机、组合优化与概率论基础等核心模块展开,既梳理概念,也配置练习与参考答案,适合期末复习和考研自测。资源为单个PDF文件,文件大小约1.94MB,便于在手机、平板或电脑上翻阅与打印使用。目前已有905人浏览学习,题目覆盖全面、答案明确,可帮助读者快速定位薄弱环节、巩固离散数学的抽象思维与推理能力,同时为算法设计、数据结构等后续课程打下基础。
1. 离散数学复习题为什么是考前性价比最高的资料:一份带答案的题库能帮你省下多少时间
期末倒数第二周开始刷题的人,手里基本都有一份某高校《离散数学》复习题(含答案).pdf。这类资料表面上是「题+答案」的合集,实际上它的真正价值在于:它把一门课最常考的题型、最容易被扣分的步骤、最标准的证明写法,全部压缩成了几十道例题。它解决的不是「我没题做」,而是「我不知道怎么下手」。适合期末冲刺的学生、准备计算机统考的考生、自学离散数学摸不到重点的自学者。这里有个反直觉的结论:含答案的复习题,最大的陷阱恰恰是你把答案当成了答案来抄,而不是当成解题思路的对照组。后面展开说的每个坑,基本都从这里来。
2. 先从复习题目录反推考点覆盖:逻辑、集合与关系的核心题型
拿到一份 PDF 复习题,第一件事不是做题,而是读目录。文档类资料的信息量分布很不均匀,目录页往往比后面任意十道题都重要。我拿到这类资料会先把每一章的题号、题型、分值扫一遍,反推命题人认为的重点在哪,再决定时间怎么分配。离散数学的知识块通常分成六到七块:数理逻辑、集合论、关系、图论、代数系统、组合数学,有些版本还会拆出格与布尔代数。下面这张表是我自己梳理的题块与对应动作,可以直接抄。
| 知识点块 | 复习题里的典型题型 | 我的处理动作 |
|---|---|---|
| 命题逻辑 | 判断公式类型、等值证明 | 先写真值表,再用等值演算验证 |
| 谓词逻辑 | 自然语言翻译、量词等值 | 盯住量词的分配律,别乱分配 |
| 集合论 | 子集幂集个数、交并补运算 | 背幂集公式,优先画文氏图 |
| 关系 | 性质判定、闭包、偏序 | 用关系矩阵和 Warshall 算法 |
| 图论 | 欧拉哈密顿、树、最短路 | 判定定理配合经典算法步骤 |
| 代数系统 | 判断群环域、证明子群 | 四步法加子群判别条件 |
| 组合数学 | 鸽巢、容斥、递推 | 识别标志词,再套模板 |
前两章看起来送分,但拉分的细节全在里面。先把这两块啃扎实,后面图论和代数系统才有底气。
2.1 命题逻辑与谓词逻辑:真值表、等值演算的刷题范式
数理逻辑部分的题型很稳定,复习题一般只考三件事:判断公式类型(重言式、矛盾式、可满足式)、用等值演算证明两个公式等价、把自然语言翻成带量词的谓词公式。我的刷题顺序是固定的。
第一步,任何涉及「判断公式类型」的题,先写真值表。写表不是为把每个组合都列一遍,而是先数公式里的变元个数:两个变元画 4 行,三个变元画 8 行,行数写错后面必翻车。第二步锁定关键行:析取式只看使各子式同时为假的行,合取式只看同时为真的行;主析取范式对应真值结果为 1 的行,主合取范式对应结果为 0 的行。第三步再拿十六组等值公式里的常用几组化简验证,而不是从头背到尾。
这里有一个高频踩坑点:蕴涵式 p→q 只在 p 为真 q 为假时为假,很多人第一遍会把「p→q 与 ¬q→¬p 互为逆否命题」这个关系记混。复习题只要反复出现一种变形,就是把逆否命题、否命题、逆命题混在一起,让你选哪个与原式等价。应对方式很机械:把 p→q 的四种组合真值背下来,比临场推一遍快得多。
谓词逻辑部分的设问通常是「将语句翻译为带量词的公式」以及「判断两个公式是否等值」。注意全称量词对合取的分配、存在量词对析取的分配是合法的,反过来分配就是错的。这是复习题里最爱埋的陷阱:∀x(A(x)∧B(x)) 等价于 ∀xA(x)∧∀xB(x),但 ∀x(A(x)∨B(x)) 不等价于 ∀xA(x)∨∀xB(x)。我一般建议把这两对关系抄在复习题第一页空白处,做题时直接对照,省得每次现推。
2.2 集合论与关系:闭包、等价类怎么以题带练
集合论在复习题里占比不高,但几乎每个计算题都依赖集合运算的底子。子集个数是 2 的 n 次方,幂集元素个数也是 2 的 n 次方,空集的幂集是 {∅} 而不是 ∅,这个细节每年都有人错。笛卡尔积部分,记住基数公式 |A×B| = |A|·|B|,以及 A×(B∩C) = (A×B)∩(A×C) 这类分配律就够用。
关系的题才是真正的拉分区域,核心考点是关系性质判定和三种闭包。判定自反、对称、反对称、传递,复习题的标准做法是用关系矩阵:主对角线全为 1 是自反,全为 0 是反自反;矩阵关于主对角线对称是满足对称性,但要注意这和自反性没关系。传递性的矩阵判定最麻烦,用关系复合看结果矩阵是否被原关系的矩阵覆盖,覆盖了才传递。
闭包部分的题目套路非常固定:自反闭包就是并上单位关系,对称闭包并上逆关系,传递闭包用 Warshall 算法或关系矩阵的幂运算。复习题如果出小题,一般只考前两个,因为手算简单;如果出大题,传递闭包几乎必考 Warshall 算法。我刷题时会把 Warshall 的步骤写成固定模板:按中间节点序号做外层循环,内层做布尔加与布尔乘,每轮更新矩阵。这算法背模板比理解推导更快,考场也不容易错。
等价关系和偏序关系是两个高频压轴方向。等价关系对应划分,等价类互不相交且覆盖全集;偏序关系对应哈斯图,盖住关系决定图的画法。复习题里常给一个集合和一个关系,问是不是等价关系、写出商集,或者画哈斯图、求极大极小元。这类题的坑在「自反性要不要单独验证」——很多人默认给出的是等价关系,直接跳到划分,结果前提本身就是错的。我的固定动作是:先花 30 秒验证自反、对称、传递,再往下算。
3. 图论与代数系统是拉开分差的位置:高频题型与答题模板
如果说前两章是按部就班的题,图论和代数系统就是真正把分数拉开的地方。这部分题目通常计算量不大,但每一步的判定条件必须精确,错了就没法回头。
3.1 图论:欧拉回路、哈密顿图、最短路与树的典型设问
图论在复习题里通常占据最大篇幅,题型大致分五类:图的度数序列判断、欧拉图与哈密顿图的判定、树的性质、最短路径、平面图与着色。每一类都有固定的审题路径。
先看度数序列。握手定理是万能起点:所有顶点度数之和等于边数的两倍。给一个序列判断它能不能作为简单图的度数序列,常见做法是 Havel-Hakimi 算法:把序列降序排列,删掉第一个数 d,把后面 d 个数各减一,再排序,重复到全为 0 就是可行,出现负数就不可行。这个考点复习题里大多是四到五个顶点的序列,手算两三轮就有结论,比硬凑一个图出来快得多。
欧拉图的判定条件是死的:无向图所有顶点度数为偶数且连通,就是欧拉图;恰有两个奇度顶点是半欧拉图。哈密顿图没有简单的充要条件,复习题只考充分条件(狄拉克定理、奥勒定理)和反例,不会让你证明一个图不是哈密顿图。遇到这类题,我的习惯是先检查是否满足充分条件,不满足就直接画反例或写「不一定」,别在上面耗时间。
树的考点更细:n 个顶点的树有 n-1 条边;树的任意两个顶点之间有唯一路径;顶点数大于 1 时树叶至少两个。还常考最小生成树,也就是 Kruskal 和 Prim 的步骤题。Kruskal 按边权从小到大选边,选边时判断是否成环;Prim 从一个顶点出发,每次加入与当前树相连的最小边。复习题如果要求画最小生成树,通常是在六到八个顶点的图上,手算 Kruskal 更快,因为只需要排一遍边权重。
最短路径主要是 Dijkstra 算法的表格题:维护一个 dist 数组,每次选未访问的最小距离顶点,松弛它的邻接边。这里有个迷之操作很多人第一遍看不懂:为什么已经确定最短路的顶点还要检查能否松弛别人。实际上 Dijkstra 的核心就是「已经确定最短路的顶点不会再去更新它自己,但它要用来松弛邻居」。做题时把每一轮选中的顶点和更新后的 dist 表写出来,基本能拿满步骤分。平面图和着色在多数复习题里只偶尔出现在选择填空,知道连通平面图的欧拉公式 v - e + f = 2 和四色定理的使用边界就够了。
3.2 代数系统:群、环、域的判断题与证明题突破口
代数系统是离散数学里最像数学的一章,也是很多人觉得最玄学的部分。复习题的常见考法是「给一个集合和一个二元运算,判断它属于哪类代数系统」,以及「证明某个系统是群」。
先背层级关系:半群只要求结合律,独异点在半群基础上加单位元,群在独异点基础上加每个元素有逆元。阿贝尔群再要求交换律。环和域在群之上叠加了第二个运算,域要求乘法也构成交换群且没有零因子。复习题里那种「下列哪个是群/环/域」的选择题,本质就是在考这条链上的每一层条件。
证明题也有万能模板。要证明 (G,) 是群,四步走:封闭性,任意 a、b 属于 G 时 ab 仍属于 G;结合律,通常题目已给出或由运算定义直接可得;单位元,找出 e 并验证 ea=ae=a;逆元,对任意 a 找出 a⁻¹。我见过不少人刷题时跳过结合律,因为证结合律比较绕,但考试批分时这一条往往是关键踩分点。
另一个高频点是子群判定。判定 H 是 G 的子群,两步就够:H 非空,且对任意 a、b 属于 H 有 ab⁻¹ 仍属于 H。这个判别条件比验证完整群公理快得多,复习题里如果出证明题,几乎都是让用这个条件而不是四步法。循环群的生成元、凯莱表、同态与同构的定义也要熟,特别是同态保运算这条:f(ab)=f(a)·f(b)。判断同态时先找清楚两边的运算符号,别把不同运算搞混。
4. 用组合数学与递推把压轴题拿下:计数题的三步拆法
组合数学在这份复习题里往往出现在压轴位置,分值不一定高,但区分度非常大。很多人前面拿满,在这里丢分,就是因为识别题型的速度太慢。我一般按三步走:找标志词,定方法,再套公式。
4.1 鸽巢原理与容斥原理:什么时候该套哪个公式
鸽巢原理的题目识别方式很单一:题目里出现「至少」「保证」「抽屉」这类词,第一步找鸽子和抽屉。最常见的形式是「n 个人至少两个人同月出生」,抽屉数是 12,鸽子数是人数。推广形式是「要保证至少 k+1 个物体落入同一个抽屉,需要多少个物体」,算式是 (k+1-1) 乘以抽屉数再加 1。这个公式很多人会背错一个常数,我建议每次做题都从「最坏情况」推一遍而不是直接代公式。
容斥原理考的是「不满足任何条件的对象个数」,标志词是「至少」「既不……也不……」。两个集合的公式是 |A∪B| = |A|+|B|-|A∩B|,三个集合时再减去三对交集并加上三者交集。这里最常翻车的是补集处理:求「至少选一门课」的人数,如果先算「一门都没选」,要记得从全集里减,而不是直接在选课人数上做文章。复习题里带数字的容斥题,画文氏图比套公式更快,把每个区域的人数填进去,未知量自然就出来了。
还有一个隐形高频考点是排列与组合的区分:题目问「有多少种方式」要看清是否考虑顺序。我一般让学生先问自己:交换两个元素后,结果还算同一种吗?算就是组合,不算就是排列。环形排列的 (n-1)! 公式也会出现,别和普通排列的 n! 混。二项式定理相关的恒等式,复习题很少直接考,但会借组合恒等式出证明题,能写出「两边都是在计算同一个集合的大小」就足够应付。
4.2 递推关系与生成函数:从数列规律到通项求解
递推关系是组合数学里计算量最大的部分。复习题的题型一般是:根据题意列出递推式,然后求解。列递推式的方法分两步:先定初始条件,再找第 n 项与前面若干项的关系。比如斐波那契数列的递推是 f_n = f_{n-1} + f_{n-2},初始条件是 f_0=0、f_1=1。这里有个细节,列出递推式之前先确认下标从 0 开始还是从 1 开始,很多题的失误都出在下标错位。
求解方式有两个层次。第一层是特征方程法,适用于常系数线性齐次递推关系。把递推式写成 a_n = c_1·a_{n-1} + c_2·a_{n-2},特征方程是 x² - c_1·x - c_2 = 0,解出两个根。若两根不相等,通项是 A·r1ⁿ + B·r2ⁿ;若重根,通项是 (A + Bn)·rⁿ,A 和 B 由初始条件确定。这一步不需要背太多,把模板抄在纸上练三次就能内化。
第二层是生成函数法,这对很多人来说是黑匣子。复习题如果出现「求序列的生成函数」这种小题,做法是把序列写成一个幂级数,再用代数化简成封闭形式。常见套路:常数序列 1,1,1,… 的生成函数是 1/(1-x),自然数序列 1,2,3,… 是 1/(1-x)²。生成函数法的优势是不用分类讨论特征根是重根还是虚根,缺点是需要做部分分式分解,计算量大。我刷题时的取舍是:能特征方程解就先特征方程,解不动再转生成函数。
这里有个不常被提到的技巧:很多递推题的初始条件不止一个,出题人故意把两个初始值分开给。代入通项求 A、B 时,两条方程必须都用到,漏一个只能解出含参数的表达式,考场这一步丢分非常冤。我习惯把初始条件写成方程组再解,而不是心算。
5. 刷这份复习题的常见问题排查:五个避坑点与它们背后的原因
刷题资料用得多,坑也踩得多。我以带过的 A 同学为例,把出现频率最高的五个问题列出来,每一条都是「现象 → 原因 → 解决」的结构,可以直接对照自己的情况。
5.1 坑一:把「含答案」当成免检产品,答案本身会翻车
现象:对照 PDF 答案复盘,发现某个证明题的结论和教材定理不一致,同学认为是自己理解错了,硬把错误答案背了下来。
原因:复习题的 PDF 多为学生整理或网上流传的版本,排版错、符号错、漏步骤的情况很常见。含答案不等于答案经过权威校对,它只是「有人写了一份答案」。
解决:遇到答案和教材定理冲突,优先信教材和课堂笔记。再用一两个第三方来源验证,比如教材习题答案、公开的历年卷解析。每个题至少想一遍「如果我是出题人,这个步骤的踩分点在哪」,比无脑抄答案有效得多。
5.2 坑二:只刷选择填空,大题眼高手低
现象:有人把复习题中的选择题、判断题刷得飞快,遇到证明题直接跳过看答案,觉得「看懂了就会了」。
原因:离散数学的证明题考察的是推理链的完整性,看懂答案和能独立写出来之间差了十次练习的距离。选择题只看结果,永远练不出证明过程的组织能力。
解决:强制自己每天至少手写两个证明题,不抄答案,写完再对照。尤其针对群、树、等价关系这三类最常出证明题的部分。写完把自己的证明拿去和答案逐行比对,缺一步就补一步,复盘比做新题更重要。
5.3 坑三:刷题顺序逆着命题逻辑走,越刷越乱
现象:有人拿到复习题从最后一章往前刷,先在组合数学和生成函数上纠缠了三天,回头发现逻辑基础还没打牢。
原因:离散数学的知识点有强烈的先后依赖。图论的度数序列要用到集合和关系的基础,代数系统的证明要用到逻辑推理的表达能力。倒着刷等于盖楼不打地基。
解决:按复习题的目录顺序刷,把每一章的错题标出来,不要跳到下一章时还留着没弄懂的题。如果时间紧,优先保数理逻辑和集合论,因为它们是高频考点,也是后续章节的支撑。
5.4 坑四:教材符号版本对不上,同一个题有不同答案
现象:复习题里用 ¬p∨q 表示蕴涵,教材用 p→q;答案里写集合包含,教材的符号又不一样。学生觉得「答案和教材冲突」,其实是符号体系不同。
原因:离散数学教材版本众多,逻辑联结词、集合包含符号、关系的复合顺序都有不同的写法。只看题不管符号,很容易把自己绕晕。
解决:刷题前先花十分钟把复习题的符号约定和教材对照一遍,在 PDF 的第一页做一张符号映射表。比如「→」与「⇒」的区别、「R∘S 是先复合 R 还是先复合 S」,这些在关系闭包题里特别容易搞错。
5.5 坑五:压轴题直接看答案,换个数就不会做
现象:一份复习题刷完,难题都「看过答案」。到了考场,题目数字一变、条件一换,立刻卡住。
原因:直接看答案只记住了这道题的具体步骤,没记住方法的适用条件。离散数学的压轴题非常依赖「识别题型 → 套用模板」的肌肉记忆,没有这个记忆,换个壳就翻车。
解决:刷难题时给自己设一个 15 分钟的死磕时间,超过时间再看答案,但看完必须合上答案自己重写一遍。更重要的是整理题型模板,比如「看到传递闭包 → 写 Warshall 算法」「看到子群判定 → 用判别条件」,把模板记进错题本。考试本质上是在考模板的匹配速度。
6. 把复习题变成个人错题闭环:三轮刷题法值得照抄的细节
复习题刷第一遍,别追求全对。我的做法是三轮。
第一轮按章节顺序地毯式过题,用三种记号标注:会做且做对的标「√」,会做但做错的标「○」,完全没思路的标「△」。第一轮的目标不是消灭错误,而是画出这张 PDF 的「错误地图」。
第二轮只刷标了「○」和「△」的题,重点不是再做一遍,而是写出「这题考的是哪个知识点、用哪条方法」,把题与知识点做一次绑定。这一步能让「做错」变成「知道为什么错」,而不是停留在「下次注意」。
第三轮叫「反向出题」:把每道错题的条件和结论对调,或者改一个数字,然后在纸上默写解法。比如原题是「给定关系 R 求传递闭包」,反向题就是「给定闭包结果,反推原关系至少包含哪些元素」。这一轮的价值在于,它把解法从记忆升级成原理。
我陪 A 同学按这个三轮法刷了两周,从模拟卷 50 分左右提到期末 78 分,提分的关键不是多刷了多少新题,而是把同一份复习题的每个错题都变成了模板。
最后交代一个习惯:我刷这类 PDF 复习题,一定会把「题目、我的错解、正确方法」三件套装进同一个笔记文档,而不是只存一份答案 PDF。这样考前半天翻一遍笔记,比重刷整份 PDF 高效得多。期末周时间宝贵,别让一份含答案的复习题变成仅供抄写的手抄本。希望帮到你。
本文还有配套的精品资源,点击获取