Article
离散数学-CH2-Proofs
离散数学-CH2-Proofs,待补充摘要。
- https://www.eecs70.org/assets/pdf/notes/n2.pdf
- https://www.eecs70.org/assets/pdf/mini-vitamins/mini-vitamin-0b.pdf
CS 70 离散数学与概率论笔记:证明方法专题 (Proofs)
本笔记基于 UC Berkeley CS 70 Course Note 2 整理,结合个人手写笔记的框架逻辑进行了完善和深度润色。
1. 证明的定义与结构 (Proofs: Definition and Structure)
什么是证明?
在自然科学中,我们通过实验积累证据来“断言”一个命题的正确性。但在数学中,我们追求的是绝对的确定性 (Absolute Certainty)。
- 证明 (Proof) 是由有限个逻辑推理步骤 (a finite sequence of logical deductions) 组成的序列,用以确立目标命题的绝对真理性。
- 证明的强大之处在于:用有限的步骤,去保证包含无限种可能性的命题的真理性。这与计算机程序(在有限的代码内处理无限的输入)有着深度的历史渊源。
证明的基本结构
一个严谨的数学证明通常由以下结构组成:
- 从公理或假设出发:
- 公理 (Axioms / Postulates):无需证明即可接受的根本性陈述(证明必须有起点)。
- 前提假设 (Assumptions):在具体定理中假设为真的条件。
- 通过逻辑推理 (Logical Deductions) 逐步推进:
- 应用严谨的逻辑规则,每一步推出的新陈述,在前一步为真的前提下都必须绝对成立。
- 得出最终结论 (Conclusion)。
2. 记号与基本事实 (Notation and Basic Facts)
在进行严谨的证明前,我们需要统一定义语言和符号:
-
常用数集:
- :整数集,即 。
- :自然数集,即 (注意:在 CS 70 中,自然数包含 )。
- :正整数集,即 。
-
封闭性 (Closure Property):整数集 和自然数集 对加法和乘法是封闭的(即两个整数相加或相乘,其结果依然是整数)。
-
整除 (Divisibility): 对于整数 和 ,我们说 整除 (记作 ),当且仅当存在一个整数 使得:
例如:,因为存在整数 使得 。
-
素数 (Prime Number):一个大于等于 2 的自然数 ,若它仅能被 和它本身整除,则称其为素数。
-
定义符号
:=:用于明确定义一个新变量。例如 表示“定义变量 的值为 ”。
3. 直接证明 (Direct Proof)
💡 核心思想与套路模板
直接证明是最基础、最直观的证明方法。对于蕴含式命题 (若 成立,则 成立),直接证明的通用模板如下:
直接证明套路模板
- 目标 (Goal): 证明
- 方法 (Approach):
- 假设 成立(Assume )
- 通过代数变形或逻辑推理,一步一步推导…
- 得出 成立(Therefore )
如何证明一个等价命题(双向蕴含)?
当我们需要证明一个“当且仅当 (if and only if)”的等价命题 时,直接证明的经典策略是将其拆解为两个单向蕴含命题,然后分别予以证明:
- 第一步:证明充分性 ()
- 第二步:证明必要性 ()
经典定理与步骤拆解
定理 2.1
对于任意 ,若 且 ,则 。
概念自测:该定理用一阶逻辑符号可表示为 。
证明:
-
假设前提:假设 且 。
-
展开定义:根据整除定义,存在整数 满足:
-
代数推导:将它们相加:
-
得出结论:因为整数对加法具有封闭性,所以 。由此可得 。
💡 难点深度解析:定理 2.2 与 定理 2.3 的“联立理解”
在阅读这两个关于“数字之和被 9 整除”的定理时,你可能会觉得逻辑和代数符号有些绕。让我们在这里将它们彻底拆解,并联立起来看:
这两个定理其实完整地证明了一个等价关系:一个三位数 能被 9 整除,当且仅当它的各位数字之和能被 9 整除。
设三位数 的百位、十位、个位数分别为 (其中 )。 我们可以将 写作十进制代数式:
同时,其各位数字之和为 。
定理 2.2 (正向:数字和整除 原数整除)
设 为整数。如果 的各位数字之和能被 9 整除,那么 也能被 9 整除。
证明:
-
假设前提:设数字之和能被 9 整除,即存在整数 使得:
a + b + c = 9k \tag{1}
-
代数变形(核心巧妙之处): 我们将原数 进行重组,分离出能够显而易见被 9 整除的部分:
-
代入假设 (1):
-
得出结论:因为 均为整数,所以 。因此 能被 9 整除。
定理 2.3 (逆向:原数整除 数字和整除)
设 为整数。如果 能被 9 整除,那么 的各位数字之和也能被 9 整除。
证明:
-
假设前提:设 能被 9 整除,即存在整数 使得:
-
代数变形:用数位表示 :
-
分离目标项 :
-
得出结论:设 。由于 是整数,所以 也是整数。故各位数字之和 能被 9 整除。
💡 起承转合思考: 联立定理 2.2 和 定理 2.3,我们就完美证明了:
这就是我们小学学到的“能被9整除的数的特征”的严谨数学证明!
补充直接证明简单例题
为了让你更好地巩固这个套路,我们来看一个简单的经典例题:
例题:证明:若 是奇数,则 也是奇数。
证明:
-
假设前提:假设 是奇数。
-
写出定义式:根据奇数的定义,存在整数 使得:
-
代数平方:
-
得出结论:因为 是整数,所以 也是整数。因此 符合奇数的定义,所以 是奇数。
4. 逆否命题证明 (Proof by Contraposition)
💡 为什么需要逆否命题证明?(承前启后)
在尝试使用直接证明时,我们有时会陷入僵局。例如,在要证明“若 是偶数,则 是偶数”时,如果假设 ,我们很难直接对 展开奇偶性讨论,因为根号破坏了整数的代数结构。 此时,利用命题逻辑的等价律 ,证明其逆否命题往往会柳暗花明!
💡 套路模板
逆否命题证明套路模板
- 目标 (Goal): 证明
- 方法 (Approach):
- 假设结论的否定成立(Assume )
- 通过逻辑推导…
- 证明前提的否定也成立(Therefore )
- 结论 (Conclusion): 因为 ,根据逆否等价律,原命题 成立。
(注:在写证明时,在第一行明确写出“We proceed by contraposition(我们采用逆否命题证明法)”是极佳的写作习惯,能大大提高阅卷人的好感度。)
定理与证明
定理 2.4
设 为正整数,且 整除 (即 )。若 是奇数,则 是奇数。
直接证明为什么难? 如果我们假设 是奇数,我们只知道 且 ,此时很难直接拆解出 的奇偶性。 而逆否命题是:“若 是偶数,则 是偶数”(即否定结论 否定条件)。
证明:
-
采用逆否命题法:假设 是偶数。
-
展开定义:根据偶数定义,存在整数 使得 。
-
结合已知条件 :这意味着存在整数 使得 。
-
代数代入:将 代入:
-
得出结论:因为 均为整数,所以 也是整数。因此 是偶数。
-
根据逆否命题的等价性,原命题“若 是奇数,则 是奇数”成立。
定理 2.5:鸽巢原理 (Pigeonhole Principle)
设 和 为正整数。将 个物体放入 个盒子中。如果 ,那么至少有一个盒子包含多个(即 个)物体。
这是一个极其经典且看似直观、实则极强大的原理。我们用逆否命题来极简地证明它。
- 否定结论 :所有盒子都包含最多一个物体(即每个盒子的物体数 )。
- 否定条件 :物体的总数 。
证明:
-
采用逆否命题法:假设每一个盒子中最多只放了 1 个物体。
-
累加物体总量:由于一共有 个盒子,因此所有盒子里的物体总数 满足:
-
由于这证明了 ,因此其等价的逆否命题 成立:即若 ,至少有一个盒子包含多个物体。
💡 现实中有趣的例子: 根据鸽巢原理,旧金山(人口超 80 万)一定有至少两个人的头发根数完全相同!
- 盒子 (Boxes): 头发的根数(假设人头上的发量上限为 50 万根,即盒子的编号为 到 ,共 个盒子)。
- 物体 (Objects): 旧金山的居民(超过 800,000 人)。
- 由于“物体数 ” > “盒子数 ”,必然有至少两个居民掉进同一个“发量盒子”里!
5. 反证法 (Proof by Contradiction)
💡 核心思想:reductio ad absurdum(归于荒谬)
反证法是数学中最迷人的武器之一。当你想证明一个命题 为真时,你先假设它是假的(即假设 成立),然后进行一系列合法的逻辑推导,最终推导出一个极其荒谬的、自我矛盾的结论(例如 ,或者某个数既是偶数又是奇数)。因为推导过程无误,唯一的错误只能是你的假设 ,从而逼迫我们承认 必须为真。
反证法套路模板
- 目标 (Goal): 证明命题 为真
- 方法 (Approach):
- 假设 成立(假设命题为假)。
- 开展推理,推导出某个陈述 和它的否定 同时成立(即 ,产生矛盾)。
- 宣布“这不可能,产生了矛盾!”
- 结论 (Conclusion): 假设不成立,因此 必须为真。
💡 什么时候用反证法最合适?
手写笔记中提到的一点非常关键:当我们要证明“某样东西不存在”或者“是无限的”时候,反证法是最好的选择。
- 证明“无限” 反设“有限”(有限个就可以排出来、相乘,非常方便)。
- 证明“不存在” 反设“存在”(既然存在,就可以写成代数式 或具体的变量来算,从而制造矛盾)。
定理与证明
定理 2.6:素数有无穷多个
这是由古希腊数学家欧几里得在 2000 多年前做出的伟大证明。
证明所用引理 2.1:任何大于 1 的自然数要么是素数,要么能被某个素数整除。
反证法证明:
-
反设:假设定理不成立,即素数只有有限多个,设为 个:
-
构造新数:定义一个新数 ,它是所有这些有限素数的乘积再加上 1:
-
分析 的整除性:
- 首先, 显然比已知的任何素数 都大,所以 本身不在我们的素数列表里,即 不是素数。
- 根据引理 2.1,因为 不是素数,它必须能被某个素数 整除。
- 既然 是素数,它必须是我们列表 中的某一个。
-
制造矛盾:
-
因为 是列表中的某一个,所以 显然能整除乘积项 。
-
根据定理 2.1 的整除性质,由于 且 ,那么 也必须能整除它们的差:
-
但是,没有任何素数(素数都 )能整除 1!我们得出了一个荒谬的结论 。
-
-
结论:产生矛盾,反设不成立,因此素数必定有无穷多个。
定理 2.7: 是无理数
证明所用引理 2.2:若 是偶数,则 也是偶数。(在第9节课后习题中要求证明,我们在此使用它)。
反证法证明:
-
反设:假设 是有理数。
-
写出定义式:根据有理数的定义, 可以写成两个整数之比:
并且,我们可以假设这个分数已经约分到了最简形式,即 和 没有大于 1 的公因数(记为命题 )。
-
代数推导:
- 两边平方:。
- 因为 是整数,所以 必定是偶数。
- 根据引理 2.2,既然 是偶数,那么 也必定是偶数。
- 因此,我们可以将 写为 (其中 )。
-
继续推导 :
- 将 代入原方程:。
- 因为 是整数,所以 是偶数。
- 再次应用引理 2.2, 也必定是偶数。
-
产生矛盾:
- 我们证明了 和 都是偶数,这意味着它们共享公因数 2(即 )。
- 这与我们最初的假设“ 和 互质、没有大于 1 的公因数(最简分数)”直接矛盾!
-
结论:假设不成立, 必须是无理数。
6. 分情况证明 (Proof by Cases)
💡 核心思想
有时候,我们无法一步到位证明一个结论,但我们可以把问题空间划分为几种互斥且完备的可能情况 (Cases)。只要我们在每一种情况下都能证明结论成立,那么整个定理就必定成立。
定理 2.8:存在无理数 和 ,使得 是有理数
这个定理非常有趣,它向我们展示了分情况证明法的威力,同时也带来了一个极其惊艳的概念——非构造性证明 (Non-constructive Proof)。
证明:
-
我们已知 是无理数(由定理 2.7 证得)。
-
我们尝试令 且 。现在来看数:
-
我们不知道这个数到底是有理数还是无理数。但没关系,它只有两种可能。我们分情况讨论:
-
情况 (a):若 是有理数 那么我们已经找到了答案!此时令 (无理数),(无理数),得到的 是有理数。命题成立。
-
情况 (b):若 是无理数 既然它是无理数,我们就可以用它来构造下一代: 令 (根据假设是无理数),令 (无理数)。 现在我们计算 :
而 显然是有理数!命题依然成立。
由于情况 (a) 和情况 (b) 必有一个为真,所以在所有情况下,我们都成功证明了“存在这样的无理数 使得 为有理数”。
💡 难点解析:什么是非构造性证明 (Non-constructive Proof)?
你在手写笔记里写道:“我没有看明白 non-constructive proof”。
通俗解释: 通常,如果一个数学定理说“存在一个宝藏 ”,我们习惯的证明方式是直接带读者去找,指着它说:“看,这就是 !”(这叫构造性证明)。 但是在上面的证明中,我们证明完了之后,你如果问我:“所以,到底 是我们要找的无理数对,还是 是我们要找的无理数对?” 数学家会耸耸肩回答你:“我也不知道。但我能向你 100% 保证,这两个组合里绝对有一个是正确的!”
这就是非构造性证明:我们通过严密的逻辑网(情况a和情况b的互斥性),证明了符合某种条件的数学对象“必定存在”,但却无需具体指出这个对象到底是谁。这展示了纯数学逻辑中超越直觉的奇妙魅力。
7. 证明中的常见错误 (Common Errors When Writing Proofs)
写证明是一门艺术,但初学者极易陷入思维误区。下面是三个在作业和考试中非常经典的“翻车现场”分析:
错误一:循环论证 / 假设了待证结论 (Circular Reasoning)
伪命题 Claim 2.1:
伪证明 False Proof: 假设 。对两边进行平方,得到 ,即 。由于 显然成立,因此我们得出结论:。
- 错误根源解析: 你绝对不能把“想要证明的结论”作为推理的起点! 在这个伪证明中,我们实际上证明的是:“如果 为真,那么我们可以推出 这一真理”(即 )。 但在逻辑学中,一个假命题完全可以推出一个真命题(例如:“如果太阳从西边升起,那么 ”在逻辑逻辑蕴含上是 True 的)。这完全无法证明前提 自身为真!
错误二:忽略特殊情况——“除以零” (Dividing by Zero)
伪命题 Claim 2.2:
伪证明 False Proof: 假设 ( 均为非零整数)。 两边同乘 : 两边同时减去 : 因式分解: 两边同时除以 : 既然 ,代入得: 两边同时除以 (因为 ):。
- 错误根源解析: 问题出在这一步:“两边同时除以 ”。 因为我们最开始假设了 ,所以 。在数学中,除以 0 是没有定义的!一旦你在代数推理中悄悄除以了 0,接下来的所有推导都会坍塌,并能推出任何荒谬的结论(比如 )。
错误三:不等式平方与负数处理 (Inequalities & Negatives)
伪命题 Claim 2.3:
伪证明 False Proof: 我们已知 是成立的。对不等式两边同时平方,得到 。由于每一步都有依据,所以结论成立。
- 错误根源解析: 不等式不满足“若 ,则 ”。 只有在两边都是非负数(即 )时,平方才保持不等号方向。 如果是负数,平方会改变绝对值的大小。例如,若 ,其绝对值 并不一定成立(本例中 ,故平方后不等号反向)。 另外要记住:不等式两边同乘负数时,不等号必须改变方向!
8. 课后习题自我提升 (Exercises Solutions)
习题 1:推广定理 2.2 的证明到任意位数的正整数
题目:推广定理 2.2 的证明,使其适用于任意正整数 。(提示:假设 有 位数字,其各位数字写为 ,因此 。)
解答证明:
-
表示原数 : 任何一个 位正整数 可以用十进制展开式写作:
其中其各位数字之和为 。
-
建立假设:假设各位数字之和能被 9 整除,即存在 ,满足:
-
代数重组: 注意到对于任意非负整数 , 是一个由 个 9 组成的数(例如 , ),因此 必定能被 9 整除。 我们可令 ,代入原数 的代数式中:
-
提取公因数 9: 因为 总是 9 的倍数,我们可以将其写为 (其中 是整数)。 代入上式并结合我们的假设:
-
结论:由于小括号内全是整数的和与乘积,其结果必为整数。因此,任意正整数 如果其各位数字之和能被 9 整除,则 本身必能被 9 整除。
习题 2:证明引理 2.2
题目:证明:对于任意整数 ,若 是偶数,则 也是偶数。并思考:直接证明和逆否命题证明,哪种更适合解决这个问题?
解答分析:
- 若尝试直接证明:假设 ,我们得到 。在实数范围内,我们很难直接推导出 是一个偶整数,因为根号运算打破了整数的离散和代数结构。因此,直接证明极不适合此题。
- 若采用逆否命题证明:
- 原命题:若 是偶数 是偶数。
- 逆否命题:若 是奇数 是奇数。 这个逆否命题非常容易证明!
逆否命题法证明:
-
假设前提:假设 是奇数。
-
写出代数式:存在整数 ,使得 。
-
计算平方 :
-
得出结论:因为 ,所以 也是整数。这符合奇数的定义,因此 是奇数。
-
根据逆否命题的等价性,原命题“若 是偶数,则 是偶数”成功立论。