Skip to content

Lecture 15:关系与计数

1. 关系(Relations)

定义: 一个关系 RA×B 由以下部分构成:

  • 定义域 A(任意集合)
  • 陪域 B(任意集合)
  • 有序对的子集 RA×B

记法:(a,b)R 也可写作 a,R,b,或将 R 视为谓词写作 R(a,b)。方向很重要:a 关联到 b 不代表 b 关联到 a

关系可视为有向图:ab 当且仅当 (a,b)R

函数与全函数

定义: 若每个 aA 至多关联到一个 bB,则称 R函数,记作 R:AB。(每个 a 至多一条出边。)

定义: 若每个 aA 至少关联到一个 bB,则称 R全关系(Total)。(每个 a 至少一条出边。)

全函数 = 恰好每个 aA 有唯一一条出边,即 f(a) 对所有输入都有定义且唯一。

注意:f(x)=1/x2 作为 RR 的函数不是全函数(f(0) 无定义),但作为 R0R 的函数是全函数。定义域和陪域不同,性质也不同。

单射与满射

定义:

  • 单射(Injective):每个 bB 至多有一个 a 与之关联。(每个 b 至多一条入边。)
  • 满射(Surjective):每个 bB 至少有一个 a 与之关联。(每个 b 至少一条入边。)

定理:A,B 是有限集,RA×B 是全单射,则 |A||B|

定理:A,B 是有限集,RA×B 是满射函数,则 |A||B|

定义: 双射(Bijection) = 既单射又满射的全函数。

定理:A,B 是有限集且存在双射 R:AB,则 |A|=|B|


2. 单集合上的关系

A=B 时,RA×A 称为集合 A 上的二元关系,等价于一个有向图。

常见例子:a=bab(mod10)abABab

有向图 G可达性关系 Ga,G,b 当且仅当存在从 ab 的游走。

强连通关系 Sa,S,b 当且仅当 a,G,bb,G,a

2.1 等价关系

动机: 捕捉"相同"或"等价"的含义,如模运算中的同余、图中属于同一连通分量。

定义:RA×A

  • 自反性(Reflexive):对所有 aAa,R,a
  • 对称性(Symmetric)a,R,bb,R,a
  • 传递性(Transitive)a,R,bb,R,c a,R,c

R 同时满足自反性、对称性、传递性,则称 R等价关系

定理: 等价关系将 A 划分为若干等价类,每个 aA 恰属于一个等价类;a,R,b 成立当且仅当 ab 属于同一等价类。

2.2 弱偏序(Weak Partial Order,WPO)

动机: 捕捉""的含义,如 ABab、DAG 中的可达关系。

保留自反性和传递性,将对称性替换为:

定义:

  • 反对称性(Antisymmetric):若 a,R,bb,R,a,则 a=b

R 满足自反性、反对称性、传递性,则称 R弱偏序

定理: 有向图 G 上的可达关系是 WPO,当且仅当 G 是 DAG。

定义: WPO 中,若 a,R,bb,R,a,则称 ab 可比

若每对元素都可比,则称 WPO 为线序(全序,Total Order)

  • ab 是全序;abAB 不是(存在不可比的元素对)。

3. 计数

3.1 核心思路:用双射计数

牧羊人的寓言: 不会数数的牧羊人靠"放一只羊出去就放一颗石子进口袋,收回一只就取出一颗"来确认羊全回来了。这本质上是在羊和石子之间建立双射,从而保证数量相同。

核心原则: 通常通过建立双射来计数。

3.2 乘法法则(Product Rule)

|A1××An|=|A1|  |An|

例: 长度为 n 的二进制串的数量为 2n,因为该集合就是 0,1n

3.3 双射法则(Bijection Rule)

若存在双射 AB,则 |A|=|B|

例: 1,2,,n 的子集数为 2n

构造双射:子集 A 映射到 n 位二进制串,第 i 位为 1 当且仅当 iA

3.4 加法法则(Sum Rule)

A1,,An 两两不相交,则 |A1An|=|A1|++|An|

口诀: 若是"或"关系(从 A1 A2 中选),用加法;若是"且"关系(从 A1 A2 中选),用乘法。

例(密码计数): 密码长度为 6~8,首字母大写,其余字符为大小写字母或数字(共 62 种)。设 Wk 为长度 k 的合法密码数,由乘法法则有 Wk=2662k1,故 |W|=W6+W7+W85.7×1015

3.5 广义乘法法则(Generalized Product Rule)

A 是长度为 k 的序列的集合,其中:

  • 第 1 个位置有 n1 种选择,
  • 无论第 1 步如何选,第 2 个位置有 n2 种选择,
  • ……无论前 i1 步如何选,第 i 个位置有 ni 种选择,

|A|=n1n2nk

关键: 每步的选择数量不依赖之前的选择(具体内容可以变,但数量固定)。

例: 52 张牌的洗牌排列数 = 52×51××1=52!

例: 8 位序列号中无重复数字的比例:无重复的数量为 10×9××3,总数量为 108,比例约为 1.8

反例(不能用广义乘法法则): 求三位递增序列 abc(各位不同且 a<b<c)的数量。第二位的选择数依赖第一位的值(a=7 时只有 b=8 一种,a=0 时有 8 种),因此不满足广义乘法法则的条件。