数据结构与算法之图

图的定义

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

  1. V(G) 表示图 G 中顶点的有限非空集;
  2. E(G) 表示图 G 中顶点之间的关系 (边) 集合。
  3. 若 V={v1,v2,…,v},则用|V|表示图 G 中顶点的个数,也称图 G 的阶,E={(u,v)|u∈V,v∈V},用|E|表示图 G 中边的条数。
    注意:线性表可以是空表,树可以是空树,单图不可以是空图,即 V 一定是非空集

图逻辑结构的应用

  1. 全国铁路客运线路图
    1. V:车站
    2. E:铁路
  2. 微信好友关系

无向图、有向图

无向图

若 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 ) G_2=(V_2,E_2) G2=(V2,E2)
V 2 = A , B , C , D , E V_2={A,B,C,D,E} V2=A,B,C,D,E
E 2 = ( A , B ) , ( B , D ) , ( B , E ) , ( C , D ) , ( C , E ) , ( D , E ) E_2={(A,B),(B,D),(B,E),(C,D),(C,E),(D,E)} E2=(A,B),(B,D),(B,E),(C,D),(C,E),(D,E)

有向图

若 E 是有向边 (也称弧) 的有限集合时,则称图 G 为有向图。弧是顶点的有序对,记为<v,w>,其中 v,w 是顶点,v 称为弧尾,w 称为弧头,<v,w>称为顶点 v 到顶点 w 的弧,也称 v 邻接到 w,或 w 邻接自 v。<v,w>≠<w,v>
G 1 = ( V 1 , E 1 ) G_1=(V_1,E_1) G1=(V1,E1)
V 1 = A , B , C , D , E V_1={A,B,C,D,E} V1=A,B,C,D,E
E 1 = < A , B > , < A , C > , < A , D > , < A , E > , < B , A > , < B , C > , < B , E > , < C , D > E_1={<A,B>,<A,C>,<A,D>,<A,E>,<B,A>,<B,C>,<B,E>,<C,D>} E1=<A,B>,<A,C>,<A,D>,<A,E>,<B,A>,<B,C>,<B,E>,<C,D>

简单图、多重图

  1. 简单图
    1. 不存在重复边
    2. 不存在顶点到自身的边
  2. 多重图
    1. 图 G 中某两个结点之间的边数多于一条,又允许顶点通过同一条边和自己关联,则 G 为多重图

顶点的度、入度、出度

无向图

对于无向图:

  1. 顶点 v 的度是指依附于该顶点的边的条数,记为 T D ( V ) TD(V) TD(V)
  2. 在具有 n 个顶点,e 条边的无向图中,度之和=2e,即无向图的全部顶点的度的和等于边数的 2 倍

有向图

  1. 入度是以顶点 v 为终点的有向边的数目,记为 ID(v);
  2. 出度是以顶点 v 为起点的有向边的数目 1,记为 OD(v).
  3. 顶点 v 的度等于其入度和出度之和,即 TD(v)=ID(v)+OD(v)。
  4. 在具有 n 个结点、e 条边的有向图中,出度之和=入度之和=e
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ETevLsGX-1655008427316)(https://pic-space-1303847498.cos.ap-guangzhou.myqcloud.com/img/20220610093859.png)]

顶点 - 顶点的关系描述

  1. 路径:顶点 v p v_p vp 到顶点 v q v_q vq 之间的一条路径是指顶点序列, v p , v i , v i m , v q v_p,v_i,v_{im},v_q vp,vi,vim,vq
  2. 回路:第一个顶点和最后一个顶点相同的路径称为回路或环
  3. 简单路径:在路径序列中,顶点不重复出现的路径称为简单路径
  4. 简单回路:除第一个顶点和最后一个顶点外,其余顶点不重复出现的回路称为简单回路
  5. 路径长度:路径上边的数目
  6. 点到点的距离:从顶点 u 出发到顶点 v 的最短路径若存在,则此路径的长度称为从 u 到 v 的距离。若从 u 到 v 根本不存在路径,则记作该距离为无穷。
  7. 连通:无向图中,若从顶点 v 到顶点 w 有路径存在,则称 v 和 w 是连通
  8. 强连通:有向图中,若从顶点 v 到顶点 w 和从顶点 w 到顶点 v 之间都有路径,则称这两个顶点是强连通

连通图、强连通图

  1. 若图 G 中任意两个顶点都是连通的,则称 1 图 G 为连通图,否则称为非连通图
    1. 对于 n 个顶点的无向图 G
      1. 若 G 是连通图,则最少有 n-1 条边
      2. 若 G 是非连通图,则最多有 C 2 n − 1 {C^2}_{n-1} C2n1条边
  2. 若图中任何一对顶点都是强连通的,则称此图为强连通图
    1. 对于 n 个顶点的有向图 G
      1. 若 G 是强连通图,则最少有 n 条边 (形成回路)

研究图的局部——子图

设有两个图 G=(V,E) 和 G’=(V’,E^‘),若 V^’ 是 V 的子集,且 E^’ 是 E 的子集,则称 G^’ 是 G 的子图
若有满足 V(G^‘)=V(G) 的子图 G^’,则称其为 G 的生成子图
注意:并非任意挑几个点、几条边都能构成子图

连通分量

无向图的极大连通子图称为连通分量。子图必须连通,且包含尽可能多的顶点和边。

强连通分量

有向图中的极大强连通子图称为有向图的强连通分量,子图必须强连通,同时保留尽可能多的边

生成树

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

生成森林

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

边的权、带权图/网

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

带权图的应用举例

  1. 地图导航——距离最短
  2. 地图导航——收费最低

几种特殊形态的图

无向完全图和优先完全图

  1. 无向完全图:无向图中任意两个顶点之间都存在边
    1. 若无向图的顶点数|V|=n,则|E|∈ [ 0 , C 2 n ] [0,{C^2}_n] [0,C2n]= [ 0 , n ( n − 1 ) / 2 ] [0,n(n-1)/2] [0,n(n1)/2]
  2. 优先完全图:有向图中任意两个顶点之间都存在方向相反的两条弧
    1. 若有向图的顶点数|V|=n,则|E|∈ [ 0 , 2 C 2 2 ] [0,2{C^2}_2] [0,2C22]= [ 0 , n ( n − 1 ) ] [0,n(n-1)] [0,n(n1)]

稀疏图和稠密图

  1. 边数很少的图称为稀疏图
  2. 反之称为稠密图
    没有绝对的界限,一般来说 ∣ E ∣ < ∣ V ∣ l o g ∣ V ∣ ∣ |E|<|V|log|V|| E<VlogV时,可以将 G 视为稀疏图

树和有向树

  1. 树:不存在回路,且连通的无向图
  2. 有向树:一个顶点的入度为 0、其余顶点的入度均为 1 的有向图,称为有向树
    注意:
  3. n 个顶点的树,必有 n-1 条边
  4. n 个顶点的图,若|E|>n-1,则一定有回路

总结

对于 n 个顶点的无向图 G:

  1. 所有顶点的度之和=2|E|
  2. 若 G 是连通图,则最少有 n-1 条边 (树),若|E|>n-1,则一定有回路
  3. 若 G 是非连通图,则最多可能有 C 2 n − 1 {C^2}_{n-1} C2n1条边
  4. 无向完全图共有 C 2 n {C^2}_n C2n条边
    对于 n 个顶点的有向图 G:
  5. 所有顶点的出度之和=入度之和=|E|
  6. 所有顶点的度之和=2|E|
  7. 若 G 是强连通图,则最少有 n 条边 (形成回路)
  8. 有向完全图共有 2 C 2 n 2{{C^2}_n} 2C2n条边

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

five-five

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值