最近的图卷积网络(GCN)开始受到越来越多的关注,而图卷积网络是由图神经网络(GNN)发展而来,而 GNN 又是由建立在图论的基础之上。
图是一种非常神奇的数据结构,非常直观的表示了结构化数据之间的关系,从社交关系,通行网络,道路交通,城市布局几乎都可以用图这种数据结构来表示。
图是由顶点 (vertex) 和 边 (edge)构成的一种数据结构,顶点和顶点之间就是靠边连接起来的,顶点和边一起构成了一张图,如下图所示:
上面的图中,圆圈表示顶点,上面一共有 7 个顶点,分别标号为 1,2,3,4,5,6,7,而连接两个顶点的线条就是图的边,比如 (1,2), (2,3), (2, 4) 等等。
如果这些连接顶点的边没有方向,这种图称为无向图,如果有方向,则称为有向图。上面的图称为无向图,下面这个图就称为有向图:
虽然图的描述非常直观,但是最后还是要用数学语言来进行建模,而对图来说,最方便的数学描述就是矩阵。描述图有两种常用的矩阵,一个是 adjacency 矩阵,一个是 incidence 矩阵。
adjacency 矩阵探讨的是顶点和顶点之间的连接关系,如果两个顶点通过一条边连接在一起,那么可以说这两个顶点就是 adjacent
incidence 矩阵探讨的是边与边之间的连接关系,如果两条边共享一个顶点,那么可以说这两条边是 incident
我们先来看看 adjacency 矩阵,如下所示:
上面的图有 5 个顶点,构成了如下的几种连接关系:(1, 2),(2, 3), (2, 4), (3, 5), (4, 5)
如果我们把矩阵的每一行看做一个顶点,矩阵的每一列也看成一个顶点,那么连接关系就对应着矩阵的行,列下标,比如 (1, 2) 相连,所以矩阵的第一行第二列为 1,所以 A ( 1 , 2 ) = 1 A(1, 2) = 1 A(1,2)=1, 同理 A ( 2 , 3 ) = 1 , A ( 2 , 4 ) = 1 , A ( 3 , 5 ) = 1 A(2, 3) =1 , A(2, 4) = 1, A(3, 5) = 1 A(2,3)=1,A(2,4)=1,A(3,5)=1,又因为这些连接是无向的,所以 A ( 2 , 1 ) = 1 A(2, 1) = 1 A(2,1)=1, A ( 3 , 2 ) = 1 A(3, 2) = 1 A(3,2)=1,以此类推,所以我们知道,adjacency 矩阵,其实是一个对称矩阵,而且矩阵 A A A 是存在正交特征向量的,这些特征值,也被称为图的 “谱”,因此图论也常常叫做图谱理论。
下面来看看,incidence 矩阵,如下所示:
上面的图,有 4 个顶点,4 条边,如果我们把矩阵的行看做图的顶点,而矩阵的列表示图的边,那么每一列,其实表示了这条边上连接的顶点,而每一行,表示连接了这个顶点的边。我们看第一行,顶点 1 有三条边连接,即 e 1 , e 2 , e 3 e_1, e_2, e_3 e1,e2,e3,所以矩阵 B B B 的 第一行有三个 1,即 B ( 1 , 1 ) , B ( 1 , 2 ) , B ( 1 , 3 ) B(1, 1), B(1,2), B(1, 3) B(1,1),B(1,2),B(1,3) 都为 1,我们再来看第一列,表示的 e 1 e_1 e1 这条边, e 1 e_1 e1 连接了 1 和 4 两个顶点,所以 B ( 1 , 1 ) B(1, 1) B(1,1) 和 B ( 4 , 1 ) B(4 ,1 ) B(4,1) 都为 1,incidence 矩阵是一个 n × m n \times m n×m 的矩阵,其中行数表示顶点数 n n n,列数表示边的数量 m m m
讨论完 adjacency 矩阵和 incidence 矩阵,接下来我们讨论图的 degree,简单来说,图的 degree 表示图上每个顶点的邻接顶点个数,
如上图所示,一共有 5 个顶点,顶点 1 有 3 个邻接顶点,所以 顶点 1 的degree 为 3;以此类推,顶点 2,3 的 degree 都是 2; 4 的degree 为 1; 5 是孤立点,没有邻接点,所以 5 的 degree 是 0
如果我们看上图的 adjacency 矩阵或者 incidence 矩阵,就会发现,这两个矩阵的行和,刚好表示图的 degree,所以一般来说,图的 degree 可以表示成一个对角矩阵,对角线上的值,等于 adjacency 矩阵或者 incidence 矩阵的行和。