代码改变世界

数据结构——二十四、图(王道408) - 实践

2025-11-16 14:38  tlnshuju  阅读(0)  评论(0)    收藏  举报

前言

本文介绍了图的基本概念和逻辑结构。图由顶点集V和边集E组成,分为无向图和有向图。无向图边无序,有向图边有序。简单图不存在重复边和自环边,而多重图允许。顶点的度在无向图中为相连边数,有向图中分为入度和出度。路径分为容易路径和回路,连通性分为连通和强连通。子图包括一般子图和生成子图,连通分量和强连通分量是极大连通子图。连通图的生成树是极小连通子图,非连通图的生成森林由各连通分量的生成树组成。

一.图的定义

在这里插入图片描述

在这里插入图片描述

  • 图G由顶点集V边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)集合。若V = { v 1 , v 2 , … , v n } V=\{v_{1},v_{2},\dotsc ,v_{n}\}V={v1,v2,,vn},则用∣ V ∣ |V|V表示图G中顶点的个数,也称图G的阶E = { ( u , v ) ∣ u ∈ V , v ∈ V } E=\{(u,v)\mid u\in V,v\in V\}E={(u,v)uV,vV},用∣ E ∣ |E|E表示图G中边的条数
  • 注意:线性表许可是空表,树允许是空树,但图不可以是空,即V一定是非空集

二.图逻辑结构的应用

在这里插入图片描述

在这里插入图片描述

三.无向图、有向图

1.无向图

在这里插入图片描述

  • 若 E 是无向边(简称)的有限集合时,则图 G 为无向图。边是顶点的无序对,记为 (v,w) 或 (w,v),因为 (v,w)=(w,v),其中 v、w 是顶点。可以说顶点 w 和顶点 v 互为邻接点。边 (v,w) 依附于顶点 w 和 v,或者说边 (v,w) 和顶点 v、w 相关联。
    G_{2}=(V_{2},E_{2})
    V_{2}={A,B,C,D,E}
    E_{2}={(A,B),(B,D),(B,E),(C,D),(C,E),(D,E)}

2.有向图

在这里插入图片描述

  • 若 E 是有向边(也称)的有限集合时,则图 G 为有向图。弧是顶点的有序对,记为<v,w>,其中 v、w 是顶点,v 称为弧尾,w 称为弧头,< v,w> 称为从顶点 v 到顶点 w 的弧,也称 v 邻接到 w,或 w 邻接自 v。<v,m>≠<w,v>
    G_{1}=(A,B,C,D,E)
    V_{1}={A,B,C,D,E}
    E_{1}={< A,B,>,< A,C,>,< A,D,>,< A,E,>,< B,A,>,< B,C,>,< B,E,>,< C,D>}

四.简单图、多重图

数据结构课程只探讨“简单图”

1.简单图

在这里插入图片描述

  • ①不存在重复边;
  • ②不存在顶点到自身的边;

2.多重图

在这里插入图片描述

  • 图G中某两个结点之间的边数多于一条,又允许顶点通过同一条边和自己关联,则G为多重图

五.顶点的度、入度、出度

1.无向图

在这里插入图片描述

  • 对于无向图:顶点v的度是指依附于该顶点的边的条数,记为TD(v)
  • 在具有n个顶点、e条边的无向图中,∑ i = 1 n T D ( v i ) = 2 e \sum_{i=1}^{n}\mathrm{TD}(v_{i})=2ei=1nTD(vi)=2e
    即无向图的全部顶点的度的和等于边数的2倍

2.有向图

在这里插入图片描述

  • 对于有向图:
    入度是以顶点v为终点的有向边的数目,记为ID(v)
    出度是以顶点v为起点的有向边的数目,记为OD(v)
  • 顶点v的度等于其入度和出度之和,即TD(v)=ID(v)+OD(v)。
  • 在具有n个顶点、e条边的有向图中,∑ i = 1 n I D ( v i ) = ∑ i = 1 n O D ( v i ) = e \sum_{i=1}^{n}ID(v_{i})=\sum_{i=1}^{n}OD(v_{i})=ei=1nID(vi)=i=1nOD(vi)=e

六.顶点-顶点的关系描述

  • 图一
    在这里插入图片描述

  • 图二
    在这里插入图片描述

1.路径

  • 路径——顶点v p v_{p}vp到顶点v q v_{q}vq之间的一条路径是指顶点序列,v p , v i 1 , v i 2 , . . . , v i m , v q v_{p},v_{i_{1}},v_{i_{2}},...,v_{i_m},v_{q}vp,vi1,vi2,...,vim,vq

  • 通过在无向图里边,只要一条边存在,那么你能够从上往下走,也能够从下往上走该路径的方向是没有限制的,

  • 但是在有向图里边,路径的方向必须和弧的方向是一致的

  • 如在图一(无向图)中:

    • A到D的路径有:
      • ABD
      • ABED
      • ABECD
  • 在图二(有向图)中:

    • 顶点A到顶点E的路径:
      • ABE
      • AE
    • 顶点E到顶点A不存在路径

2.回路(环)

  • 回路——第一个顶点和结果一个顶点相同的路径称为回路或环
  • 如图一中的BDEB就是一个环
  • 如图二中的ABCDA也是一个环

3.便捷路径与容易回路

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

4.路径长度

  • 路径长度——路径上边的数目

5.顶点到顶点的距离

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

6.联通与强联通

  • 无向图中,若从顶点v到顶点w有路径存在,则称v和w是连通
  • 有向图中,若从顶点v到顶点w和从顶点w到顶点v之间都有路径,则称这两个顶点是强连通

7.联通图与强联通图

1.联通图

1.定义
  • 若图G中任意两个顶点都是连通的,则称图G为连通图,否则称为非连通图
2.常考考点
  • 对于n个顶点的无向图G,

  • 若G是连通图,则最少有n-1条边

    • 例如5个顶点的最少边数的联通图
      在这里插入图片描述
  • 若G是非连通图,则最多可能有C n − 1 2 C_{n-1}^{2}Cn12条边

    • 例如:4个顶点的最大边数的非联通图
      在这里插入图片描述

2.强联通图

1.定义
  • 若图中任何一对顶点都是强连通的,则称此图为强连通图
2.常考考点
  • 对于n个顶点的有向图G,
  • 若G是强连通图,则最少有n条边(形成回路)
    • 例如5个顶点边数最少的强联通图
      在这里插入图片描述

七.研究图的局部——子图

1.子图

在这里插入图片描述

  • 设有两个图 G=(V,E) 和 G’=(V’,E’),若 V’ 是 V 的子集,且 E’ 是 E 的子集,则称 G’ 是 G 的子图
  • 并非任意挑几个点、几条边都能构成子图,如下图
    在这里插入图片描述

2.生成子图

在这里插入图片描述

  • 若有满足V(G′ ^{\prime})=V(G)的子图G′ ^{\prime},则称其为G的生成子图
  • 比如上图中,大家把原图保留全部顶点,去掉了一些边,终于就变成了后面的生成子图

在有向图中,所谓子图和生成子图的概念也是一样的,不再赘述

八.连通分量与强连通分量

1.连通分量

在这里插入图片描述

  • 无向图中的极大连通子图称为连通分量
  • 极大连通子图:子图必须连通,且包含尽可能多的顶点和边
  • 如上图的无向图,我们行把它分为这样的三个连通分量,每一个连通分量其实都是原图的一个子图,并且这些子图它们都是连通的
    在这里插入图片描述

2.强连通分量

在这里插入图片描述

  • 有向图中的极大强连通子图称为有向图的强连通分量
  • 极大强连通子图:子图必须强连通,同时保留尽可能多的边
  • 如上面的有向图中,强连通分量有:
    在这里插入图片描述

九.生成树与生成森林

1.生成树

在这里插入图片描述

  • 连通图生成树包含图中全部顶点的一个极小连通子图

  • 极小连通子图:边尽可能的少,但要保持连通

  • 如上图的生成树为:
    在这里插入图片描述

  • 若图中顶点数为n,则它的生成树含有n-1条边。对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一个回路。

2.生成森林

在这里插入图片描述

  • 在非连通图中,连通分量的生成树构成了非连通图的生成森林。

  • 如上非连通无向图,先将其所有的连通分量画出来
    在这里插入图片描述

  • 然后将其全部转化为生成树,就变成了生成森林
    在这里插入图片描述

十.边的权、带权图/网

在这里插入图片描述

  • 边的权——在一个图中,每条边都可以标上具有某种含义的数值,该数值称为该边的权值。带权图/网——边上带有权值的图称为带权图,也称网。
  • 带权路径长度——当图是带权图时,一条路径上所有边的权值之和,称为该路径的带权路径长度

十一.几种特殊形态的图

1.无向完全图

在这里插入图片描述

  • 无向完全图—无向图中任意两个顶点之间都存在边
  • 若无向图的顶点数 |V|=n,则∣ E ∣ ∈ [ 0 , C n 2 ] = [ 0 , n ( n − 1 ) / 2 ] |E|\in[0,C_{n}^{2}]=[0,n(n-1)/2]E[0,Cn2]=[0,n(n1)/2]

2.有向完全图

在这里插入图片描述

  • 有向完全图—有向图中任意两个顶点之间都存在方向相反的两条弧
  • 若有向图的顶点数∣ V ∣ = n \mid V\mid=nV∣=n ,则∣ E ∣ ∈ [ 0 , 2 C n 2 ] = [ 0 , n ( n − 1 ) ] \mid E\mid \in\left[0,2C_{n}^{2}\right]=\left[0,n(n-1)\right]E∣∈[0,2Cn2]=[0,n(n1)]

3.稀疏图与稠密图

在这里插入图片描述

  • 边数很少的图称为稀疏图

在这里插入图片描述

  • 反之称为稠密图

通过没有绝对的界限,一般来说|E|<|V|log|V|时,能够将G视为稀疏图

4.树,森林,有向树

1.树与森林

1.概念

在这里插入图片描述

  • 树–不存在回路,且连通的无向图
  • n个顶点的树,必有n-1条边。
2.常考考点
  • n个顶点的图,若|E|>n-1,则一定有回路

2.有向树

在这里插入图片描述

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

十二.知识回顾与重要考点

在这里插入图片描述

结语

终于到图了,没想到能坚持这么久,接下来我还要继续努力啊

如果想查看更多章节,请点击:一、数据结构专栏导航页