等价关系和划分

 

R 是集合 A 上的一个二元关系,若R满足:

ü 自反性: a ∈A, => (a, a)  R

ü 对称性:(a, b) ∈R∧ a ≠ b => (b, a)∈R

ü 传递性:(a, b)∈R,(b, c)∈R =>(a, c)∈R

则称 R 是定义在 A 上的一个等价关系。设 R 是一个等价关系,若(a, b) ∈ R,则称 a 等价于 b,记作 a ~ b

R为非空集合上的等价关系,"xA,令[x]R={y|yÎAxRy},称[x]x关于R的等价类,简称为x的等价类,简记为[x]

A为非空集合,若A的子集族π,是A的子集构成的集合)满足以下的条件:

ü π集合不为空

ü π中任意两个集合不相交

ü π中所有集合的并集等于A

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

所以根据不同的关系划分,在以函数和变量为置换点的区域内,可以通过不同的等价关系划分出不同的类,所以这些类结构体在此几何平面上的描述可以使用域的方式来进行划分,其最佳的划分形式就是等价的,在图形中就是不同的域之间不相互重合,如图2-6所示:

 连载20:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)_第1张图片

 

2-6

 

所以,我们在现实中如何划分类呢?其实这里可以采用的方法就是是否为等价关系,如果一个类中的所以置换点都是在这样的关系中进行划分,那么这样的置换点集合就可以划分成一个类。等价类划分的子集无重合,这样的划分才是等价的划分,只有这样的划分才是重复度最小,代价最小的划分。当然,这样的划分可能不是唯一的,有可能在不同的立场上对这样的划分有区别。

由于不同层面的置换点,所以我们不能仅仅限制我们所理解的面向对象中的类的等价划分,对于其他层面的置换其实也是具有这样的特性,例如在泛型化编程中,其不同的容器的等价划分也可以通过在某个划分标准中划分出其等价的特征,以此进行分类。这种分类其以为能够使用通用的方式来进行集成和综合。由此可以进一步推进对泛型编程的进一步发展。

分类是一种广泛的处理过程,但是其分类的过程中,由于采用的等价的划分形式,所以将不同的可置换点划分到一个不同的区域之中,这些可置换点不可能即属于一个分类同时又属于另一个分类,“非此即彼”的处理可能在很多时候,在现实处理过程中显得非常困难,因为我们很难找准这样的等价条件,所以,可以采用一些聚类的手段来解决这样的问题。但也可以通过一些手段或者判断方法忽略这样的可置换点,这样有助于进行有效的分类划分。

聚类:

将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。