返回

图的概念及其表示,你了解多少?

后端

图的概念及其表示

图的概念在数学和计算机科学中都有着广泛的应用,它是一种抽象的数据结构,用于对象之间的关系。

1. 图的定义及相关术语

  • (Graph):由顶点(Vertex)的有限集合和边(Edge)的有限集合组成的数据结构,顶点用V表示,边用E表示,图用G表示,G = (V, E)。
  • 顶点 (Vertex):图中的基本单位,通常用字母表示,如A、B、C等。
  • (Edge):连接两个顶点的线段,用顶点的名称或字母表示,如AB表示顶点A和顶点B之间的边。
  • (Degree):顶点与之相连的边的数量,记为deg(v)。
  • 路径 (Path):顶点序列,其中相邻的两个顶点之间都有边连接,路径的长度为路径上边的数量。
  • 连通 (Connectivity):如果图中任意两个顶点之间都有路径连接,则称该图为连通图,否则称为非连通图。
  • 权重 (Weight):边上标注的数值,表示边的重要程度或长度。
  • 有向图 (Directed Graph):边具有方向的图,边的箭头表示边连接两个顶点的方向。
  • 无向图 (Undirected Graph):边不具有方向的图,边的两端没有明确的起点和终点。
  • 循环图 (Cyclic Graph):存在至少一个环路(路径从某个顶点出发经过一些顶点后又回到该顶点)的图。

2. 图的存储表示

图的存储表示方式有多种,常用的有:

  • 邻接矩阵 (Adjacency Matrix):二维数组,其中矩阵中的每个元素表示两个顶点之间边的权重,如果两个顶点之间没有边,则相应的元素值为0。
  • 邻接表 (Adjacency List):数组,其中每个元素是一个顶点,每个顶点对应一个链表,链表中的节点表示与该顶点相连的边。
  • 十字链表 (Incidence List):数组,其中每个元素是一个边,每个边对应两个链表,链表中的节点分别表示边的起点和终点。

3. 图的分类

图可以根据不同的标准进行分类,常用的分类有:

  • 无向图和有向图 :根据边是否有方向,可以将图分为无向图和有向图。
  • 稀疏图和稠密图 :根据图中边的数量,可以将图分为稀疏图和稠密图。稀疏图的边数远少于顶点数的平方,稠密图的边数接近或等于顶点数的平方。
  • 连通图和非连通图 :根据图中任意两个顶点之间是否有路径连接,可以将图分为连通图和非连通图。
  • 简单图和多重图 :根据边是否可以重复,可以将图分为简单图和多重图。简单图中边不会重复,多重图中边可以重复。
  • 平面图和非平面图 :根据图能否在平面上绘制而不产生交叉,可以将图分为平面图和非平面图。

4. 无向图的表示

无向图可以用邻接矩阵或邻接表来表示。

  • 邻接矩阵表示 :无向图的邻接矩阵是一个对称矩阵,矩阵中的每个元素表示两个顶点之间边的权重,如果两个顶点之间没有边,则相应的元素值为0。
  • 邻接表表示 :无向图的邻接表是一个数组,其中每个元素是一个顶点,每个顶点对应一个链表,链表中的节点表示与该顶点相连的边。

5. 有向图的表示

有向图可以用邻接矩阵或邻接表来表示。

  • 邻接矩阵表示 :有向图的邻接矩阵不是对称矩阵,矩阵中的每个元素表示两个顶点之间边的权重,如果两个顶点之间没有边,则相应的元素值为0。
  • 邻接表表示 :有向图的邻接表是一个数组,其中每个元素是一个顶点,每个顶点对应一个链表,链表中的节点表示从该顶点出发的边。

6. 稀疏图和稠密图

稀疏图的边数远少于顶点数的平方,稠密图的边数接近或等于顶点数的平方。

  • 稀疏图的表示 :稀疏图可以用邻接表来表示,这样可以节省存储空间。
  • 稠密图的表示 :稠密图可以用邻接矩阵来表示,这样可以方便地访问任意两个顶点之间的边。

7. 图的应用

图在现实生活中有着广泛的应用,例如:

  • 社交网络:社交网络中的用户可以用顶点表示,用户之间的关系可以用边表示。
  • 交通网络:交通网络中的城市可以用顶点表示,城市之间的道路可以用边表示。
  • 电路网络:电路网络中的元件可以用顶点表示,元件之间的连线可以用边表示。
  • 计算机网络:计算机网络中的计算机可以用顶点表示,计算机之间的连接可以用边表示。

8. 结论

图的概念及其表示在数学和计算机科学中都有着广泛的应用,它是一种抽象的数据结构,用于对象之间的关系。