文章

离散数学-Week6

离散数学-第6周小结

离散数学-Week6

关系的性质

关系性质的定义和判别

自反性与反自反性

定义4.14 设R为A上的关系:

  • 若∀x(x∈A → <x,x>∈R),则称R在A上是自反的
  • 若∀x(x∈A → <x,x>∉R),则称R在A上是反自反的

实例

  • 自反关系:A上的全域关系E_A、恒等关系I_A、小于等于关系L_A、整除关系D_A
  • 反自反关系:实数集上的小于关系、幂集上的真包含关系

例1:A = {a, b, c}, R₁, R₂, R₃是A上的关系

  • R₁ = {<a,a>,<b,b>}
  • R₂ = {<a,a>,<b,b>,<c,c>,<a,b>}
  • R₃ = {<a,c>}

R₂自反,R₃反自反,R₁既不自反也不反自反

对称性与反对称性

定义4.15 设R为A上的关系:

  • 若∀x∀y(x,y∈A ∧ <x,y>∈R → <y,x>∈R),则称R为A上对称的关系
  • 若∀x∀y(x,y∈A ∧ <x,y>∈R ∧ <y,x>∈R → x=y),则称R为A上反对称的关系

实例

  • 对称关系:A上的全域关系E_A、恒等关系I_A和空关系∅
  • 反对称关系:恒等关系I_A、空关系∅

例2:设A={a,b,c}, R₁, R₂, R₃和R₄都是A上的关系

  • R₁={<a,a>,<b,b>}
  • R₂={<a,a>,<a,b>,<b,a>}
  • R₃={<a,b>,<a,c>}
  • R₄={<a,b>,<b,a>,<a,c>}

R₁对称、反对称;R₂对称,不反对称;R₃反对称,不对称;R₄不对称、也不反对称

传递性

定义4.16 设R为A上的关系,若
∀x∀y∀z(x,y,z∈A ∧ <x,y>∈R ∧ <y,z>∈R → <x,z>∈R)
则称R是A上的传递关系

实例:A上的全域关系E_A、恒等关系I_A和空关系∅、小于等于关系、小于关系、整除关系、包含关系、真包含关系

例3:设A={a, b, c}, R₁, R₂, R₃是A上的关系

  • R₁={<a,a>,<b,b>}
  • R₂={<a,b>,<b,c>}
  • R₃={<a,c>}

R₁和R₃是A上的传递关系,R₂不是A上的传递关系

关系性质的充要条件

设R为A上的关系,则:

  1. 自反性:R在A上自反 ⇔ I_A ⊆ R
  2. 反自反性:R在A上反自反 ⇔ R ∩ I_A = ∅
  3. 对称性:R在A上对称 ⇔ R = R⁻¹
  4. 反对称性:R在A上反对称 ⇔ R ∩ R⁻¹ ⊆ I_A
  5. 传递性:R在A上传递 ⇔ R ∘ R ⊆ R

证明方法

自反性证明

证明模式:证明R在A上自反

任取x, x∈A ⇒ … ⇒ <x,x>∈R 前提 推理过程 结论

例4:证明若I_A ⊆ R,则R在A上自反
证明
任取x,
x∈A ⇒ <x,x> ∈ I_A ⇒ <x,x> ∈ R
因此R在A上是自反的

对称性证明

证明模式:证明R在A上对称

任取<x,y>, <x,y>∈R ⇒ … ⇒ <y,x>∈R 前提 推理过程 结论

例5:证明若R = R⁻¹,则R在A上对称

证明
任取<x,y>,
<x,y>∈R ⇒ <y,x>∈R⁻¹ ⇒ <y,x>∈R
因此R在A上是对称的

反对称性证明

证明模式:证明R在A上反对称

任取<x,y>, <x,y>∈R ∧ <y,x>∈R ⇒ … ⇒ x=y 前提 推理过程 结论

例6:证明若R ∩ R⁻¹ ⊆ I_A,则R在A上反对称

证明
任取<x,y>,
<x,y>∈R ∧ <y,x>∈R ⇒ <x,y>∈R ∧ <x,y>∈R⁻¹
⇒ <x,y>∈R ∩ R⁻¹ ⇒ <x,y>∈I_A ⇒ x=y
因此R在A上是反对称的

传递性证明

证明模式:证明R在A上传递

任取<x,y>,<y,z>, <x,y>∈R ∧ <y,z>∈R ⇒ … ⇒ <x,z>∈R 前提 推理过程 结论

例7:证明若R ∘ R ⊆ R,则R在A上传递

证明
任取<x,y>,<y,z>,
<x,y>∈R ∧ <y,z>∈R ⇒ <x,z>∈R ∘ R ⇒ <x,z>∈R
因此R在A上是传递的

关系性质判别与闭包

关系性质判别表

性质 表达式 关系矩阵 关系图
自反性 $I_A \subseteq R$ 主对角线元素全是 1 每个顶点都有环
反自反性 $R \cap I_A = \varnothing$ 主对角线元素全是 0 每个顶点都没有环
对称性 $R = R^{-1}$ 矩阵是对称矩阵 如果两个顶点之间有边,一定是一对方向相反的边(无单向边)
反对称性 $R \cap R^{-1} \subseteq I_A$ 若 $r_{ij} = 1$ 且 $i \ne j$,则 $r_{ji} = 0$ 如果两点之间有边,一定是一条有向边(无双向边)
传递性 $R \circ R \subseteq R$ 对 $M^2$ 中为 1 的位置,$M$ 中相应位置也都是 1 如果顶点 $x_i$ 到 $x_j$ 有边,$x_j$ 到 $x_k$ 有边,则 $x_i$ 到 $x_k$ 也有边

关系的性质和运算之间的联系

设 $R_1$、$R_2$ 是集合 $A$ 上的关系。下表表示在进行相应运算后,新关系是否保持原有性质(✓ 表示保持,× 表示不一定保持):

性质 $R_1^{-1}$ $R_1 \cap R_2$ $R_1 \cup R_2$ $R_1 - R_2$ $R_1 \circ R_2$
自反性 ×
反自反性 ×
对称性 ×
反对称性 ×
传递性 × × ×

关系的闭包

闭包定义

定义4.17 设R是非空集合A上的关系,R的自反(对称或传递)闭包是A上的关系R′,使得R′满足以下条件:

  1. R′是自反的(对称的或传递的)
  2. R ⊆ R′
  3. 对A上任何包含R的自反(对称或传递)关系R″有 R′ ⊆ R″

一般将R的自反闭包记作r(R),对称闭包记作s(R),传递闭包记作t(R)。

闭包的构造方法

集合表示

定理4.7 设R为A上的关系,则有:

  1. r(R) = R ∪ R⁰
  2. s(R) = R ∪ R⁻¹
  3. t(R) = R ∪ R² ∪ R³ ∪ ⋯

说明

  • 对于有穷集合A ( A = n) 上的关系,(3)中的并最多不超过Rⁿ
  • 若R是自反的,则r(R) = R;若R是对称的,则s(R) = R;若R是传递的,则t(R) = R

定理4.7的证明

证(1) r(R) = R ∪ R⁰ 只需证明R ∪ R⁰满足闭包定义:

  • R ∪ R⁰包含了R
  • 由I_A ⊆ R ∪ R⁰可知R ∪ R⁰在A上是自反的(因为R在A上自反当且仅当I_A ⊆ R)
  • 下面证明R ∪ R⁰是包含R的最小的自反关系:
    假设R′是包含R的自反关系,那么I_A ⊆ R′,R ⊆ R′,因此有R ∪ R⁰ = I_A ∪ R ⊆ R′

证(3) t(R) = R ∪ R² ∪ R³ ∪ ⋯
任取<x,y>和<y,z>:

  • <x,y> ∈ R ∪ R² ∪ R³ ∪ ⋯ ∧ <y,z> ∈ R ∪ R² ∪ R³ ∪ ⋯
  • ⇒ <x,z> ∈ R ∪ R² ∪ R³ ∪ ⋯

于是,由R ∪ R² ∪ R³ ∪ ⋯的传递性得t(R) ⊆ R ∪ R² ∪ R³ ∪ ⋯

对n进行归纳证明Rⁿ ⊆ t(R):

  • n = 1时显然为真
  • 假设n = k时为真,那么对于任意<x,y>:
    • <x,y> ∈ Rᵏ⁺¹ ⇒ <x,y> ∈ Rᵏ ∘ R ⇒ ∃t(<x,t> ∈ Rᵏ ∧ <t,y> ∈ R)
    • ⇒ ∃t(<x,t> ∈ t(R) ∧ <t,y> ∈ t(R)) ⇒ <x,y> ∈ t(R) (t(R)传递)

于是,R ∪ R² ∪ R³ ∪ ⋯ ⊆ t(R)

矩阵表示

设关系R, r(R), s(R), t(R)的关系矩阵分别为M, M_r, M_s和M_t,则:

  • M_r = M + E
  • M_s = M + M′
  • M_t = M + M² + M³ + ⋯

其中E是和M同阶的单位矩阵,M′是M的转置矩阵。

注意:在上述等式中矩阵的元素相加时使用逻辑加。

图表示

设关系R, r(R), s(R), t(R)的关系图分别记为G, G_r, G_s, G_t,则G_r, G_s, G_t的顶点集与G的顶点集相等。除了G的边以外,以下述方法添加新的边:

  • 自反闭包G_r:考察G的每个顶点,如果没有环就加上一个环
  • 对称闭包G_s:考察G的每一条边,如果有一条x_i到x_j的单向边,i ≠ j,则在G中加一条x_j到x_i的反方向边
  • 传递闭包G_t:考察G的每个顶点x_i,找从x_i出发的每一条路径,如果从x_i到路径中的任何结点x_j没有边,就加上这条边。当检查完所有的顶点后就得到图G_t

例1 设A = {a,b,c,d}, R = {<a,b>,<a,c>,<b,c>,<c,d>,<d,c>},R和r(R), s(R), t(R)的关系图如下图所示。

传递闭包的计算——Warshall算法

算法思路

考虑n+1个矩阵的序列M₀, M₁, …, Mₙ,将矩阵Mₖ的i行j列的元素记作Mₖ[i,j]。

对于k = 0,1,…,n, Mₖ[i,j] = 1当且仅当在R的关系图中存在一条从x_i到x_j的路径,并且这条路径除端点外中间只经过{x₁, x₂, …, xₖ}中的顶点。

不难证明M₀就是R的关系矩阵,而Mₙ就对应了R的传递闭包。

Warshall算法

从M₀开始,顺序计算M₁, M₂, …, 直到Mₙ为止。

Warshall算法的依据

从Mₖ[i,j]计算Mₖ₊₁[i,j]:i,j ∈ V

顶点集V₁ = {1,2,…,k}, V₂ = {k+2,…,n}, V = V₁ ∪ {k+1} ∪ V₂

Mₖ₊₁[i,j] = 1 ⇔ 存在从i到j中间只经过V₁ ∪ {k+1}中点的路径

这些路径分为两类:

  1. 第1类:只经过V₁中点 ⇒ Mₖ[i,j] = 1
  2. 第2类:经过k+1点 ⇒ Mₖ[i,k+1] = 1 ∧ Mₖ[k+1,j] = 1

假设Mₖ已经计算完毕,如何计算Mₖ₊₁呢?这需要对于每组i,j确定Mₖ₊₁[i,j]是否为1。Mₖ₊₁[i,j] = 1当且仅当在R的关系图中存在一条从x_i到x_j并且中间只经过{x₁, x₂, …, xₖ₊₁}的路径,可以将这种路径分成两类:第一类是只经过{x₁, x₂, …, xₖ}的路径,这时M[i,j] = 1;第二类是经过xₖ₊₁的路径。因为回路可以从路径中删除,因此只需考虑经过一次的路径,这条路径可以分成两段,从x_i到xₖ,再从xₖ₊₁到x_j,因此有Mₖ[i,k+1] = 1和Mₖ[k+1,j] = 1。对于第二类路径的判别可以利用下面的条件:

Mₖ₊₁[i,j] = 1 ⇔ Mₖ[i,k+1] = 1 ∧ Mₖ[k+1,j] = 1

算法4.1 Warshall算法

输入:M(R的关系矩阵)
输出:M_t(t(R)的关系矩阵)

  1. M_t ← M
  2. for k ← 1 to n do
  3. for i ← 1 to n do
  4. for j ← 1 to n do
  5. M_t[i,j] ← M_t[i,j] + M_t[i,k] · M_t[k,j]

时间复杂度:T(n) = O(n³)

这个算法通过三重循环来更新关系矩阵,最终得到传递闭包的矩阵表示。

等价关系与偏序关系

等价关系

等价关系的定义与实例

定义4.18 设R为非空集合A上的关系。如果R是自反的、对称的和传递的,则称R为A上的等价关系。设R是一个等价关系,若<x,y>∈R,称x等价于y,记作x~y。

等价关系应用
在生活中经常遇到需要对集合中的元素进行分类的问题。例如:开学注册时,由于人数众多,为了避免拥挤,需要将所有新生分成三个类别,然后将这三个类别的学生分成不同时间段来完成注册。

其中一种方案是,将学号分成三段,每一段分配一个时间段。这种情况下,我们可以定义一个关系R,<a,b> ∈ R当且仅当a和b的学号在同一段。此关系R具备了自反、对称和传递的性质。

例1 设A = {1, 2, …, 8},如下定义A上的关系R:

R={<x,y>∣x,y∈A∧x≡y(mod3)}R = \{<x,y> \mid x,y ∈ A ∧ x ≡ y \pmod{3}\}R={<x,y>∣x,y∈A∧x≡y(mod3)}

其中x ≡ y (mod 3)叫做x与y模3相等,即x除以3的余数与y除以3的余数相等。

不难验证R为A上的等价关系,因为:

  • ∀x ∈ A,有x ≡ x (mod 3)
  • ∀x,y ∈ A,若x ≡ y (mod 3),则有y ≡ x (mod 3)
  • ∀x,y,z ∈ A,若x ≡ y (mod 3),y ≡ z (mod 3),则有x ≡ z (mod 3)

设A = {1, 2, …, 7},R = {<x,y> \mid x,y ∈ A ∧ x ≡ y (mod 3)}

R的关系图由若干个独立子图构成,每个独立子图都是完全关系图。

等价类和商集

等价类

定义4.19 设R为非空集合A上的等价关系,∀x ∈ A,令

[x]R={y∣y∈A∧xRy}[x]_R = \{ y \mid y ∈ A ∧ xRy \}[x]R​={y∣y∈A∧xRy}

称[x]_R为x关于R的等价类,简称为x的等价类,简记为[x]。

实例 A = {1, 2, …, 8}上模3等价关系的等价类:

  • [1] = [4] = [7] = {1,4,7}
  • [2] = [5] = [8] = {2,5,8}
  • [3] = [6] = {3,6}

等价类的性质

定理4.8 设R是非空集合A上的等价关系,则:

  1. ∀x ∈ A,[x]是A的非空子集
  2. ∀x,y ∈ A,如果xRy,则[x] = [y]
  3. ∀x,y ∈ A,如果x ̸Ry,则[x]与[y]不交
  4. $\bigcup_{x ∈ A} [x] = A$,即所有等价类的并集就是A

证明
(1) 由等价类定义可知,∀x ∈ A有[x] ⊆ A。由自反性有xRx,因此x ∈ [x],即[x]非空。
(2) 任取z,则有:

z∈[x]⇒<x,z>∈R⇒<z,x>∈Rz ∈ [x] ⇒ <x,z> ∈ R ⇒ <z,x> ∈ Rz∈[x]⇒<x,z>∈R⇒<z,x>∈R<z,x>∈R∧<x,y>∈R⇒<z,y>∈R⇒<y,z>∈R<z,x> ∈ R ∧ <x,y> ∈ R ⇒ <z,y> ∈ R ⇒ <y,z> ∈ R<z,x>∈R∧<x,y>∈R⇒<z,y>∈R⇒<y,z>∈R

从而证明了z ∈ [y]。综上所述必有[x] ⊆ [y]。同理可证[y] ⊆ [x]。这就得到了[x] = [y]。

(3) 假设[x] ∩ [y] ≠ ∅,则存在z ∈ [x] ∩ [y],从而有z ∈ [x] ∧ z ∈ [y],即<x,z> ∈ R ∧ <y,z> ∈ R成立。根据R的对称性和传递性必有<x,y> ∈ R,与x ̸Ry矛盾。

(4) 先证$\bigcup_{x ∈ A} [x] ⊆ A$。任取y,

y∈⋃x∈A[x]⇒∃x(x∈A∧y∈[x])⇒y∈[x]∧[x]⊆A⇒y∈Ay ∈ \bigcup_{x ∈ A} [x] ⇒ ∃x(x ∈ A ∧ y ∈ [x]) ⇒ y ∈ [x] ∧ [x] ⊆ A ⇒ y ∈ Ay∈x∈A⋃​[x]⇒∃x(x∈A∧y∈[x])⇒y∈[x]∧[x]⊆A⇒y∈A

从而有$\bigcup_{x ∈ A} [x] ⊆ A$。

再证$A ⊆ \bigcup_{x ∈ A} [x]$。任取y,

y∈A⇒y∈[y]∧y∈A⇒y∈⋃x∈A[x]y ∈ A ⇒ y ∈ [y] ∧ y ∈ A ⇒ y ∈ \bigcup_{x ∈ A} [x]y∈A⇒y∈[y]∧y∈A⇒y∈x∈A⋃​[x]

从而有$A ⊆ \bigcup_{x ∈ A} [x]$成立。综上所述得$\bigcup_{x ∈ A} [x] = A$。

商集

定义4.20 设R为非空集合A上的等价关系,以R的所有等价类作为元素的集合称为A关于R的商集,记作A/R,

A/R={[x]R∣x∈A}A/R = \{ [x]_R \mid x ∈ A \}A/R={[x]R​∣x∈A}

例2
令A = {1, 2, …, 8},A关于模3等价关系R的商集为

A/R = { {1,4,7}, {2,5,8}, {3,6} }

A关于恒等关系和全域关系的商集为:

  • A/I_A = { {1}, {2}, …, {8} }
  • A/E_A = { {1,2,…,8} }

集合的划分

定义4.21 设A为非空集合,若A的子集族π(π ⊆ P(A))满足下面条件:

  1. ∅ ∉ π
  2. ∀x∀y(x,y ∈ π ∧ x ≠ y → x ∩ y = ∅)
  3. ∪π = A

则称π是A的一个划分,称π中的元素为A的划分块

例3 设A = {a,b,c,d},给定π₁, π₂, π₃, π₄, π₅, π₆如下:

  • π₁ = { {a,b,c},{d} }
  • π₂ = { {a,b},{c},{d} }
  • π₃ = { {a},{a,b,c,d} }
  • π₄ = { {a,b},{c} }
  • π₅ = {∅,{a,b},{c,d} }
  • π₆ = { {a,{a}},{b,c,d} }

则π₁和π₂是A的划分,其他都不是A的划分。

重要结论

  • 商集A/R就是A的一个划分
  • 不同的商集对应于不同的划分
  • 任给A的一个划分π,如下定义A上的关系R:

    R={<x,y>∣x,y∈A∧x与y在π的同一划分块中}R = \{<x,y> \mid x,y ∈ A ∧ x与y在π的同一划分块中\}R={<x,y>∣x,y∈A∧x与y在π的同一划分块中}

    则R为A上的等价关系,且该等价关系确定的商集就是π

例4 给出A = {1,2,3}上所有的等价关系
求解思路:先做出A的所有划分,然后根据划分写出对应的等价关系。 A上的等价关系与划分之间的对应:

  • π₄对应于全域关系E_A
  • π₅对应于恒等关系I_A
  • π₁, π₂和π₃分别对应于等价关系R₁, R₂和R₃,其中:
    • R₁ = {<2,3>,<3,2>} ∪ I_A
    • R₂ = {<1,3>,<3,1>} ∪ I_A
    • R₃ = {<1,2>,<2,1>} ∪ I_A

例5 设A = {1,2,3,4},在A×A上定义二元关系R:
«x,y>,<u,v>>∈R⇔x+y=u+v«x,y>,<u,v» ∈ R ⇔ x+y = u+v«x,y>,<u,v>>∈R⇔x+y=u+v

求R导出的划分。

A×A = {<1,1>,<1,2>,<1,3>,<1,4>,<2,1>,<2,2>,<2,3>,<2,4>,<3,1>,<3,2>,<3,3>,<3,4>,<4,1>,<4,2>,<4,3>,<4,4>}

根据有序对<x,y>的x+y=2,3,4,5,6,7,8将A×A划分:

(A×A)/R=​{ {<1,1>},{<1,2>,<2,1>},{<1,3>,<2,2>,<3,1>},{<1,4>,<2,3>,<3,2>,<4,1>},{<2,4>,<3,3>,<4,2>},{<3,4>,<4,3>},{<4,4>} }​

偏序关系

定义4.22 非空集合A上的自反、反对称和传递的关系,称为A上的偏序关系,记作≼。设≼为偏序关系,如果<x,y> ∈ ≼,则记作x ≼ y,读作x”小于或等于”y。
注意:这里的”小于等于”不是指数的大小,而是指在偏序关系中的顺序性。x”小于等于”y的含义是:依照这个序,x排在y的前边或者x就是y。根据不同偏序的定义,对序有着不同的解释。例如:

  • 整除关系是偏序关系≼,3 ≼ 6的含义是3整除6
  • 大于等于关系也是偏序关系,针对这个关系写5 ≼ 4是说在大于等于关系中5排在4的前边,也就是说5比4大

实例

  • 集合A上的恒等关系I_A是A上的偏序关系
  • 小于或等于关系、整除关系和包含关系也是相应集合上的偏序关系

相关概念

定义4.23 设≼为非空集合A上的偏序关系。

  1. ∀x,y ∈ A,x ≺ y ⇔ x ≼ y ∧ x ≠ y
  2. ∀x,y ∈ A,x与y可比 ⇔ x ≼ y ∨ y ≼ x

结论:∀x,y ∈ A,下述几种情况发生其一且仅发生其一:x ≺ y,y ≺ x,x = y,x与y不是可比的。

定义4.25 R为非空集合A上的偏序,∀x,y ∈ A,x与y都可比,则称R为A上的全序关系

定义4.26 x,y ∈ A,如果x ≺ y且不存在z ∈ A使得x ≺ z ≺ y,则称y覆盖x。

实例

  • 数集上的小于或等于关系是全序关系
  • 整除关系不是正整数集合上的全序关系
  • {1,2,4,6}集合上的整除关系,2覆盖1,4和6覆盖2,但4不覆盖1

偏序集与哈斯图

偏序集

定义4.27 集合A和A上的偏序关系≼一起叫做偏序集,记作<A,≼>。

实例

  • 整数集和数的小于等于关系构成偏序集<Z,≤>

  • 幂集P(A)和包含关系构成偏序集<P(A),R⊆>

哈斯图

利用偏序自反、反对称、传递性简化的关系图。

特点

  • 每个结点没有环

  • 两个连通的结点之间的序关系通过结点位置的高低表示,位置低的元素的顺序在前

  • 具有覆盖关系的两个结点之间连边

哈斯图实例

例6

  • <{1,2,3,4,5,6,7,8,9}, R整除>

  • <P({a,b,c}), R⊆>

例7 已知偏序集<A,R>的哈斯图如下图所示,试求出集合A和关系R的表达式。

A = {a,b,c,d,e,f}
R = {<b,d>,<b,e>,<b,f>,<c,d>,<c,e>,<c,f>,<d,f>,<e,f>} ∪ I_A

偏序集的特定元素

定义4.28 设<A,≼>为偏序集,B ⊆ A,y ∈ B。

  1. 若∀x(x ∈ B → y ≼ x)成立,则称y为B的最小元

  2. 若∀x(x ∈ B → x ≼ y)成立,则称y为B的最大元

  3. 若∀x(x ∈ B ∧ x ≼ y → x = y)成立,则称y为B的极小元

  4. 若∀x(x ∈ B ∧ y ≼ x → x = y)成立,则称y为B的极大元

性质

  • 对于有穷集,极小元和极大元必存在,可能存在多个

  • 最小元和最大元不一定存在,如果存在一定惟一

  • 最小元一定是极小元;最大元一定是极大元

  • 孤立结点既是极小元,也是极大元

定义4.29 设<A,≼>为偏序集,B ⊆ A,y ∈ A。

  1. 若∀x(x ∈ B → x ≼ y)成立,则称y为B的上界

  2. 若∀x(x ∈ B → y ≼ x)成立,则称y为B的下界

  3. 令C = {y y为B的上界},则称C的最小元为B的最小上界上确界
  4. 令D = {y y为B的下界},则称D的最大元为B的最大下界下确界

性质

  • 下界、上界、下确界、上确界不一定存在

  • 下界、上界存在不一定惟一

  • 下确界、上确界如果存在,则惟一

  • 集合的最小元就是它的下确界,最大元就是它的上确界;反之不对

例8 设偏序集<A,≼>如下图所示,求A的极小元、最小元、极大元、最大元。设B = {b,c,d},求B的下界、上界、下确界、上确界。

  • 极小元:a,b,c

  • 极大元:a,f

  • 没有最小元与最大元

  • B的下界和最大下界不存在

  • 上界有d和f,最小上界为d

偏序集的特殊子集

定义4.30 设<A,≼>为偏序集,B ⊆ A。

  1. 如果∀x,y ∈ B,x与y都是可比的,则称B是A中的一条,B中的元素个数称为链的长度

  2. 如果∀x,y ∈ B,x ≠ y,x与y都是不可比的,则称B是A中的一条反链,B中的元素个数称为反链的长度

实例:在偏序集<{1,2,…,9}, >中,{1,2,4,8}是长为4的链,{1,4}是长为2的链,{2,3}是长为2的反链。对于单元集{2},它的长度是1,既是链也是反链。

分解为反链

定理4.9 设<A,≼>为偏序集,如果A中最长的链长度为n,则该偏序集可以分解为n条不相交的反链。

算法4.2 偏序集反链分解算法

输入:偏序集A
输出:A中的反链B₁, B₂, …

text

1. i ← 1

  1. B_i ← A的所有极大元的集合(显然B_i是一条反链)
  2. 令A ← A - B_i
  3. if A ≠ ∅
  4. i ← i + 1
  5. 转2

举例
考虑一个工厂,有一系列的任务需要完成,而这些任务之间存在依赖关系,即某些任务必须在其他任务之后完成。这可以视为一个偏序集,其中元素是任务,偏序关系是任务之间的依赖关系。

例如,假设我们有以下五个任务:

  1. 制造零件A

  2. 制造零件B

  3. 组装零件A和B组装产品X

  4. 包装产品X

  5. 运输产品X

偏序关系如下:

  • 制造零件A和制造零件B可以同时进行,但都必须在组装产品X之前完成

  • 组装产品X必须在包装产品X之前完成

  • 包装产品X必须在运输产品X之前完成

在这种情况下,反链可以帮助我们确定哪些任务可以同时进行。例如,制造零件A和制造零件B是不可比的,因为它们没有直接的依赖关系,所以它们可以被看作是一个反链,意味着这两个任务可以同时开始。通过找到所有可能的反链,我们可以优化任务的调度,确保以最有效的方式进行任务,同时满足所有的依赖关系。

拓扑排序

把偏序集扩张成一个全序集,称为拓扑排序

算法4.3 拓扑排序

输入:偏序集A
输出:A中元素的排序

text

1. i ← 1

  1. 从A中选择一个极小元a_i作为最小元
  2. A ← A - {a_i}
  3. if A ≠ ∅
  4. i ← i + 1
  5. 转2

实例
有偏序约束的任务集A,偏序集<A,≼>的哈斯图如图:
A = {T₁, T₂, T₃, T₄, T₅, S₁, T₆, S₂, T, T₉, T₁₀}

可行的拓扑排序有多个,如:

  • T₁, T₂, T₃, T₄, S₁, T₅, T₆, S₂, T, T₉, T₁₀

  • T₁, T₂, T₃, T₄, S₁, T₆, S₂, T, T₉, T₅, T₁₀

举例
考虑一个软件开发项目,项目中有多个模块或组件,其中一些组件依赖于其他组件。为了成功地构建和运行软件,需要按照正确的顺序编译和链接这些组件。

例如,假设我们有以下软件组件及其依赖关系:

  • 组件A:基础库,没有外部依赖
  • 组件B:用户接口库,依赖于组件A
  • 组件C:数据库连接库,没有外部依赖
  • 组件D:业务逻辑处理,依赖于组件B和组件C
  • 组件E:报告生成器,依赖于组件D

这可以表示为一个有向图,其中顶点是软件组件,有向边表示依赖关系。

为了构建这个软件项目,开发者需要确定哪些组件首先被编译,哪些组件随后被编译。拓扑排序可以帮助确定这个顺序。对于上述示例,一个可能的拓扑排序是:A, C, B, D, E。这意味着首先编译组件A和C(因为它们没有依赖),然后是组件B,接着是组件D,最后是组件E。

通过拓扑排序,开发者可以确保软件组件按正确的顺序编译,从而避免编译错误。这种方法在软件包管理器中尤其有用,例如在处理系统中的软件安装和更新时,需要考虑各种软件包之间的依赖关系。

本文由作者按照 CC BY 4.0 进行授权