9.3 关系的表示
Posted spicyarticle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.3 关系的表示相关的知识,希望对你有一定的参考价值。
9.3 关系的表示
关系的一般表示方法:
- 将所有关系列出;
- 用一个到{T, F}的映射
关系的特殊表示方法
- 用0-1矩阵(zero-one matrix)来表示;
- 用有向图(directed graph)来表示
用邻接矩阵表示关系
称0-1矩阵MR为R的邻接矩阵, 定义如下:
- 通过以下观察0-1矩阵,很容易发现以下性质:
- 拥有自反性(reflexive)的0-1矩阵主对角线全为“1”
- 拥有非自反性(irreflexive)的0-1矩阵主对角线全为“0”
- 拥有对称性(symmetric)的0-1矩阵主对角线任意,关于主对角线对称的元素相等
- 拥有反对称性(antisymmetric)的0-1矩阵主对角线任意,关于主对角线对称的元素不能同时为“1”
- 定义两个邻接矩阵的join为这两个矩阵的布尔或运算(boolean ‘or‘)
- 定义两个邻接矩阵的meet为这两个矩阵的布尔与运算(boolean ‘and‘)
用0-1矩阵表示关系的复合:
令MS?R = [tij], MR = [rij], MS = [sij]
则MS?R = MR⊙MS
其中,⊙表示两个矩阵进行布尔乘运算(boolean product)
例:
[ M_R =
left[egin{matrix}
1 & 0 & 1 1 & 1 & 0 0 & 0 & 0
end{matrix}
ight]
]
[ and quad M_S =
left[egin{matrix}
0 & 1 & 0 0 & 0 & 1 1 & 0 & 1
end{matrix}
ight]
]
则MS?R的每个tij由MR的第i行与MS的第j列进行布尔乘运算,得到S?R的邻接矩阵为:
[ M_{S?R} =
left[egin{matrix}
1 & 1 & 1 0 & 1 & 1 0 & 0 & 0
end{matrix}
ight]
]
用图表示关系
理解:
- 顶点(vertex)
- 边(arc or edge)
- 有向图(directed graph or digraph)
例:用有向图来表示一个关系:
- 入度与出度
- 顶点a的入度:以顶点a为起点的箭头的个数
- 顶点a的出度:以顶点a为终点的箭头的个数
限制
如果R是定义在A上的关系,并且B是A的子集,则R对B的限制(the restriction of R to B)为:R ∩ (B × B)
- 有特殊性质的图
- 具有自反性的图:每个节点都有自环
- 具有反自反性的图:无自环节点
- 具有对称性的图:所有箭头都是双向的
具有反对称性的图:无双向箭头
- 特别注意:①.没有既不对称又不反对称的图;②.没有既不自反也不反自反的图。
- 一些等价关系:
有一个关系R以及它的邻接矩阵MR,设△是一个等价关系,即M△是单位矩阵
①. R自反 <= => △ ? R <= => all 1‘s on its main diagonal
②. R反自反 <= => △ ∩ R = ? <= => all 0‘s on its main diagonal
③. R对称反对称非对称显然不赘述
④. R传递 <= => MR=[mij]具有这个性质:如果mij = 1,并且mjk = 1,那么mik = 1.
④. R传递 ==> R2 ? R, because if a and c are connected by a path of length 2 in R, then they must be connected by a path of length 1.
- 误区:
The answer is NO!
以上是关于9.3 关系的表示的主要内容,如果未能解决你的问题,请参考以下文章
RestKit 0.9.3 连接关系:withObjectForPrimaryKeyAttribute: