← 返回目录

Chapter 10: 图论入门

Fundamentals of Graph Theory

"世间万物关系都是网状"

七桥问题邻接矩阵社交网络NetworkX
🌐

图论:抽象化的力量

人们思考皆,浮皮潦草,泛泛而谈;现实世界却,盘根错节,千头万绪。

"We think in generalities, but we live in details."
—— 阿尔弗雷德·怀特海(Alfred Whitehead),英国数学家、哲学家(1861-1947)

图论(Graph Theory)是数学的一个分支,研究的是图的性质和图之间的关系。图由节点(nodes/vertices)和边(edges)组成,节点表示对象,边表示对象之间的关系。1736年,数学家欧拉(Leonhard Euler)通过解决七桥问题,开创了图论的先河。

10.1

什么是图?

七桥问题、无向图、有向图

柯尼斯堡七桥问题(Seven Bridges of Königsberg)的背景是:基尔岛(Königsberg)的普雷格尔河(Pregel River)上有两座岛(a、d),有7座桥将两座岛和两岸(b、c)相连。问题是能否走遍这七座桥,每座桥只经过一次,并最终回到起点?

🎯 欧拉的突破性贡献

欧拉解决这个问题的方法是抽象化。他将问题中的地理元素简化成节点和边的图。每座桥成为图中的一条边,每个岸上的土地成为一个节点。这样,问题就转变成了在这个图上找一条路径,经过每条边一次且仅一次——这就是所谓的"一笔画问题",即Eulerian path。

欧拉将问题抽象化,引入了图论的概念,奠定了图论这一数学分支的基础。他的方法和思想对后来图论和网络理论的发展产生了深远的影响。

无向图与有向图

🔗 无向图(Undirected Graph)

无向图是一种图,它的边没有方向。节点之间的连接是双向的,没有箭头指示方向。无向图常用于描述简单的关系,如社交网络中的朋友关系。

• 边表示:(a,b) = (b,a)
• 权重:可以是0/1(无权重)或实数(有权重)
• 应用:社交网络朋友关系、协作网络

➡️ 有向图(Directed Graph)

有向图则是边有方向的图,每条边从一个节点指向另一个节点。有向图常用于描述有向关系,例如网页之间的链接、任务执行的顺序、食物链等。

• 边表示:(a,b) ≠ (b,a)
• 权重:可表示流量、成本、概率等
• 应用:网页链接、任务依赖、食物链、能源流动
✦
10.2

图和几何

千丝万缕的联系

图和几何的联系千丝万缕。首先,一幅图中的节点、边就自带几何属性。可以这样说,图这种数学思想就是典型的"几何化"思维。下面,让我们用几个例子让大家看到图和几何之间的联系。

✦
10.3

图和矩阵

两种表达的等价性

图就是矩阵,矩阵就是图!请大家在遇到任何一幅图,或者看到任何一个矩阵的时候,要多一层图和矩阵联系的思考。

📐 邻接矩阵(Adjacency Matrix)

对于简单图,如果两个节点之间有一条边,邻接矩阵相应位置就为1;如果不存在边的话,邻接矩阵相应位置便为0。

• 无向图:对称矩阵(A = AT)
• 有向图:一般非对称
• 加权图:矩阵元素为权重值
• 自环:对角线元素非零

🔢 其他矩阵表示

• 关联矩阵(Incidence Matrix):行=节点,列=边
• 度矩阵(Degree Matrix):对角矩阵,对角元素=节点度数
• 拉普拉斯矩阵(Laplacian):L = D - A
• 距离矩阵:成对最短路径长度
• 相关性矩阵:可视为加权图
💡
图与矩阵的深层联系
• 几何与代数:图提供几何直觉,矩阵提供代数工具
• 矩阵运算:A²的元素A²[i,j]表示从i到j长度为2的路径数
• 特征值分析:邻接矩阵特征值反映图的结构性质
• PageRank:基于转移矩阵的特征向量
✦
10.4

图和机器学习

从分类聚类到图神经网络

在机器学习中,图论常用于表示和分析数据之间的关系。图模型可以用来建模复杂的关联关系,尤其在结构化数据和网络数据方面。

🌳 树结构算法

图的特殊形态——树——在机器学习算法中应用很多:

• k-NN算法:kd-tree加速最近邻搜索
• 决策树:分类和回归树(CART)
• 层次聚类:树形图(dendrogram)
• 随机森林:多棵决策树集成

📊 聚类分析

通过构建相似度图,可以进行基于图的聚类:

• 层次聚类:基于距离矩阵构建树
• 谱聚类:拉普拉斯矩阵特征分解
• 社区发现:Louvain算法、模块度优化
• 图割:最小割问题

🔬 高级应用

图神经网络(GNNs)

图神经网络是深度学习在图结构数据上的扩展,专门用于处理图结构数据。

• 节点分类(Node Classification)
• 链接预测(Link Prediction)
• 图分类(Graph Classification)
• 消息传递机制
PageRank与社交网络

PageRank算法是基于图论的经典算法,用于评估网页重要性。

• 基于转移矩阵的特征向量
• 中心性度量(Centrality)
• 影响力传播分析
• 推荐系统应用

🤖 大语言模型中的图论

图论在自然语言处理中的应用主要体现在语言结构的建模上。语言结构可以被视为一个图,其中单词或子词是节点,语法和语义关系则是边。

• 依存句法树:句子的语法结构表示为有向图
• 知识图谱:实体-关系-实体三元组构成图
• 注意力机制:可视为全连接图上的信息传递
• Transformer:图注意力网络的特殊形式
✦
10.5

NetworkX

Python图论工具包

NetworkX是一个用Python编写的图论和复杂网络分析的开源软件包。它提供了创建、操作和研究复杂网络结构的工具。

🛠️ 主要功能

• 图创建:无向图、有向图、多重图、加权图
• 图操作:添加/删除节点和边、子图提取
• 图算法:最短路径、连通性、中心性度量
• 可视化:多种布局算法
• 数据导入导出:GML、GraphML、JSON等格式

📖 学习资源

• 官方文档:networkx.org/documentation
• 示例集:auto_examples/index.html
• 教程:tutorial.html
• API参考:reference/index.html
建议:强烈推荐练习NetworkX官方给出的案例,理论结合实践。

💻 基本用法示例

import networkx as nx
import matplotlib.pyplot as plt

# 创建无向图
G = nx.Graph()

# 添加节点和边
G.add_nodes_from([1, 2, 3, 4])
G.add_edges_from([(1,2), (1,3), (2,3), (3,4)])

# 计算节点度数
degrees = dict(G.degree())

# 绘制图
nx.draw(G, with_labels=True, node_color='lightblue', 
        node_size=500, font_size=16)
plt.show()

🎯本章核心要点

📚图论基础

  • •图的定义:节点(对象)+ 边(关系)
  • •两类图:无向图、有向图
  • •历史起源:欧拉与七桥问题(1736)
  • •Eulerian Path:一笔画问题

🔢图与矩阵

  • •等价性:图就是矩阵,矩阵就是图
  • •邻接矩阵:最基本的矩阵表示
  • •对称性:无向图→对称矩阵
  • •其他矩阵:度矩阵、拉普拉斯矩阵

🤖机器学习应用

  • •分类:决策树、kd-tree
  • •聚类:层次聚类、谱聚类
  • •GNN:图神经网络
  • •PageRank:网页排名算法

💡核心洞察

  • •抽象化力量:将实际问题转化为数学结构
  • •网状思维:世间万物关系都是网状
  • •跨学科:连接几何、代数、概率、ML
  • •NetworkX:理论与实践结合

🚀学习目标与展望

📖 本书图论内容定位

请注意:本书毕竟不是一本图论教科书;因此,本书对图论体系不会面面俱到,更强调图论的理论结合实践。

本书图论相关内容如果能够帮读者达成如下学习目标,笔者便心满意足:

🎯
目标一
了解图论基础入门知识,同时不觉得图论无聊,甚至有兴趣继续深入学习。
🔗
目标二
将图论、矩阵、概率统计、几何、随机过程等数学板块联系起来,并且了解图论在机器学习算法中的应用。
💻
目标三
用NetworkX完成常见图论问题的实践,理论结合实践。

🗺️ 后续章节预告

本册超过一半的内容和图论有关。后续章节将深入介绍:

• 图的遍历算法(BFS、DFS)
• 最短路径算法(Dijkstra、Floyd)
• 最小生成树(Kruskal、Prim)
• PageRank与中心性度量
• 社交网络分析(SNA)
• 社区发现算法
• 图卷积网络基础
• 知识图谱应用
下面让我们一起开始本书图与网络之旅 🌐