• 写在前面:因为能力和记忆有限,为方便以后查阅,特写看上去 “不太正经” 的随笔。随笔有 “三” 随:随便写写;随时看看;随意理解。

 

        1.先从矩阵(Matrix)谈起:

     什么是矩阵?这里直接上一张二维矩阵的图。

 

                    

关系矩阵图python 关系矩阵图格式_关系矩阵图python

 

    所谓矩阵,无非就是像矩形那样方阵排列。

    横向走的我们定义为列(column),图示有两列,分别以2、3开头。

    纵向走的我们定义为行(raw),图示有两行,分别以2、4开头。

二维数组这种数据结构无异,因此可以对应表示,记 A 为这个矩阵,Aij表示第 i 行,第 j 列(图示A12表示第1行第2列的元素,即为3)。

i = j 时的矩阵被称为方阵,这是今天我们所谈的关系矩阵及关系性质应满足的第一个条件。

 

方阵二维数组表示的C++通用定义:          

int **a;//a即为矩阵名
int n;
cin>>n;//n表示矩阵的维度,供我们输入赋值

a = new int*[n+1];//先给a开辟行方向上的空间,从a[0]至a[n],实则从a[1]开始使用
for (int i =1; i<=n; i++) a[i]=new int[n+1];//每行开辟列空间

//以下嵌套for循环给矩阵赋予初始值0
for (int i = 1; i <= n; i++)
   for (int j = 1; j <= n; j++)
      a[i][j] = 0;

            

布尔矩阵,这是今天讨论的关系矩阵及关系性质应满足的第二个条件。

注: 换句话说,以下的讨论均基于布尔方阵这个前提,并不是所有关系矩阵都需要满足该前提,这点很重要。

 

2.关于关系矩阵(为方便理解,会引入部分关于图论的知识,但都基于表层)

几个关系矩阵的实例:

关系矩阵图python 关系矩阵图格式_关系矩阵图python_02

关系矩阵中的0代表不存在关系,1表示存在关系。关系矩阵是一个关系的一种表现形式。

矩阵的维度n表示可以存在关系的元素个数,例如图中a,b皆为 4✖4 的矩阵,维度为4,故可以存在4种元素(就是下面关系图中的圆圈,我们称之为结点),使得每2个元素间的关系可以用矩阵表示出来。元素编号记为1~n,图示即为1,2,3,4,相同行相同列代表相同元素编号。

上面没看懂也不要紧,为了更直观地观察我们采用关系图进行讲解:

关系矩阵图python 关系矩阵图格式_结点_03

对于矩阵A,若Aij=1,即表示存在 i 到 j 的关系,关系图中可以理解为存在 i 到 j 的道路,在图上以有向边的形式呈现。

例如关系矩阵a中,a11,a23值为1,在关系图a中存在带箭头的边,从编号为1的结点出发指向1;从编号为2的结点出发指向3,以此下去,2到2,3到2,3到3,4到4。

再看关系图b我们进行反推,1到2,2到3,3到4,4到1;说明b12= b23= b34= b41=1,对照关系矩阵b,符合。

 

3.关系的性质(依然可结合上面的关系矩阵和关系图进行理解)

   1)自反性(reflexive)

所有元素值都为1,可见关系矩阵a;

每个结点存在自环,即每个结点都存在从自身出发指向自身的有向边,可见关系图a。

        因此,关系a具有自反性。

   2)非自反性(irreflexive)

所有元素值为0,可见关系矩阵b;

每个结点都没有自环,可见关系图b。

        因此,关系b具有非自反性。

  3)对称性(symmetric)

没有要求,可见关系矩阵a;

自环以及双向箭头(即若存在2到3的关系,必然存在3到2的关系)两种,可见关系图a。

       因此,关系a具有对称性。

  4)非对称性(asymmetric)

任意两个元素,要么全0,要么一个0一个1,不存在全1的情况,对角线上元素必须全为0,可见关系矩阵b;

每个元素都无自环,可见关系图b。

       因此,关系b具有非对称性。

  5)反对称性(antisymmetric)

任意两个元素,要么全0,要么一个0一个1,不存在全1的情况,对角线上元素没有规定,可见关系矩阵b;

不强求必须存在,可见关系图b。

       因此,关系b具有反对称性。

  6)传递性(transitive)

       关系矩阵上,若Aij=1,则矩阵A第 i 行与第 j 列元素两两对应之积的总和大于等于1,即两两对应的元素中存在1✖1这种情况。以关系矩阵a为例,a23=1,取该矩阵第2行(0110)与第3列(0110)元素对         应相乘求和,0✖0+1✖1+1✖1+0✖0=2 ≥ 1,验证a上每一个值为1的元素,所有均满足则具有传递性。

所有边满足这个性质的才具有传递性。

        照上述思路可以验证关系a具有传递性。

 

 

 

  • 小插曲:

               线性代数中的矩阵只有对称与反对称两种,分别对应aij= aji,aij= - aji两种条件(这里 i,j 任取,可相等,故反对称矩阵主对角线全为0),这里注意不要混淆。