1. 什么是图?
图(Graph)是计算机科学中最基础也最重要的数据结构之一。它由一组顶点(Vertex)和连接这些顶点的边(Edge)组成。我们可以用数学方式表示为一个有序对 G = (V, E),其中 V 是顶点的集合,E 是边的集合。
图的魅力在于它能直观地表示现实世界中各种复杂的关系网络。比如社交网络中,每个人可以看作一个顶点,好友关系就是连接这些顶点的边;在交通系统中,每个车站是一个顶点,线路则是边;甚至在神经网络中,神经元是顶点,突触连接就是边。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 图的基本组成要素
2.1 顶点与边
顶点(也称为节点)是图的基本单位,可以代表任何实体。边则表示顶点之间的关系或连接。根据边的性质,图可以分为几种不同类型:
- 无向图:边没有方向,如A-B表示A和B互相连接
- 有向图:边有方向,如A→B表示从A指向B
- 加权图:边上带有权重值,可以表示距离、成本等
2.2 图的表示方法
在实际编程中,我们常用以下两种方式表示图:
- 邻接矩阵:用二维数组表示顶点间的连接关系
python复制# 无向图的邻接矩阵示例
graph = [
[0, 1, 1, 0], # A连接B和C
[1, 0, 1, 1], # B连接A、C和D
[1, 1, 0, 0], # C连接A和B
[0, 1, 0, 0] # D只连接B
]
- 邻接表:为每个顶点维护一个连接列表
python复制# 有向图的邻接表示例
graph = {
'A': ['B', 'C'],
'B': ['D'],
'C': ['B'],
'D': []
}
邻接矩阵适合稠密图(边多),查询速度快但占用空间大;邻接表适合稀疏图(边少),空间效率高但查询稍慢。
3. 图的基本性质与概念
3.1 度(Degree)
- 无向图:顶点的度是指与之相连的边的数量
- 有向图:
- 入度(In-degree):指向该顶点的边数
- 出度(Out-degree):从该顶点出发的边数
3.2 路径与连通性
- 路径:顶点序列,其中每对相邻顶点都有边连接
- **简单路径
