图(Graph) 是一种抽象数据类型,和不同,图中的节点没有层级结构,所有的节点可以链接到任意的另一个节点,形成一个二维的网状结构。

flowchart LR

A --> B
B --> C
C --> D
C --> B
A --> C
D --> A
D --> E

图的基本组成部分包括:

  1. 顶点(Vertex):图中的基本单位,表示对象或实体。
  2. 边(Edge):连接两个顶点的线,表示顶点之间的关系。

根据边的性质,图可以分为以下几种类型:

  1. 有向图(Directed Graph):边有方向,从一个顶点指向另一个顶点,表示单向关系。
  2. 无向图(Undirected Graph):边没有方向,表示双向关系。
  3. 加权图(Weighted Graph):边上有权重,表示连接两个顶点的代价或距离。
  4. 无权图(Unweighted Graph):边没有权重,所有边的权重相同。

图的表示方法主要有两种:

  1. 邻接矩阵(Adjacency Matrix):使用一个二维数组来表示图,数组的行和列分别对应图中的顶点,数组中的元素表示顶点之间是否有边相连(以及边的权重)。
  2. 邻接表(Adjacency List):使用一个数组或链表来表示每个顶点及其相邻的顶点,适合稀疏图。