图(Graph) 是一种抽象数据类型,和树不同,图中的节点没有层级结构,所有的节点可以链接到任意的另一个节点,形成一个二维的网状结构。
flowchart LR A --> B B --> C C --> D C --> B A --> C D --> A D --> E
图的基本组成部分包括:
- 顶点(Vertex):图中的基本单位,表示对象或实体。
- 边(Edge):连接两个顶点的线,表示顶点之间的关系。
根据边的性质,图可以分为以下几种类型:
- 有向图(Directed Graph):边有方向,从一个顶点指向另一个顶点,表示单向关系。
- 无向图(Undirected Graph):边没有方向,表示双向关系。
- 加权图(Weighted Graph):边上有权重,表示连接两个顶点的代价或距离。
- 无权图(Unweighted Graph):边没有权重,所有边的权重相同。
图的表示方法主要有两种:
- 邻接矩阵(Adjacency Matrix):使用一个二维数组来表示图,数组的行和列分别对应图中的顶点,数组中的元素表示顶点之间是否有边相连(以及边的权重)。
- 邻接表(Adjacency List):使用一个数组或链表来表示每个顶点及其相邻的顶点,适合稀疏图。