Skip to content

图数据结构概述

图数据

一个广义上的图数据G可以用下式描述:

G=U,V,E,I

节点属性:V=(v1,v2,,vn)vn是每个节点的特征向量,n为节点数;

连接关系:I{(x,y)(x,y)V2xy},使用邻接列表的方式描述连接关系,xy是边两端的节点,且xy不相等(不能与自身相连);

E代表边属性,描述连接边的特征;U代表全局属性,描述整个图的特征。在某些情况下EU可以不设置,此时的图数据简化为G=(V,I),也就是只包含节点信息和连接关系,具体的选择和训练学习任务有关。

以乙酸分子为例说明二维分子结构的图表示方法:

为了描述节点的连接关系,有邻接矩阵和邻接列表两种方式:

1)邻接矩阵,如果用一个矩阵来表示图节点的连接关系,矩阵的行和列分别是节点索引。如果图包含N个节点,那么邻接矩阵大小就是N×N,矩阵(i,j)个元素为1就表示节点i和节点j有连接。这种表示方法简单且直观,但是当图的节点数增加时,矩阵会变得非常稀疏,存在大量空间资源浪费,面对特别大量的节点时,图的邻接矩阵将难以计算。

2)邻接列表,如上文提到的连接集I{(x,y)(x,y)V2xy}就是邻接列表的表述形式,他只存储有连接关系的节点索引,连接(i,j)表述节点i和节点j相连。对于连接的方向,在有向图和无向图中有不同表述方法,在PyGDGL库中都使用邻接列表来存储节点连接关系。

图的一些概念

边的方向性

无向边:边(vi,vj)(vj,vi)等价,关系是双向的(如 “朋友关系”),对应的图称为无向图。

有向边:边(vi,vj)表示从vivj的单向关系(如 “关注”“引用”),对应的图称为有向图。

边的权重

边可以带有数值属性(如社交网络中 “互动频率”、交通网络中 “距离”),称为加权图;无权重的图称为无权图。

边的类型

边可以有语义类型(如知识图谱中 “父子”“属于” 等关系),对应的图称为异质图(节点也可能有不同类型);边类型单一的图称为同质图。

节点的度

无向图中,节点vi的度d(vi)是与它相连的边的数量(如朋友数量)。有向图中,分为入度(指向该节点的边数)和出度(从该节点出发的边数)。

邻居

与节点vi直接相连的节点称为其一阶邻居N(vi);邻居的邻居称为二阶邻居,以此类推。

路径

从节点vivj的一系列边组成的序列(如vivkvj),路径的长度是边的数量。

连通性

若图中任意两个节点之间都存在路径,则称为连通图;否则为非连通图,其中的最大连通子图称为连通分量。

子图

由原图的部分节点和边组成的图(需满足边的两个端点都在子图节点中),记为G=(V,E),其中VVEE

图的应用领域

下面举一些图数据在不同领域的应用: