图和路径:深入理解图数据结构及其应用
1. 图的简介
图是一种用于表示实体之间关系的数据结构。它由一组顶点(vertices)和一组边(edges)组成,其中边连接顶点。图可以是有向图(Directed Graph)或无向图(Undirected Graph),也可以是带权图(Weighted Graph)。图的应用非常广泛,包括社交网络、地图导航、任务调度等领域。
1.1 图的表示方法
图可以通过多种方式进行表示,最常见的两种方法是邻接矩阵和邻接表。
邻接矩阵
邻接矩阵是一种二维数组,用于表示图中顶点之间的连接关系。对于一个有 (n) 个顶点的图,邻接矩阵是一个 (n \times n) 的矩阵。矩阵中的元素 (A[i][j]) 表示顶点 (i) 和顶点 (j) 之间的边是否存在。对于带权图,矩阵中的元素还可以表示边的权重。
优点 :
- 快速判断两个顶点之间是否有边相连。
- 实现简单,易于理解和编程。
缺点 :
- 对于稀疏图,空间复杂度较高,浪费大量空间。
- 添加或删除边时效率较低。
邻接表
邻接表是一种链表数组,每个顶点对应一个链表,链表中的元素表示与该顶点相连的其他顶点。对于带权图,链表中的每个元素还可以包含边的权重。
优点 :
- 对于稀疏图,空间复杂度较低,节省空间。
- 添加或删除边时效率较高。
缺点