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

文章目录

前言

本文介绍了图的基本概念和逻辑结构。图由顶点集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)∣u∈V,v∈V},用 ∣ 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})=2e ∑i=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})=e ∑i=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} Cn−12条边

    • 例如: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(n−1)/2]

2.有向完全图

  • 有向完全图---有向图中任意两个顶点之间都存在方向相反的两条弧
  • 若有向图的顶点数 ∣ V ∣ = n \mid V\mid=n ∣V∣=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(n−1)]

3.稀疏图与稠密图

  • 边数很少的图称为稀疏图
  • 反之称为稠密图

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

4.树,森林,有向树

1.树与森林

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

2.有向树

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

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

结语

终于到图了,没想到能坚持这么久,接下来我还要继续努力啊😉
如果想查看更多章节,请点击:一、数据结构专栏导航页

相关推荐
TT哇4 小时前
【优先级队列(堆)】2.数据流中的第 K ⼤元素(easy)
算法·1024程序员节
red_redemption4 小时前
自由学习记录(108)
学习
Matlab程序猿小助手4 小时前
【MATLAB源码-第303期】基于matlab的蒲公英优化算法(DO)机器人栅格路径规划,输出做短路径图和适应度曲线.
开发语言·算法·matlab·机器人·kmeans
CoderIsArt5 小时前
CORDIC三角计算技术
人工智能·算法·机器学习
立志成为大牛的小牛5 小时前
数据结构——二十九、图的广度优先遍历(BFS)(王道408)
数据结构·数据库·学习·程序人生·考研·算法·宽度优先
Alex艾力的IT数字空间5 小时前
基于PyTorch和CuPy的GPU并行化遗传算法实现
数据结构·人工智能·pytorch·python·深度学习·算法·机器学习
屁股割了还要学5 小时前
【Linux入门】常用工具:yum、vim
linux·运维·服务器·c语言·c++·学习·考研
仰泳的熊猫5 小时前
LeetCode:51. N 皇后
数据结构·c++·算法·leetcode
独自破碎E5 小时前
LeetCode 381: O(1) 时间插入、删除和获取随机元素 - 允许重复
java·算法·leetcode