社交网络学习笔记1——图的基本概念

part 1 图的分类

一、简单图

1.1 无向图 VS 有向图

  • 无向图:节点之间的边不存在方向,常见的例子有facebook上好友关系、合作发表论文等;在计算机存储中,无法直接表示“无向”这个概念,因此一般通过双向同权图来表示
  • 有向图:节点之间的边存在方向,常见例子有打电话(被动呼叫和主动呼叫)、微博上粉丝和博主之间的关系等;在计算机存储中,有向图以双向不同权图来表示,与有向图的区别在于边的权重不一定相同

无向图(左) 有向图(右)

1.2 无权图 VS 有权图

  • 无权图:节点之间的边没有权重

无权图

  • 有权图:节点之间的边存在权重,对于简单图来说,所有边的权重的概念是一致的,如都表示距离或通讯次数等等

有权图

1.3 联通图 VS 非联通图

  • 联通图:任意两个节点都是联通的(可通过其他节点达到),最少有n-1条边

联通图

  • 非联通图:存在“孤岛”情况,即至少有2个节点没有边连接,最多(n-1)*(n-2)/2 条边

非联通图

这里引出联通分量、强联通分量和弱联通分量的概念。联通分量即其内部所有节点都存在路径联通,不存在“孤岛”情况,对联通图而言,联通分量只有一个,就是其本身,一个联通分量是一个天然的社群。

强联通分量指在有向图中,联通分量中的节点之间都存在双向边,一旦存在一对节点之间不是双向关系,那就是弱联通分量,对于无向图而言,由于其边天然是双向的,因此一旦存在联通分量则必然是强联通分量。

关系总结:

二、复杂图

复杂图是对简单图的扩展,如引入不同边的类型、边的符号、节点类型等

2.1 同构图(Homogeneous Graph) VS 异构图(Heterogeneous Graph)

与异构图相对的概念是同构图,对同构图而言,点类型+边类型=2,也即边和节点类型都只有一种,而节点或边的类型不止一种的图为异构图,点类型+边类型>2

异构图

2.2 多边图(multigragh)

节点之间可能存在不止一条边,如用户和商品之间的关系可以是购买、收藏、加入购物车等

多边图

2.3 有环图(with self-loops)

某些节点上有环

有环图

2.4 符号图

如社交网络中,关注可以表示为一种正向的边权重,而拉踩、屏蔽表示为一种负向的边权重

符号图

2.5 静态图 VS 动态图

节点和边以及其属性常常会随时间发生变化,动态图在静态图的基础上添加了时间维度的概念,可以通过在图数据中添加时间戳来间接表达动态图,或通过存储不同时间下的静态图来表示动态图

part 2 度(degree)的定义

  1. 无向图

无向图

2. 有向图


 

part 3 图的表示方法

图的表示

(1)邻接矩阵表示法

在邻接矩阵中,使用行和列来表示顶点,每个单元格中表示的是两个顶点之间的权重。例如顶点A到顶点B有一条权重为5.6的边,在矩阵中A行B列位置的元素值就应该是5.6

优点:

便于判断两个顶点是否有边,只需看元素是否有值即可
适用于密集图,空间复杂度为:O(顶点个数+边的个数)
缺点:

不便于插入和删除节点,在图中插入顶点后矩阵需要重新按照新的行/列创建,然后将老的矩阵已有数据复制到新的矩阵中
不便于统计与某个顶点相连的边的数目,每次都需要遍历整个表
不适用于稀疏图,效率不如邻接表

(2)邻接表表示法

在邻接表实现中,每一个顶点会存储一个从它这里出发的列表。
比如顶点A出发可以到B、C、D,那么A的列表中会有3条边。

优点:

便于插入和删除节点,只需要修改一下单链表即可
便于统计与这个顶点相连的边的数目,只需要看单链表的大小即可
空间效率高,空间复杂度为O(顶点个数+边的个数),更适用于表示稀疏图

缺点:

不利于判断两个顶点之间是否有边,需要花费O(顶点个数)的时间复杂度扫描邻接表
不利于统计有向图顶点的入度,对于无向图来说,顶点对应的链表长度就是该顶点的度,但是在有向图中,链表的大小只能表示出度,而求入度较困难。
 

(3)边集数组

边集数组是由两个一维数组构成。

一个数组存储顶点的信息
一个数组存储边的信息,每个元素由一条边的起点下标(begin)、终点下标(end)和权(weight)组成。
优点:

更适合对边依次进行处理的操作场景,而不适合对顶点相关的操作

缺点:

在边集数组中要查找一个顶点的度需要扫描整个边数组,效率不高
插入删除节点需要遍历整个边数组进行删除,效率不高
 

几种表示方法比较

(V代表顶点,E代表边):

part 4 边的属性

  • 权重:如通话频率、聊天次数
  • 排序:如最喜欢的动漫、第二喜欢的动漫
  • 类别:如朋友关系、亲属关系、合作关系
  • 符号:朋友 vs 敌人、点赞 vs 踩

part 5 网络中心度量

中心性(centrality)体现了节点在网络中的重要程度,衡量指标主要包括度中心性(Degree centrality)、紧密中心性(Closeness centrality)、中介中心性(Betweenness centrality)、特征向量中心性(eigenvectorcentrality)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值