图是解决问题时的一种通用语言,但为问题选择一种表示方法是一个困难的问题
如何构建图去解决问题是我们的重点
Degree:节点连接的边的数量,中文称之为度
Avg.Degree:所有节点的度的平均 (2E的原因是每条边都被计算了两次)
In Degree:出度
Out Degree:入度
(图上有详细的计算过程)
二部图:两个不同类型的节点的交互关系图(例如:学者和他发表的论文)
二部图或多部图可以对其不同类型的节点进行投影,例如:U是学者,V是论文,投影到U上便可以知道哪些学者合作过,投影到V上可以发现论文之间产生的一些关联;
1.邻接矩阵Adjacency Matrix
采用 邻接矩阵来表示图,1表示连接,0表示不连接;那么,无向图就应该是对称的(A12=1,那么A21=1),有向图不是对称的;
我们可以发现,这种矩阵是极其稀疏的
网络的邻接矩阵往往是稀疏矩阵,有很多0,即其 E < < E m a x o r k < < N − 1 E<
2.边列表Edge list
方式常用于深度学习框架中,因为可以将图直接表示成一个二维矩阵。这种表示方法的问题在于很难进行图的操作和分析,就算只是计算图中点的度数都会很难
3.邻接列表Adjacency list
对图的分析和操作更简单
图可以有附加的属性:
1.Weight (e.g., frequency of communication) 边的权重可以表示关系强弱
2.Ranking (best friend, second best friend…) 排序也可以表示关系程度大小
3.Type (friend, relative, co-worker)
4.Sign: Friend vs. Foe, Trust vs. Distrust 节点和边可以赋予不同的属性且图也具有属性
5.Properties depending on the structure of the rest of the graph: Number of common friends
如何附加?
1.不同权重的边,对应不同的数值;
2.自我循环和多边图
多边图与权重图类似,可以将多条边看作权重(在邻接矩阵上可看出效果是一样的)。但有时也可能就是想要分别处理每一条边,这些边上可能有不同的属性,需要分别处理。
1.无向图Connectivity
连通图:两两节点都可通过路径到达
非连通图:有2个或以上的连通分量
2.有向图Connectivity
强连接:考虑方向,可以构成连通图;
弱连接:不考虑方向,可以构成连通图;
强连通图(ssc)可以是个子图,进入ssc可以达到ssc的任意节点,出ssc有可能是ssc的任意节点发出。