闭包
集合 A 上的关系 R 关于性质 P 的闭包(closure),指的是满足性质 P 且包含 R 的极小关系 S。也就是说,S 包含 R、满足性质 P,且是任何包含 R、满足性质 P 的关系的子集。
自反闭包
一个关系 R 的自反闭包,等于自身与相等关系的并。
对称闭包
一个关系 R 的对称闭包(symmetric closure)等于关系 R 与其逆的并。
显然,R = \{(a, b): (a, b) \in R\},其逆就是 R^{-1} = \{(a, b): (b, a) \in R\}。也就是说,R 的对称闭包就是 R \cup R^{-1} = \{(a, b): (a, b) \in R \lor (b, a) \in R\}。
传递闭包
关系与有向图
对于集合 A 上的二元关系 R 和 a, b \in A,若存在 c \in A,使得 (a, c) \in R 且 (c, b) \in R,则称 (a, b) \in R^2。同理可以继续定义 R^3, R^4, \dots, R^n。
二元关系 R 可以看作一个有向图 G = (A, R),则 (a, b) \in R^n 当且仅当 G 上 (a, b) 存在一条长度为 n 的路径(未必是简单路径)。这一点由数学归纳法,显然。
传递闭包
集合 A 上关系 R 的传递闭包(transitive closure)R^*,指的是对任意的 a, b, c \in A,如果 (a, b) \in R^*,(b, c) \in R^*,则一定有 (a, c) \in R^* 的包含 R 的最小集合。
传递闭包由以下公式给出:
若有向图的节点数为 n,节点 a, b 之间有一条长度为 l 的路径,且 l \ge n,则该路径必定重复经过某些节点,形成了一个环。此时必有一条相同的、长度小于 l 的路径代替该节点。对应到传递闭包上,并集只需计算到 n 即可:
算法
朴素算法
关系 R 对应的 0-1 矩阵也用 R 表示,则相当于计算:
规定 0-1 矩阵的乘法定义中,“乘”表示逻辑与,“加”表示逻辑或。i.e. 定义 C = AB 为
Warshall 算法
见 传递闭包
读完了,有什么想法?
阅读已保存的问答示例,并循着引用回到原文。