参考自百度飞桨课程
一. 图的基本表示方法
图 G=(V, E) 由下列要素构成:
- 一组节点(也称为 verticle)V=1,…,n
- 一组边 E⊆V×V
- 边 (i,j) ∈ E 连接了节点 i 和 j
- i 和 j 被称为相邻节点(neighbor)
- 节点的度(degree)是指相邻节点的数量
节点、边和度的示意图
- 如果一个图的所有节点都有 n-1 个相邻节点,则该图是完备的(complete)。也就是说所有节点都具备所有可能的连接方式。
- 从 i 到 j 的路径(path)是指从 i 到达 j 的边的序列。该路径的长度(length)等于所经过的边的数量。
- 图的直径(diameter)是指连接任意两个节点的所有最短路径中最长路径的长度。
举个例子,在这个案例中,我们可以计算出一些连接任意两个节点的最短路径。该图的直径为 3,因为没有任意两个节点之间的最短路径的长度超过 3。
测地路径(geodesic path)是指两个节点之间的最短路径。
如果所有节点都可通过某个路径连接到彼此,则它们构成一个连通分支(connected component)。如果一个图仅有一个连通分支,则该图是连通的(connected)
如果一个图的边是有顺序的配对,则该图是有向的(directed)。i 的入度(in-degree)是指向 i 的边的数量,**出度(out-degree)**是远离 i 的边的数量
如果可以回到一个给定节点,则该图是有环的(cyclic)。相对地,如果至少有一个节点无法回到,则该图就是无环的(acyclic)。
图可以被加权(weighted),即在节点或关系上施加权重。
如果一个图的边数量相比于节点数量较小,则该图是稀疏的(sparse)。相对地,如果节点之间的边非常多,则该图是密集的(dense)。
二. 如何存储图
存储图的方式有三种,取决于你想用它做什么:
存储为边列表:
1 2
1 3
1 4
2 3
3 4
…
我们存储有边连接的每一对节点的 ID,例如:
使用邻接矩阵,这通常是在内存中加载的方式:
对于图中的每一个可能的配对,如果两个节点有边相连,则设为 1。如果该图是无向图,则 A 是对称的。
三. 图的类型和性质
图可以根据不同标准进行分类,我们在这里主要讲一种分类方法,同构图与异构图。
同构图与异构图
两个图G和H是同构图(isomorphic graphs),能够通过重新标记图G的顶点而产生图H。
如果G和H同构,那么它们的阶是相同的,它们大小是相同的,它们个顶点的度数也对应相同。
异构图是一个与同构图相对应的新概念。
传统同构图(Homogeneous Graph)数据中只存在一种节点和边,因此在构建图神经网络时所有节点共享同样的模型参数并且拥有同样维度的特征空间。
而异构图(Heterog