本课时有配套视频讲解,购买后即可观看(永久有效)
图的定义与表示
二、知识总结
✨ 核心思想
图是一种复杂的数据结构,用于表示多对多的关系。在计算机科学、网络理论、社会网络分析、物流规划等领域中,图都有广泛的应用。图由节点(也称为顶点)和连接这些节点的边组成。在图的世界中,你可以探索如最短路径、连通性、网络流等多种有趣的问题。
✨ 图的基本概念
图中涉及的核心术语:
- 顶点(Vertex):图中的基本元素,通常代表实体。
- 边(Edge):连接两个顶点的线,可以是无向的(双向连接)或有向的(箭头指向一个方向)。
- 路径:顶点序列,其中每对相邻的顶点之间都通过边连接。
- 循环:路径的起点和终点相同的特殊路径。
- 连通图:在无向图中,如果从任意一个顶点都可以到达其他所有顶点,则该图是连通的。在有向图中,如果对每个顶点都存在这样的条件,则称该图为强连通图。
- 加权图:边上带有权重(或成本),通常用来表示从一个顶点到另一个顶点的距离、时间或费用等。
✨ 应用场景
图的应用非常广泛,包括但不限于:
- 社交网络中的朋友推荐系统
- 互联网中的网页链接结构分析
- 交通网络中的最短路径问题
- 电路设计和网络流量优化
理解图的基础和高级概念是掌握数据结构和算法的关键,也是解决复杂系统问题的基础。
✨ 执行示例
下面通过一个具体的例子,展示图的各种术语和概念。
示例图(无向图): 5 个顶点、6 条边
10 --- 1
2| / |
3| / |
4| / |
52 --- 3
6 \
7 4边:(0,1), (0,2), (1,2), (1,3), (2,3), (2,4)
术语验证:
- 顶点(Vertex):0, 1, 2, 3, 4,共 5 个
- 边(Edge):(0,1), (0,2), (1,2), (1,3), (2,3), (2,4),共 6 条
- 度(Degree):每个顶点连接的边数
- 顶点 0 的度 = 2(连接 1, 2)
- 顶点 1 的度 = 3(连接 0, 2, 3)
- 顶点 2 的度 = 4(连接 0, 1, 3, 4)
- 顶点 3 的度 = 2(连接 1, 2)
- 顶点 4 的度 = 1(连接 2)
- 路径:从 0 到 3 的路径有多条,如 0->1->3 或 0->2->3
- 连通性:从任意顶点都可以到达其他所有顶点,所以这是一个连通图
有向图示例:
0 --> 1
| |
v v
2 --> 3边:(0,1), (0,2), (1,3), (2,3)
在有向图中,(0,1) 表示从 0 到 1 有一条有向边,但从 1 到 0 不一定有边。注意:
- 顶点 0 的出度 = 2(指向 1, 2),入度 = 0
- 顶点 3 的出度 = 0,入度 = 2(来自 1, 2)
✨ 解题步骤详解
当题目涉及图的建模时,关键是正确识别顶点和边:
步骤一:识别顶点 题目中的"对象"就是顶点。例如:城市、人、网页、棋盘格子等。
步骤二:识别边 对象之间的"关系"就是边。例如:道路连接、朋友关系、超链接、相邻格子等。
步骤三:确定图的类型
- 关系是双向的(如朋友关系)→ 无向图
- 关系是单向的(如网页链接)→ 有向图
- 关系有距离/费用等属性 → 加权图
步骤四:选择存储方式
- 顶点少、边多 → 邻接矩阵
- 顶点多、边少 → 邻接表
✨ 常见错误
- 混淆有向图和无向图:无向图的边 (u,v) 表示 u 和 v 互相可达,在邻接矩阵中需要同时设置 matrix[u][v] 和 matrix[v][u]。有向图只设置一个方向。
- 忘记处理自环:有些图允许一个顶点到自身有边(自环),需要根据题意判断是否需要处理。
- 重边的处理:两个顶点之间可能有多条边(如不同航线),有些题目需要区分重边,有些只保留一条。
- 顶点编号从 0 还是从 1 开始:不同题目的编号起点不同,数组大小要对应调整,避免越界。