Skip to content

图数据结构概述 ​

图数据 ​

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

G=(U,V,E,I)

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

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

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

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

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

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

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

图的一些概念 ​

边的方向性

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

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

边的权重

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

边的类型

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

节点的度

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

邻居

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

路径

从节点vi到vj的一系列边组成的序列(如vi→vk→vj),路径的长度是边的数量。

连通性

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

子图

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

图的应用领域 ​

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