图数据挖掘:网络的基本概念和表示方法
最近《复杂网络建模》这门课要考试了,正好也在跟Stanford的《CS224W:Machine Learning With Graphs》这门课,这里就一边整理笔记一边复习了。
1. 网络的定义
网络(network)是一些通过链接(links)连接起来的对象集合,它包含以下成分:
- 对象:节点(nodes)/顶点(vertices), 用表示;
- 交互:链接(links)/边(edges),用表示;
对象和交互组成的系统我们就称为网络(或图,graph),用表示。
一般而言,我们用术语网络来称呼一个真实的系统,如Web、社交网络、代谢网络等,此时伴随着术语节点和链接进行使用;而相对应地,我们用术语图来称呼一个网络的数学表示,如web图、社交图等,此时伴随着术语顶点和边来使用。当然,大多数情况下我们会互换使用这两个术语。
2. 常见网络类型及表示
2.1 有向图和无向图
无向图
无向图的链接是无方向(undirected)的,也对称(symmetrical)、互反的(reciprocal), 常见的例子包括合作网络、Facebook上的朋友关系等。
有向图
有向图的链接是有方向(directed)的,此时的有向边也称为弧(arcs),常见的例子包括打电话网络、Twitter上的关注网络等。
2.2 节点的度
对于无向图而言,节点的度(degree)是指和节点相邻的边数。如下图所示。

无向图的平均度定义为:
(这里用到握手定理:无向图中节点的度之和等于边数的两倍)
而对于有向图而言,我们定义节点的出度为“离开”该节点的边数,入度为“进入”该顶点的边数。有向图中节点的度定义为其初度和入度的和。如对下面这个图我们有:,有向图的平均度定义为:

在有向图中,我们有总入度等于总出度之和,即。此外,我们将入度的节点称为源节点(source),将出度的节点称为汇点(slink)。
2.2 完全图
一个有个节点的无向图所拥有的最大边数为:
边数的无向图称为完全图(complete graph),其平均度为。下图展示了一个完全图:
2.3 二分图
二分图的节点可以被分为两个不相交的子集和,使得每条边都连接着中的一个顶点和中的一个顶点。也就是说,和是独立集(independent sets)。
常见的二分图包括:作者和其撰写的论文构成的网络、演员和其出演的电影构成的网络、用户和其打分的电影构成的网络。

对于上面这个二分图,我们还可以画出其对应的“折叠”(folded)网络如下:

“折叠”网络可以用来表示作者之间的合作关系和电影合作网络。
2.4 图的表示
邻接矩阵(adjacency matrix)
我们可以用邻接矩阵来表示图,其中当节点和之间存在链接时,否则。注意有向图的邻接矩阵不是对称的。如对于下列的两个图

其邻接矩阵分别为
边表(edge list)
我们也可以用边组成的集合来表示图,如图

就可以表示为
邻接表(adjacency list)
邻接表一般用于网络大而稀疏的情况,它可以让我们快速地检索到给定节点的邻居。上面这张图的邻接表表示为:
现实世界中的网络常常是稀疏的,即(或),比如下面就列出了几种现实世界网络的属性:
网络名称 | 节点数 | 平均度 |
---|---|---|
WWW(Stanford-Berkeley) | 319,717 | 9.65 |
Social networks(LinkedIn): | 6,946,668 | 8.87 |
Communication(MSN IM): | 242,720,596 | 11.1 |
Coauthorships (DBLP): | 317,080 | 6.62 |
Internet (AS-Skitter): | 1,719,037 | 14.91 |
Roads (California): | 1,957,027 | 2.82 |
Proteins(S. Cerevisiae): | 1,870 | 2.39 |
这样用邻接矩阵进行存储的话就会有大量的0导致存储空间浪费(邻居矩阵密度():, )。此时邻接表就有了用武之地。
关于边属性(edge attributes)
图的边可能还自带有属性,包括:
- 权重: 如通信频率
- 排名: 如最好的朋友、第二好的朋友
- 类型: 如朋友、亲属、同事
- 符号: 如朋友vs陌生人、信任vs不信任
- 一些依赖于图其余部分结构的属性:如共同朋友的数量
2.5 更多图的类型
无权图(unweighted graph)

上面这个无权图的邻接矩阵为:
这里,。
其边数,平均度。
常见的无权图例子包括朋友网络,超链接网络。
带权图(weighted graph)
带权图就是指图中的每一条边都有对应的一个数值权重。

上面这个带权图的邻接矩阵为:
这里,。
其边数,平均度。
常见的带权图例子包括合作网络、英特网、公路网络。
带自环(self-loops/self-edges)的图
对中的边,若,则被称为一个自环。

上面这个带自环图的邻接矩阵为:
这里,。
其边数。
常见的带自环的图包括蛋白质网络,超链接网络等。
多重图(multigraph)
多重图是一个允许有重边(也称多重边,平行边)的图,重边即两个顶点之间可能存在多条边。在无向图中,关联一对顶点的无向边如果多于1条,则称这些边为重边;在有向图中,关联一对顶点的有向边如果多于1条,并且这些边的始点与终点相同(也就是他们的方向相同),称这些边为重边。这也就是说在无向图中和算一组重边,而在有向图中,和不为重边。

上面这个多重图的邻接矩阵为:
这里,。
其边数,平均度。
常见的多重图例子包括通信网络,合作网络等。
3. 图的连通性
无向图的连通性
对于无向图,若任意两个顶点都能够通过一条路径连接,则我们称其为连通的。

一个不连通的图由两个或多个连通的分量(connected components)组成(也称为连通块)。其中巨大的连通分量我们将其称为gaint component,如下图所示就有3个连通分量:
图中的节点的度,我们将其称为孤立点(isolated node)。
我们有以下定义
- 桥边(bridge edge)/割边(cut edge):如果将该边去除,则图变得不连通。可以发现,一条边是桥边当且仅当的连通分量个数大于的连通分量个数。
- 关节点(Articulation node)/割点(cut vertex):如果将该点去除,则图变得不连通。一个点是割点当且仅当的连通分量个数大于的连通分量个数。
有向图的连通性
对于有向图,若图中每个节点都有一条到其它节点的路径(反之亦然),如A-B路径和B-A路径,我们就称它是强连通的;如果只有在我们忽视了边的方向的条件下才是连通的,则称它为弱连通的。

上面这个有向图是连通的,但不是强连通的(比如不存在按照边的方向从到的路径)。
4. 现实世界中的常见网络类型
- Email网络: 有自环的有向多重图
- Facebook朋友关系网络:无向、无权图
- 引用网络:有向、无权、无环(acyclic)的图(无环是因为较早发表的文章不能引用较晚发表的文章)
- 合作网络:无向(带权?)多重图
- 打电话网络:有向(带权?)多重图
- 蛋白质相互作用网络:无向、无权、有自环的图(蛋白质可以自我相互作用)
参考
[1] http://web.stanford.edu/class/cs224w/
[2] Easley D, Kleinberg J. Networks, crowds, and markets: Reasoning about a highly connected world[M]. Cambridge university press, 2010.
[3] Barabási A L. Network science[J]. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 2013, 371(1987): 20120375.
[4] 《图论概念梳理》
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~