详细介绍一下数据结构中的图
图(Graph)是由一组顶点(Vertex,也叫节点)和一组边(Edge,也叫连接)组成的结构。
图是计算机科学中的一个重要数据结构,广泛应用于网络、社交关系、路径查找等领域。
图的基本概念
-
顶点(Vertex):图中的基本单位,表示某个实体。每个顶点可能表示一个人、一个城市、一个网页等。
-
边(Edge):连接两个顶点的关系。边可以有方向,也可以没有方向。每条边可能有一个权值,表示连接两个顶点的成本、距离、时间等。
-
邻接(Adjacency):如果两个顶点之间有边连接,则这两个顶点是邻接的。
-
路径(Path):从一个顶点到另一个顶点的顶点序列,其中相邻的顶点之间通过边相连。路径的长度是路径上边的数量。
-
连通(Connected):如果图中的每一对顶点都有路径连接,那么这个图是连通的。
-
环(Cycle):一个路径如果回到了起点,则形成环。
-
有向图与无向图:
- 有向图(Directed Graph):边是有方向的,表示从一个顶点指向另一个顶点。比如社交网络中的“关注”关系。
- 无向图(Undirected Graph):边没有方向,表示两个顶点之间的关系是双向的。比如城市之间的道路。
-
加权图(Weighted Graph):每条边都有一个权重(或成本),表示从一个顶点到另一个顶点的代价。比如图中的边可以表示两个城市之间的距离。
-
非加权图(Unweighted Graph):边没有权重,或者边的权重被视为相等。
-
有向无环图(DAG, Directed Acyclic Graph):有向图且没有环,常用于表示任务依赖关系、版本控制系统等。