在离散数学中,很多结构问题都可归结为“关系是否满足某种性质”。
闭包思想用于以最小代价补全关系,Warshall 算法则给出传递闭包的标准计算流程。
设 R⊆A×A。
- 自反闭包:Rr=R∪IA,其中 IA={(a,a)∣a∈A}。
- 对称闭包:Rs=R∪R−1。
- 传递闭包:最小的传递关系 Rt,且 R⊆Rt,记作 R+。
若同时要求自反与传递,常记 R∗=R+∪IA。
设 A={1,2,3},R={(1,2),(2,3)},求 Rr,Rs。
解:
Rr=R∪{(1,1),(2,2),(3,3)},
Rs=R∪{(2,1),(3,2)}.
把关系 R 看作有向图边集,R+ 恰好表示“存在长度至少 1 的有向路径”的可达关系。
R+=R∪R2∪R3∪⋯
在有限集上最多累积到 ∣A∣−1 次复合即可稳定。
设 A={1,2,3},R={(1,2),(2,3)}。
解:
有 (1,2),(2,3)∈R,故 (1,3)∈R2。
因此:
R+={(1,2),(2,3),(1,3)}.
对 A={a1,…,an},关系矩阵 MR=(mij) 定义为:
mij={1,0,(ai,aj)∈R,otherwise.
矩阵布尔乘法对应关系复合。
因此可用矩阵迭代计算传递闭包。
设 A={1,2,3},R={(1,2),(2,3)},写出 MR。
解:
MR=000100010.
Warshall 算法用于直接求可达矩阵(传递闭包矩阵)。
设初始矩阵 W(0)=MR,递推:
wij(k)=wij(k−1)∨(wik(k−1)∧wkj(k−1)),k=1,…,n.
含义:逐步允许中间点来自 {1,…,k}。
对例题 3 的矩阵,当 k=2 时,为什么会把 (1,3) 置为 1?
解:
因为 w12(1)=1 且 w23(1)=1,故
w13(2)=w13(1)∨(w12(1)∧w23(1))=0∨(1∧1)=1.
给定关系 R,如何得到最小等价关系包含它?
解:
可按步骤构造:
- 先取对称闭包 Rs=R∪R−1;
- 再取其自反传递闭包 (Rs)∗。
得到的关系即包含 R 的最小等价关系。
设 A={1,2,3},R={(1,2)},求 R 的对称闭包。
点击查看过程与答案
Rs=R∪R−1={(1,2),(2,1)}.
设 R={(1,2),(2,3),(3,4)}(定义在 {1,2,3,4} 上),求 (1,4) 是否属于 R+。
点击查看过程与答案
因为存在路径 1→2→3→4,故 (1,4)∈R+。
在 Warshall 更新公式中,若某一步 wik=0,还能否通过该 k 让 wij 变成 1?
点击查看过程与答案
不能。因为
wik∧wkj=0∧wkj=0,该中间点 k 对 (i,j) 的可达更新无贡献。
关系 R 已自反、对称但不传递。若要得到最小等价关系,需要补什么闭包?
点击查看过程与答案
只需补传递闭包并保留自反性:
Req=R∗.