c++ 图的连通分量是什么_CS224W| 笔记1:一些关于图的常识

f3082fe4a80482a06c57e15233f5d90a.png

1 引言

这篇是CS224W 图机器学习笔记的第一篇,本笔记主要梳理课程的关键点,以及一些图相关的基本概念。

为什么要研究网络?

  1. 图/网络 无处不在。
  2. 跨领域。图在不同研究领域都有应用,如计算机科学、社会学、经济学等等。
  3. 数据丰富。
  4. 有前景。 社交网络分析,药物开发,AI推理等

网络分析主要研究方向(场景)?

  • 对节点的类型/属性进行预测。如:节点分类。
  • 预测两个节点是否相连。如:链路预测(link prediction)。
  • 识别紧密相连的节点群。例如:社区挖掘(Community detection),节点聚类。
  • 计算两个节点或者网络的相似性 。node embedding / graph embedding

老师在课程中ppt中给了很多现实例子。总之,学了很有用就对了!!

f9052eb7908d129bddd74acd503fa318.png

【进入正题】

为了研究这些,需要有系统(system) -> 图(Graph)的建模的过程。

先需要一些网络/图论基本知识

图的定义

  • A network is a collection of objects where some pairs of objects are connected by links
  • 网络是互连成对的节点的集合。

网络是一种描述复杂系统中实体关联的通用语言。是一种通用的数据结构。它表示了成分之间的联系.

290523b579450af7585e2dfc3d83f537.png

图的数据表示G(N,E) G是图,V是节点,E是边。 上面既有图,又有网络,那它们之间的区别是什么呢?

网络(Network)与图(Graph)之间区别:

  • Network:表示现实世界的系统。 举例:互联网(Web)、社交网络( Social network )等 对应描述: 网络(Network), 点(node), 边(link)
  • Graph:是 Network 的数学表示。 举例:、社交图( Social graph)、知识图谱( Knowledge Graph )等 对应描述: 图(Graph),点( vertex), 边(edge)

很多时候,并不太严格区分。

网络的粗分类(不严格)

网络大致可分为两类,有时它们的界线并不那么明显。

  • Networks (Natural Graphs)

第一类可以看做是自然网络,比如社会网络、社交网络、蛋白质图谱、基因图谱等。

  • Information Graphs

第二类就是各种信息汇聚成为的网络,如知识图谱,相似网络(similarity netoworks)等等。 如基于地址相似度构建的地址网路。

图论中图的分类

图的分类:

  • 1. 根据边的方向
  1. 无向图,如:同事关系,论文合作关系
  2. 有向图,如:B站用户关注与被关注关系。

e8e7126e81c18961b608a66628a2a608.png
  • 补充概念——度(degree)定义:连接节点i的边的数量,称为节点i的度(数)
    上左图的无向图中节点a的度为4.
    对于有向图,节点i的度分为
      • 入度in-degree:指向自身边的边的数量。上图c点的入度是2
      • 出度out-degree:指向其他节点边的数量.c点的出度是1

平均度 avg degree:衡量图的稠密性。等于所有节点度的平均。

从图的邻接矩阵来看

ec4cc20eaca995ba8ce4a5104cd8dd22.png
  • 2. 边是否有权重
  1. 无权图,权重为1
  2. 加权图
  • 3. 节点连接方式
  1. 二部图(Bipartite graph):图可分为两类内部不相连的节点集。 如:作者和论文构成的图,电影和演员构成的图以及用户和商品之间构成的图等等。

- 补充概念——二部图的折叠 (Projection/Folded) 也就是将异质的二部图图,变成同质图。

b6ed159766c4d8451e60306ad86cd609.png
  1. 完全图(complete graph)。任意两点都有边相连
  2. 自环图(Self-edges (self-loops))。自己与自己相连。邻居矩阵的对角线不为0.
  3. 多重图 ( Multigraph )。存在两点之间大于一条边。

735d08aab41d6f3731e32becca5b0b05.png

现实中系统繁多,数学中的图很多,因此,正确建模很关键!!

图数学的表示

这部分在代码篇再详细展示。这里只做简单介绍。 虽然课程老师推荐使用官方的SNAP包,进行实操。但是因为之前主要用的还是networkx,为了降低学习成本。动手部分就采用 networkx了,这些部分代码,可以在下面的github链接获得。

https:// github.com/kevin-meng/l earn-graph-knowledge-step-by-step
  • 邻接矩阵(Adjacency matrix) 现实中大部分的网络的邻接矩阵是非常稀疏的,通常采用稀疏矩阵or邻接列表存储。
  • 邻接列表(Adjacency list)
  • 边列表(Edge list)
    • 如 [(1,4),(2,1),(4,2),(4,3)]

图的连通性

对无向图

  • 连通图(无向图):任意两节点间存在直接或间接的链路关系。子概念:
    • Bridge edge: 去掉该边,图变成菲连通图。下图中绿色边
    • Articulation node:去掉该点,,图变成菲连通图。下图中蓝色节点

3b52660bc0f83239cdb4bcf3c06c1ae1.png

对无向图

  • 强连通有向图:图内部对于任意两个节点,存在路径,彼此之间相互触达。
  • 弱连通有向图:忽略方向时才连通的图
  • 强连通分量(Strongly connected components (SCCs))
    子图内部任意两个节点,存在路径,彼此之间相互触达

最后放一张,现实中的不同系统中网络的统计信息再次,说明网络的稀疏性!

09d99f8057b41ce094040d8a4dd2b635.png

参考文章

  • http://web.stanford.edu/class/cs224w/slides/01-intro.pdf
  • https://blog.csdn.net/Jenny_oxaza/article/details/106114249

ef9e6504597ba25c5f26bb2ea247137a.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值