图的高级表示
图(Graph)是一种非常重要的数据结构,用于表示对象之间的关系。图由**顶点(Vertex)和边(Edge)**组成,顶点表示对象,边表示对象之间的关系。在实际应用中,图可以用于建模社交网络、交通网络、推荐系统等复杂关系。
为了更好地表示图,我们需要掌握几种高级的表示方法。本文将详细介绍邻接表、邻接矩阵和边列表这三种常见的图表示方法,并通过实际案例帮助你理解它们的应用场景。
1. 邻接表(Adjacency List)
邻接表是图的一种常见表示方法,特别适合表示稀疏图(即边的数量远少于顶点数量的平方)。邻接表的核心思想是为每个顶点维护一个列表,列表中存储与该顶点直接相连的其他顶点。
邻接表的实现
以下是一个用 Python 实现的邻接表示例:
# 使用字典表示邻接表
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
# 打印邻接表
for vertex, neighbors in graph.items():
print(f"{vertex}: {neighbors}")
输入:
- 图的顶点和边关系如上代码所示。
输出:
A: ['B', 'C']
B: ['A', 'D', 'E']
C: ['A', 'F']
D: ['B']
E: ['B', 'F']
F: ['C', 'E']
邻接表的优缺点
- 优点:
- 空间效率高,适合稀疏图。
- 查找某个顶点的邻居非常高效。
- 缺点:
- 查找两个顶点之间是否有边需要遍历列表,效率较低。