数据结构之图的概念

图的基本概念

图的定义

图 $ G $ 由顶点集 $ V $ 和边集 $ E $ 组成,记为 $ G = (V, E) $。

  • 顶点集 $ V $: 图 $ G $ 中顶点的有限非空集。记作 $ V = { v_1, v_2, , v_n } $,其中 $ |V| $ 表示图 $ G $ 中顶点的个数。

  • 边集 $ E $: 图 $ G $ 中顶点之间的关系(边)集合。记作 $ E $,并用 $ |E| $ 表示图 $ G $ 中边的条数。边可以表示为顶点的有序对。例如,若 $ E = { (u, v) | u V, v V } $。

重要说明

  • 图不可以是空图:图的顶点集 $ V $ 一定非空,但边集 $ E $ 可以为空。这意味着图可以存在仅有顶点而没有边的情况。

1. 有向图

  • 定义: 若 $ E $ 是有向边(也称为弧)的有限集合,则图 $ G $ 为有向图。弧是顶点的有序对,记为 $ v, w $,其中 $ v $ 和 $ w $ 是顶点。

  • 术语:

    • $ v $ 称为弧尾(起点)。
    • $ w $ 称为弧头(终点)。
    • $ v, w $ 称为从 $ v $ 到 $ w $ 的弧,表示 $ v $ 邻接到 $ w $。

示例

有向图 $ G $ 可表示为:

$ G = (V, E) $

其中,

  • 顶点集: $ V = { 1, 2, 3 } $
  • 边集: $ E = { , 2 , , 1 , , 3 } $

2. 无向图

  • 定义: 若 $ E $ 是无向边(简称边)的有限集合,则图 $ G $ 为无向图。边是顶点的无序对,记为 $ (v, w) $ 或 $ (w, v) $。在无向图中,顶点 $ v $ 和 $ w $ 互为邻接点。

  • 术语: 边 $ (v, w) $ 依附于 $ v $ 和 $ w $,或称边 $ (v, w) $ 和 $ v, w $ 相关联。

示例

无向图 $ G $ 可表示为:

$ G = (V, E) $

其中:

  • 顶点集: $ V $
  • 边集: $ E = { (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4) } $

3. 简单图与多重图

  • 简单图: 一个图 $ G $ 如果满足以下条件,则称为简单图:

    1. 不存在重复边。
    2. 不存在顶点到自身的边。

    示例: 图 6.1 中的 $ G_1 $ 和 $ G_2 $ 均为简单图。

  • 多重图: 若图 $ G $ 中某两个顶点之间的边数大于1条,且允许顶点通过一条边与自身关联,则称为多重图。多重图和简单图的定义是相对的。在数据结构中,仅讨论简单图。

4. 完全图

  • 无向完全图: 对于无向图,边的取值范围为 $ 0 $ 到 $ $。有 $ $ 条边的无向图称为完全图。在完全图中,任意两个顶点之间都存在边。

  • 有向完全图: 对于有向图,边的取值范围为 $ 0 $ 到 $ n(n-1) $。有 $ n(n-1) $ 条弧的有向图称为有向完全图。在有向完全图中,任意两个顶点之间都存在方向相反的两条弧。

    示例: 图 6.1 中 $ G_1 $ 为无向完全图,而 $ G_2 $ 为有向完全图。

5. 子图

  • 定义: 设有两个图 $ G = (V, E) $ 和 $ G' = (V', E') $,若 $ V' $ 是 $ V $ 的子集,且 $ E' $ 是 $ E $ 的子集,则称 $ G' $ 是 $ G $ 的子图。

  • 生成子图: 若有满足 $ V' = V $ 的子图 $ G' $,则称其为 $ G $ 的生成子图。

注意事项

并非 $ V $ 和 $ E $ 的任何子集都能构成 $ G $ 的子图,因为这样的子集可能不是图,即子集中的某些边关联的顶点可能不在这个 $ V $ 的子集中。

6. 连通、连通图和连通分量

  • 连通性: 在无向图中,若从顶点 $ v $ 到顶点 $ w $ 存在路径,则称 $ v $ 和 $ w $ 是连通的。

  • 连通图: 若图 $ G $ 中任意两个顶点都是连通的,则称图 $ G $ 为连通图。否则,称为非连通图。

  • 连通分量: 无向图中的极大连通子图称为连通分量。在图 6.2(a) 中,图 $ G $ 有 3 个连通分量,如图 6.2(b) 所示。

image-20241008152713293

观察

假设一个图有 $ n $ 个顶点,如果边数小于 $ n-1 $,那么此图必为非连通图。

7. 强连通图与强连通分量

  • 强连通性: 在有向图中,如果有一对顶点 $ v $ 和 $ w $,从 $ v $ 到 $ w $ 和从 $ w $ 到 $ v $ 之间都有路径,则称这两个顶点是强连通的。

  • 强连通图: 若图中任意一对顶点都是强连通的,则称此图为强连通图。

  • 强连通分量: 有向图中的极大强连通子图称为有向图的强连通分量。图 $ G $ 的强连通分量如图 6.3 所示。

观察

假设一个有向图有 $ n $ 个顶点,如果是强连通图,那么最少需要有 $ n $ 条边(每个顶点至少需要有一条边来保证连通性)。

8. 生成树与生成森林

  • 生成树: 连通图的生成树是包含图中全部顶点的一个极小连通子图。若图中顶点数为 $ n $,则它的生成树含有 $ n-1 $ 条边。

    • 特性: 对于生成树而言,若砍去它的一条边,则会变成非连通图;若加上一条边则会形成一个回路。
  • 生成森林: 在非连通图中,连通分量的生成树构成了非连通图的生成森林。图 $ G $ 的一个生成树如图 6.4 所示。

9. 顶点的度、入度和出度

  • 顶点的度: 在无向图中,顶点 $ v $ 的度是指依附于顶点 $ v $ 的边的条数,记为 $ TD(v) $。对于具有 $ n $ 个顶点和 $ e $ 条边的无向图,所有顶点的度之和等于边数的 2 倍,即:

    $ _{v V} TD(v) = 2e $

  • 入度和出度: 在有向图中,顶点 $ v $ 的度分为入度和出度:

    • 入度: 以顶点 $ v $ 为终点的有向边的数目,记为 $ ID(v) $。
    • 出度: 以顶点 $ v $ 为起点的有向边的数目,记为 $ OD(v) $。

    在有向图中,顶点的度可以表示为:

    $ TD(v) = ID(v) + OD(v) $

    对于具有 $ n $ 个顶点和 $ e $ 条边的有向图,所有顶点的入度之和与出度之和相等,并且等于边数:

    $ {v V} ID(v) = {v V} OD(v) = e $

10. 边的权和网

  • 边的权值: 在一个图中,每条边可以标上具有某种含义的数值,该数值称为该边的权值。
  • 带权图: 带有权值的图称为带权图,也称为网。

11. 稠密图与稀疏图

  • 稀疏图: 边数很少的图称为稀疏图。稀疏和稠密本身是模糊的概念,通常当图 $ G $ 满足 $ |E| < |V| |V| $ 时,可以将 $ G $ 视为稀疏图。

  • 稠密图: 边数较多的图称为稠密图。稠密图与稀疏图是相对的概念。

12. 路径、路径长度和回路

  • 路径: 在顶点 $ v_1, v_2, , v_k $ 之间的一条路径是指顶点序列 $ v_1, v_2, , v_k $,关联的边也可理解为路径的构成要素。
  • 路径长度: 路径上边的数目称为路径长度。
  • 回路: 第一个顶点和最后一个顶点相同的路径称为回路或环。
  • 环的存在: 若一个图有 $ n $ 个顶点,并且有大于 $ n-1 $ 条边,则此图一定有环。

13. 简单路径与简单回路

  • 简单路径: 在路径序列中,顶点不重复出现的路径称为简单路径。
  • 简单回路: 除第一个顶点和最后一个顶点外,其余顶点不重复出现的回路称为简单回路。

14. 距离

  • 最短路径: 从顶点 $ u $ 出发到顶点 $ v $ 的最短路径若存在,则此路径的长度称为从 $ u $ 到 $ v $ 的距离。
  • 无路径情况: 若从 $ u $ 到 $ v $ 根本不存在路径,则记该距离为无穷大 (∞)。

15. 有向树

  • 有向树: 一个顶点的入度为 0,其他顶点的入度均为 1 的有向图称为有向树。