Ran Wei/计算机科学系列/04
English
计算机科学基础 — Ran Wei

模块 04: 数学基础

用逻辑、集合、关系、证明与概率表达程序含义并论证结论。

约 5 小时4 个时段2 个实验8 道练习6 道自测题

完成后你能够

  • 构建真值表。
  • 使用集合与关系。
  • 区分函数与单射性。
  • 构造归纳证明。
  • 计算有限条件概率。

开始之前

建议先修模块: 01, 03.

了解函数与循环,无需证明课程基础。∀ 表示任意,∃ 表示存在。

目录

学习计划

5 小时

四个 75 分钟时段,包含练习。拓展任务或不熟悉的先修知识可能需要更多时间。进度本地保存,两种语言共享。

时段 275 分钟
构建与探究
时段 375 分钟
应用与拓展
时段 475 分钟
推理与复习
1

逻辑与量词

命题具有真值。否定翻转真值,合取要求双方成立,析取要求至少一方成立。蕴含 p→q 等价于非 p 或 q,仅在 p 真而 q 假时为假。它表达前置条件成立时后置条件必须成立,并不表示因果。每条记录都有 ID 与某条记录有 ID 不同。∀x P(x) 的否定是 ∃x 非 P(x),一个反例即可推翻全称断言。

检查理解

p→q 何时为假?

完整解答

仅 p 真、q 假时。

2

集合与关系

集合包含不同元素,不具有位置顺序。并集包含任一集合中的元素,交集保留共同元素,差集 A−B 保留仅在 A 中的元素。关系是有序对的集合,例如借阅关系连接书 ID 与会员 ID。自反表示元素关联自身,对称表示关系可反向,传递表示 xRy 且 yRz 推出 xRz。相等满足三者,有向依赖未必对称。

检查理解

A={1,2}、B={2,3},A−B 是什么?

完整解答

{1},不同于 B−A={3}。

3

函数与计数

函数把定义域每个元素映射到值域中的唯一元素。单射要求不同输入对应不同输出,满射要求覆盖陪域,双射兼具两者。两个独立选择分别有 a、b 种可能时,共有 a×b 种组合;只有等可能时才能直接用于概率。超过 k 个对象放入 k 个桶,至少一个桶重复占用,这是鸽巢原理,也说明哈希碰撞无法总被避免。

检查理解

五个不同键放入四桶能不碰撞吗?

完整解答

不能,由鸽巢原理。

4

证明与归纳法

直接证明从假设推出结论,反例否定全称陈述。归纳法先证明基础情况,再证明 k 成立推出 k+1 成立。对 1+…+n=n(n+1)/2,n=0 时为零;在 k(k+1)/2 上加 k+1 得 (k+1)(k+2)/2。检查十个值有助调试,却不能覆盖无限多个 n。循环不变式也采用初始化与保持结构。

检查理解

归纳证明的基础情况之后需要什么?

完整解答

从 k 成立推出 k+1 成立。

5

概率与期望

有限样本空间列出结果。等可能时 P(A)=|A|/|Ω|。条件概率把范围限制为 B:P(A|B)=P(A∩B)/P(B),要求 P(B)>0。独立要求 P(A∩B)=P(A)P(B),与互斥不同。期望按概率加权,公平骰子的期望为 3.5,但实际不会掷出 3.5。E[X+Y]=E[X]+E[Y] 无需独立,期望相乘等其他恒等式则需附加条件。

检查理解

概率非零的互斥事件独立吗?

完整解答

不独立:联合概率为零,而概率乘积为正。

6

常见误解

  • 逆命题不同于逆否命题。
  • 等可能是一项假设,并非自动成立。
7

实验准备

下载脚本,在终端中使用 Python 3.11 或更新版本运行:python m04_logic.py. Windows 也可使用 py -3;部分系统使用 python3。实验仅用标准库。先预测结果,再运行并完成变体。不要使用 -O,以保留断言。下方输出由构建器实际运行捕获,两种语言使用相同代码与输出。

8

实验 1 — 真值表与集合

枚举四种布尔输入,检查蕴含与逆否命题等价,并验证德摩根律。

下载 m04_logic.py

"""Enumerate finite cases to check logical equivalence and set operations."""
from itertools import product
for p, q in product([False, True], repeat=2):
    implication = (not p) or q
    contrapositive = q or (not p)  # (not q) implies (not p)
    assert implication == contrapositive
    assert (not (p and q)) == ((not p) or (not q))
    print(int(p), int(q), "implies:", int(implication))
available = {1, 2, 3}
requested = {2, 3, 4}
print("intersection:", sorted(available & requested))
print("union:", sorted(available | requested))
print("missing:", sorted(requested - available))
实际运行输出
0 0 implies: 1
0 1 implies: 1
1 0 implies: 0
1 1 implies: 1
intersection: [2, 3]
union: [1, 2, 3, 4]
missing: [4]
  1. 改成 q→p 并找反例。
  2. 加入集合对称差。
完整解答

p 假、q 真时原命题真而逆命题假。对称差为 {1,4},保留仅属于一方的元素。

9

实验 2 — 精确概率与归纳检查

两枚有标记的骰子有 36 个等可能有序结果,Fractions 避免浮点近似。

下载 m04_probability.py

"""Exact finite probability, conditional probability and a summation identity."""
from fractions import Fraction
outcomes = [(a, b) for a in range(1, 7) for b in range(1, 7)]
event = [(a, b) for a, b in outcomes if a + b == 7]
condition = [(a, b) for a, b in outcomes if a == 1]
joint = [x for x in condition if sum(x) == 7]
print("P(sum=7):", Fraction(len(event), len(outcomes)))
print("P(sum=7 | first=1):", Fraction(len(joint), len(condition)))
for n in [0, 1, 5, 10]:
    total = sum(range(1, n + 1))
    assert total == n * (n + 1) // 2
    print("n:", n, "sum:", total)
实际运行输出
P(sum=7): 1/6
P(sum=7 | first=1): 1/6
n: 0 sum: 0
n: 1 sum: 1
n: 5 sum: 15
n: 10 sum: 55
  1. 计算和为 8 的概率,以及第一枚为 1 时的条件概率。
  2. 累加时排除 n,找失败案例。
完整解答

和为八有五种,概率 5/36;第一枚为一时不可能,概率零。排除 n 后,n=1 就失败,计算总和为零。

10

练习与完整解答

先尝试,再展开解答。★ 应用概念;★★ 结合概念;★★★ 进行设计或证明。

练习 1 — 否定陈述★

否定:每本书都有唯一 ID。

完整解答

存在一本没有唯一 ID 的书。需说明定义域中缺失 ID 是否无效。

练习 2 — 集合计算★

计算 {1,3} 与 {3,5} 的并交集。

完整解答

并集 {1,3,5},交集 {3}。

练习 3 — 逆命题★★

p→q 能推出 q→p 吗?给反例。

完整解答

不能。p 假 q 真时前者真、后者假。

练习 4 — 单射性★★

平方函数在整数上单射吗?非负整数呢?

完整解答

整数上不单射,−2 与 2 都给四;非负整数上单射,较大输入平方更大。

练习 5 — 条件概率★★

公平骰子大于三时为偶数的概率?

完整解答

限制后结果为 4、5、6,两项偶数,概率 2/3。

练习 6 — 归纳法★★★

证明 0+…+n=n(n+1)/2。

完整解答

基础 n=0 两边为零。假设 k 成立,加 k+1 得 k(k+1)/2+(k+1)=(k+1)(k+2)/2,故 k+1 成立。

练习 7 — 期望★★

两次公平抛硬币的正面数期望?

完整解答

每次指示变量期望 1/2,相加为一;也可按 1/4、1/2、1/4 加权 0、1、2。

练习 8 — 关系★★★

每本书恰有一个作者时,同作者关系是等价关系吗?

完整解答

是:自反、对称且作者相等可传递。缺失或多作者时需重新规定关系。

11

自测

选择答案查看反馈,重置后可重做。无需 JavaScript 也可阅读答案表。

1

什么推翻全称陈述?

2

A∩B 是什么?

3

归纳需要什么?

4

函数为每个输入分配什么?

5

P(A|B) 要求什么?

6

公平骰子期望?

答案表
  1. A — 全称要求所有有效情况。
  2. B — 交集保留共同成员。
  3. C — 归纳步骤覆盖已检查实例之外。
  4. A — 定义域每个元素都必须映射。
  5. B — 需要除以 P(B)。
  6. C — 均值为 (1+…+6)/6。
12

引导阅读

13

复习与下一步

解释测试与证明提供的不同证据,为目录计数写一个不变式。模块 05 将分析搜索与排序。

14

关键术语

术语含义
不变式在指定执行位置保持的性质。
条件概率限制到正概率条件后的概率。
双射兼具单射与满射的函数。