相关笔记: 9.3 关系的表示 | 9.5 等价关系

概览

本节系统介绍了关系的闭包(closure)概念,即如何为不具有某种性质的关系”补全”该性质,使其成为包含原关系的最小具有该性质的关系。重点讨论了三种闭包:自反闭包对称闭包传递闭包,其中传递闭包的计算最为复杂,涉及两种经典算法。

  • 闭包的一般定义:包含 且具有性质 的最小关系,若存在则唯一
  • 自反闭包 ,其中 是对角线关系
  • 对称闭包 ,添加所有缺失的反向有序对
  • 传递闭包 ,对于有限集可简化为
  • 布尔矩阵乘法算法(Algorithm 1):计算 ,复杂度
  • Warshall 算法(Algorithm 2):利用内部顶点逐步扩展,复杂度 ,是传递闭包计算的经典高效算法

一、知识结构总览

graph TB
    A["9.4 关系的闭包 Closures of Relations"] --> B["闭包的一般定义"]
    A --> C["自反闭包"]
    A --> D["对称闭包"]
    A --> E["传递闭包"]
    A --> F["Warshall 算法"]

    B --> B1["性质 P 的闭包"]
    B --> B2["最小性:所有具有 P 且包含 R 的关系的子集"]
    B --> B3["唯一性证明"]

    C --> C1["r(R) = R ∪ Δ"]
    C --> C2["Δ = 对角线关系"]
    C --> C3["矩阵:M_R ∨ I_n"]

    D --> D1["s(R) = R ∪ R⁻¹"]
    D --> D2["R⁻¹ = 逆关系"]
    D --> D3["矩阵:M_R ∨ M_R^t"]

    E --> E1["连通性关系 R*"]
    E --> E2["R* = ⋃ R^k (k=1 to ∞)"]
    E --> E3["有向图中的路径"]
    E --> E4["Lemma 1:路径长度 ≤ n"]
    E --> E5["Theorem 3:R* = R ∪ R² ∪ ... ∪ Rⁿ"]

    F --> F1["内部顶点概念"]
    F --> F2["W_0, W_1, ..., W_n 序列"]
    F --> F3["Lemma 2:递推公式"]
    F --> F4["三重循环伪代码"]
    F --> F5["复杂度 O(n³)"]
    F --> F6["与 Algorithm 1 的对比"]

    E5 --> G["Algorithm 1:布尔矩阵乘法"]
    G --> G1["M_R* = M_R ∨ M_R^[2] ∨ ... ∨ M_R^[n]"]
    G --> G2["复杂度 O(n⁴)"]

二、核心思想

核心思想

本节的核心思想是闭包运算(closure operation):给定一个关系 和一个期望的性质 (如自反性、对称性、传递性),构造包含 最小的具有性质 的关系。这种”最小补全”的思想在数学和计算机科学中广泛出现——例如拓扑学中的闭包、逻辑中的演绎闭包、数据库中的传递闭包查询等。三种闭包中,自反闭包和对称闭包的构造简单直接(只需添加特定的有序对),而传递闭包的构造则需要借助有向图中的路径概念和矩阵幂运算,引出了两种重要的算法设计思想:朴素的布尔矩阵乘法算法()和 Warshall 的动态规划式算法()。

1. 闭包的一般定义

闭包(Closure)

是集合 上的关系, 是关系的某个性质。如果存在集合 上的关系 满足:

  1. 具有性质
  2. 是所有满足条件 1 和 2 的关系中最小的(即 对所有满足条件 1 和 2 的 成立)

则称 关于性质 闭包

  • 闭包如果存在,则一定是唯一的
  • 唯一性证明:设 都是 关于 的闭包,则 (因为 满足条件, 是最小的)且 (因为 满足条件, 是最小的),故

并非所有性质都存在闭包

  • 自反性、对称性、传递性的闭包一定存在
  • 但某些性质(如”反自反性”)的闭包可能不存在
  • 例如,如果 本身包含 ,则任何包含 的反自反关系都不存在,因为反自反要求不包含任何

2. 自反闭包

自反闭包(Reflexive Closure)

是集合 上的关系,自反闭包

其中 上的对角线关系(diagonal relation)。

  • 自反闭包就是将 中缺失的所有 形式的有序对补上
  • 在矩阵表示中,,其中 的单位矩阵

自反闭包的最小性

是包含 的最小自反关系。

证明

  1. 是自反的:对任意
  2. :显然
  3. 是任意包含 的自反关系,则对任意 (因为 自反),故 ,从而

因此 是包含 的最小自反关系。

例1:求自反闭包

是整数集上的”小于”关系,求其自反闭包。

即”小于”关系的自反闭包是”小于等于”关系。

3. 对称闭包

对称闭包(Symmetric Closure)

是集合 上的关系,对称闭包

其中 逆关系(inverse relation)。

  • 对称闭包就是将 中每条有向边的反向边也补上
  • 在矩阵表示中,,其中 的转置

对称闭包的最小性

是包含 的最小对称关系。

证明

  1. 是对称的:若 ,则 。若 ,则 ;若 ,则
  2. :显然
  3. 是任意包含 的对称关系,若 ,则 ,由对称性 ,故 ,从而

例2:求对称闭包

是正整数集上的”大于”关系,求其对称闭包。

即”大于”关系的对称闭包是”不等于”关系。

4. 有向图中的路径

路径(Path)与回路(Circuit/Cycle)

在有向图 中,从顶点 到顶点 的一条路径是一个边序列 ,其中 。这条路径的长度(即边的条数)。

  • 长度为 0 的路径(空边集)是从 的路径
  • 长度为 1 且起点等于终点的路径称为回路(circuit)或(cycle)
  • 路径可以经过同一顶点多次,同一条边也可以在路径中出现多次

路径与关系幂的关系(Theorem 1)

是集合 上的关系,则从 存在长度为 为正整数)的路径,当且仅当

证明(数学归纳法):

基础步):由定义,从 存在长度为 1 的路径当且仅当 ,即

归纳假设:假设定理对正整数 成立。

归纳步):从 存在长度为 的路径,当且仅当存在元素 使得从 存在长度为 1 的路径(即 )且从 存在长度为 的路径(由归纳假设即 )。

由关系复合的定义, 当且仅当

因此,从 存在长度为 的路径当且仅当

由数学归纳法,定理对所有正整数 成立。

5. 连通性关系与传递闭包

连通性关系(Connectivity Relation)

是集合 上的关系,连通性关系 由所有满足以下条件的有序对 组成:在 中存在从 的长度至少为 1 的路径。

  • 包含所有通过一步或多步可以”到达”的顶点对
  • 在许多应用模型中非常有用(社交网络中的人际连接、交通网络中的可达性等)

例4:社交网络中的连通性

是全世界所有人之间的关系, 表示 认识 。则:

  • 包含 当且仅当存在中间人 使得 认识 认识 (“朋友的朋友”)
  • 包含 当且仅当存在一条长度为 的认识链
  • 包含 当且仅当存在一条从 的认识链(无论多长)

传递闭包等于连通性关系(Theorem 2)

关系 的传递闭包等于连通性关系

证明

第一步: 是传递的。设 ,则存在从 的路径和从 的路径。将两条路径首尾相连,得到从 的路径,故

第二步: 是包含 的最小传递关系。设 是任意包含 的传递关系。因为 传递,所以 也是传递的(读者可验证),且 (因为 )。因此

综上, 是传递的、包含 的、且是所有包含 的传递关系中最小的,因此 就是 的传递闭包。

路径长度的上界(Lemma 1)

是有 个元素的集合, 上的关系。若 中存在从 的路径(长度至少为 1),则存在长度不超过 的这样的路径。进一步,当 时,存在长度不超过 的这样的路径。

证明:设从 的最短路径为 ,其中

假设 。由鸽巢原理,在 个顶点 中(注意不含 ),至少有两个顶点相同(因为 只有 个元素)。设 ),则路径中包含一个从 到自身的回路。删除这个回路,得到一条更短的路径 ,这与”最短路径”的假设矛盾。

因此最短路径的长度 的情况类似可证。

传递闭包的有限表示(Theorem 3)

个元素集合上关系 的零一矩阵,则传递闭包 的零一矩阵为

推导过程:由 Theorem 2,。由 Lemma 1,对于有限集 ), 中任意有序对 都在某个 )中出现。因此

用零一矩阵表示,并集对应布尔 join:

例7:用布尔幂求传递闭包

由 Theorem 3,

计算

计算

因此

6. Algorithm 1:布尔矩阵乘法算法

Algorithm 1 -- 传递闭包的布尔矩阵乘法算法

输入 零一矩阵 输出:传递闭包 的零一矩阵

伪代码

procedure transitive closure (M_R: n × n zero-one matrix)
    A := M_R
    B := A
    for i := 2 to n
        A := A ⊙ M_R          // 计算布尔幂 M_R^{[i]}
        B := B ∨ A            // 累积 join
    return B                  // B = M_{R^*}
  • 外层循环执行
  • 每次循环计算一次布尔乘积( 次位运算)和一次布尔 join( 次位运算)
  • 总复杂度:,即

7. Warshall 算法

内部顶点(Interior Vertices)

设路径为 ,则内部顶点是路径中除起点 和终点 之外的所有顶点,即

  • 长度为 1 的路径没有内部顶点
  • 如果路径经过某个顶点两次(如 ),则 也是内部顶点(因为路径再次经过它)

Warshall 算法的矩阵序列

个元素集合 上的关系。定义零一矩阵序列

  • (原始关系的零一矩阵)
  • ,其中 当且仅当存在从 的路径,且该路径的所有内部顶点都在集合

关键结论:(传递闭包的零一矩阵),因为当允许所有 个顶点作为内部顶点时, 当且仅当从 存在任意路径。

Warshall 算法的递推公式(Lemma 2)

对所有正整数

直觉理解:从 的路径(内部顶点限于 )存在,当且仅当以下两种情况之一成立:

  1. Case 1:不经过 作为内部顶点就已经有路径(
  2. Case 2:从 有路径(内部顶点限于 ),且从 也有路径(内部顶点限于 ),即

Warshall 算法(Algorithm 2)

输入 零一矩阵 输出:传递闭包 的零一矩阵

伪代码

procedure Warshall (M_R: n × n zero-one matrix)
    W := M_R
    for k := 1 to n
        for i := 1 to n
            for j := 1 to n
                w_ij := w_ij ∨ (w_ik ∧ w_kj)
    return W              // W = M_{R^*}
  • 三重嵌套循环,每层循环执行
  • 最内层每次执行 2 次位运算(一次 ,一次
  • 总复杂度:,即====
  • 相比 Algorithm 1 的 ,Warshall 算法效率提高了一个数量级

例8:Warshall 算法逐步演示

的有向图包含顶点 和边

(允许 作为内部顶点):

  • 新增路径 ,故

(允许 作为内部顶点):

  • 没有入边(没有边以 为终点),所以允许 作为内部顶点不会产生新路径

(允许 作为内部顶点):

  • 新增路径 ,故
  • 新增路径 ,故

(允许所有顶点作为内部顶点):

  • 新增路径 ,故
  • 新增路径 ,故
  • 新增路径 ,故

即为传递闭包 的零一矩阵。

8. 两种算法的对比

Algorithm 1 vs Warshall 算法

特征Algorithm 1(布尔矩阵乘法)Warshall 算法
时间复杂度====
位运算次数
核心思想计算布尔幂 并累积 join逐步扩展允许的内部顶点集合
空间复杂度(可原地更新)(原地更新)
实现难度较简单(布尔乘积 + join)简单(三重循环)
适用场景需要中间幂结果时仅需传递闭包时

Warshall 算法的效率优势来源于其动态规划思想:不是独立计算每个布尔幂再合并,而是利用前一步的结果逐步扩展可达性信息。每一步只考虑”是否通过新允许的内部顶点可以到达更多顶点”,避免了重复计算。


三、补充理解与易混淆点

补充理解

补充1:闭包思想在计算机科学中的广泛应用

传递闭包的概念在计算机科学中有极其重要的应用:

  • 数据库查询:SQL 中的递归公共表表达式(Recursive CTE)本质上就是在计算传递闭包。例如,在组织架构表中查询”某员工的所有下属(包括间接下属)“就是计算管理层级关系的传递闭包。
  • 程序分析:编译器中的可达性分析(reachability analysis)需要计算控制流图的传递闭包,以确定哪些代码块可以从入口到达。
  • 网络路由:互联网路由协议(如 BGP)需要计算网络拓扑的传递闭包,以确定数据包的可达性。
  • 社交网络:推荐系统中的”朋友的朋友”推荐就是计算社交关系图的传递闭包。

Warshall 算法由 Stephen Warshall 于 1960 年提出(Bernard Roy 在 1959 年也独立描述了该算法,因此也称为 Roy-Warshall 算法)。该算法的优美之处在于:它不需要计算矩阵乘法,仅通过简单的位运算就能高效地计算出传递闭包。 来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 9.4. 来源:Aho, A. V., Lam, M. S., Sethi, R. & Ullman, J. D. (2006). Compilers: Principles, Techniques, and Tools (2nd ed.), Pearson, Chapter 4 (Syntax Analysis).

补充2:Warshall 算法与 Floyd-Warshall 算法的关系

Warshall 算法(1960)计算的是布尔矩阵的传递闭包(判定可达性:0 或 1),而 Floyd-Warshall 算法(1962,由 Robert Floyd 独立发现)计算的是加权图中的最短路径(数值距离)。两者的核心思想完全相同——都是通过逐步扩展允许经过的中间顶点来更新信息——但 Warshall 用布尔运算(),Floyd-Warshall 用算术运算(, )。

可以将 Warshall 算法视为 Floyd-Warshall 算法在布尔半环上的特例。这种”同一思想在不同代数结构上的实例化”的模式在算法设计中非常常见。 来源:Warshall, S. (1962). “A Theorem on Boolean Matrices.” Journal of the ACM, 9(1), 11–12. 来源:Floyd, R. W. (1962). “Algorithm 97: Shortest Path.” Communications of the ACM, 5(6), 345.

易混淆点

误区1:传递闭包不能简单通过"添加缺失的三元组"一步完成

  • 自反闭包只需一步:
  • 对称闭包只需一步:
  • 但传递闭包不能一步完成
  • 添加所有 (其中 )后,新的有序对可能与现有有序对组合产生更多需要添加的有序对
  • 例如:,添加 后,又需要添加
  • 这就是为什么传递闭包需要借助路径概念和迭代算法来计算

误区2: 中不包含长度为 0 的路径

  • 的定义是”长度至少为 1 的路径”,即
  • 不自动包含对角线关系
  • 如果需要”长度至少为 0 的路径”(即包含自反性),应使用
  • 自反传递闭包 (其中

误区3:Warshall 算法中 循环不能放在最内层

  • Warshall 算法的三重循环顺序是 ,== 必须是最外层循环==
  • 这是因为 的计算依赖于 的完整结果
  • 如果将 放在内层,则在计算 时,某些 可能已经被更新为 的值而非 的值,导致结果错误
  • 这是初学者实现 Warshall 算法时最常见的错误之一

四、习题精选

习题概览

题号范围核心考点难度
1-3求给定关系的自反闭包/对称闭包
4-9用有向图构造自反闭包/对称闭包⭐⭐
10-11求同时满足自反和对称的最小关系⭐⭐
12-13证明自反闭包/对称闭包的矩阵公式⭐⭐
14证明闭包等于所有满足条件的关系的交集⭐⭐⭐
15反自反闭包的存在性讨论⭐⭐⭐
16-18判定路径、回路、可达性⭐⭐
19-24用 Algorithm 1 计算传递闭包⭐⭐⭐
25-30用 Warshall 算法计算传递闭包⭐⭐⭐
31-36传递闭包的性质证明⭐⭐⭐⭐
37-40闭包的组合与性质⭐⭐⭐⭐
41-46Warshall 算法的正确性与变体⭐⭐⭐⭐

题1:求自反闭包和对称闭包

题目

是集合 上的关系。求 的自反闭包和对称闭包。

题2:用矩阵公式求闭包

题目

设关系 的零一矩阵为

用矩阵公式求 的自反闭包和对称闭包的零一矩阵。

题3:用 Algorithm 1 求传递闭包

题目

设关系 的零一矩阵为

用 Algorithm 1 求 的传递闭包。

题4:用 Warshall 算法求传递闭包

题目

设关系 的零一矩阵为

用 Warshall 算法逐步求 的传递闭包。

题5:证明闭包的交集表示

题目

证明:关系 关于性质 的闭包(如果存在)等于所有具有性质 且包含 的关系的交集。

解题思路提示

闭包相关题目的解题方法论:

  1. 求自反闭包,只需添加所有缺失的
  2. 求对称闭包,只需添加所有缺失的反向有序对
  3. 求传递闭包(Algorithm 1):计算 ,然后取布尔 join
  4. 求传递闭包(Warshall):三重循环 ,核心公式
  5. 证明闭包性质:通常需要证明三个方面——具有目标性质、包含原关系、最小性
  6. 注意传递闭包的迭代性:添加新有序对后可能产生更多需要添加的有序对,不能一步完成

五、视频学习指南

视频资源

资源链接对应内容备注
Rosen 8e Section 9.4教材原文完整定义、定理与例题英文教材
MIT 6.042J Lecture 9链接关系闭包与传递闭包英文,MIT开放课程
Warshall 算法可视化链接Floyd-Warshall 算法交互式演示可视化工具

六、教材原文

教材原文

“A computer network has data centers in Boston, Chicago, Denver, Detroit, New York, and San Diego. There are direct, one-way telephone lines from Boston to Chicago, from Boston to Detroit, from Chicago to Detroit, from Detroit to Denver, and from New York to San Diego. Let R be the relation containing (a, b) if there is a telephone line from the data center in a to that in b. How can we determine if there is some (possibly indirect) link composed of one or more telephone lines from one center to another?”

“Warshall’s algorithm, named after Stephen Warshall, who described this algorithm in 1960, is an efficient method for computing the transitive closure of a relation.”


参见 Wiki

关系