【数据结构与算法分析——C语言描述】第八章:不相交ADT
标签(空格分隔):【数据结构与算法】
第八章:不相交ADT
8.1 等价关系
- 关系(relation) R:如果对于每一对元素 (a,b),a∈S,b∈S ( a , b ) , a ∈ S , b ∈ S , aRb a R b 或者为 true t r u e 或者为 false f a l s e ,则称在集合 S S 上定义 关系(relation) R.如果 (a,b) ( a , b ) 为 true t r u e ,那么我们说 a a 和 b b 有关系。
等价关系(equivalence relation)是满足以下三条性质的等价关系 R:
- 自反性:对于所有的 a∈S a ∈ S ,有 aRa a R a .
- 对称性: aRb a R b 当且仅当 bRa b R a .
传递性:若 aRb a R b 且 bRc b R c 则 aRc a R c
- 举例:
1.关系 “ ≤ ≤ ” 不是等价关系,虽然它是自反的, a≤a a ≤ a , 可传递的, a≤b,b≤c a ≤ b , b ≤ c 则 a≤c a ≤ c ,但是它不是对称的,因为依据 a≤b a ≤ b 不能得到 b≤a b ≤ a
2.电器连通性(electrical connectivity):是一个等价关系,其中所有的连接都是通过金属导线完成的。该关系显然是自反的,因为任何元件都是以自身相连的。如果 a 电气连接到 b 上,那么 b 一定也可以连接到 a 上。最后,如果 a 连接 b,b 连接 c,那么 a 连接到 c。因此,电器连接是一个等价关系。
3.如果两个城市位于一个国家之内,那么定义它们是有关系的,容易验证这是一个等价关系。
4.如果能够通过公路从城镇 a 到城镇 b,那么假设二者存在关系,假设道路可以双向行驶,那么这种关系也是一种等价关系。
- 举例:
8.2 动态等价关系
给定一个等价关系 ” ~ ” ,一个自然的问题是,给定 a 和 b 是否有 a ~ b.如果将等价关系存储为一个二维的布尔数组,那么这个工作便可以在常数时间内完成。问题在于,这种等价关系的定义通常不明显,甚至是相当隐蔽的。
举例:
假设在 5 个元素的集合 { a1,a2,a3,a4,a5} { a 1 , a 2 , a 3 , a 4 , a 5 } 定义一个等价关系,此时,便存在 25 对元素,它们每一对或者有关系,或者没有关系。然而 ,信息 a1 a 1 ~ a2