图论前置知识 —— 关于图的一些入门概念【搭配详细图解】

顶点集与边集

图常用一个二元组G = <V,E>来表示,V表示顶点集,E表示边集。|V|表示顶点集中元素的个数,即图的顶点数,也称为图G的阶。N阶图表示图G中有N个顶点。|E|表示边集中元素的个数,即图G的边数。
需要注意的是:顶点集V和边集E均为有限集合,其中E可以为空集,V不可以为空集。也就是说一个图至少有一个顶点线性表和树可以为空表或者空树,但是图不可以为空图

无向图

如果图G中的每条边都是没有方向的,则称其为无向图。其每条边都是两个顶点组成的无序对。例如顶点V1和顶点V3之间的边,记为(V1,V3)或者(V3,V1)
在这里插入图片描述
注意:在上图中,任意两个顶点之间都有一条边,故上图也是一个完全无向图

图的反例:(一条边一定需要连接两个顶点)
在这里插入图片描述

有向图

如果图G中的每条边都是有方向的,则称其为有向图。有向边也称为弧。每条弧都是由两个顶点组成的有序对。例如从顶点V1到顶点V3的弧,记为<V1,V3>。其中,V1称为弧尾,V3称为弧头。
在这里插入图片描述

注意其区别:尖括号<Vi,Vj>表示有序对(有向图),圆括号(Vi,Vj)表示无序对(无向图)。

完全图

任意两个顶点之间都有一条边,则这个图叫做完全图。
完全无向图:
在这里插入图片描述
结论:由上图不难看出,n个顶点的完全无向图,有n(n - 1) / 2条边

完全有向图:
在这里插入图片描述
结论:由上图不难看出,n个顶点的完全有向图,有n(n - 1)条边

简单图与多重图
  • 平行边:无向图中,关联一对顶点的无向边多于一条,则称这些边为平行边,平行边的条数称为重数。有向图中,关联一对顶点的有向边多于一条,并且这些边的方向一致(起点和终点相同),则称这些边为平行边。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • :一条非空路径,且第一个和最后一个顶点相同。
  • 自环:自环是指一条边关联的两个顶点为同一个顶点,换句话说就是有一条自己到自己的边。
  • 多重图:含有平行边或自环的图
  • 简单图:既不含有平行边又不含有自环的图
稀疏图和稠密图

只有很少的边或者弧的图叫稀疏图,反之则为稠密图。稀疏与稠密是一个非常模糊的概念,一般来说,若一个图G满足|E| < |V|*log|V|,则称G为稀疏图。

在实际应用中,我们经常在图的边上标注代表距离、时间、代价等意义的数字,该数值称为边的权值。带权的图称为网。
在这里插入图片描述

邻接和关联
  • 邻接是指顶点和顶点之间的关系。
  • 关联是指顶点和边之间的关系:一条边关联两个顶点
  • 有边或弧相连的两个顶点ViVj互为邻接点
度与握手定理

定义:顶点的度是指与该顶点相关联的边的数目。记为TD(V)
握手定理:度数之和等于边数的两倍
举例如下:(3+2+2+3) = 5 * 2 = 10
在这里插入图片描述

路径、路径长度以及距离

路径:接续的边的顶点构成的序列(在一条路径中,满足边数=顶点数-1)
路径长度:路径上边或弧的权值之和(在有些题目中,路径长度也会定义为边的数目或者顶点的数目)
距离:从一个顶点到另一个顶点的最短路径长度

子图与生成子图

子图:设有两个图,G = <V,E>G1 = <V1,E1>,若V1∈VE1∈E,则称G1G的子图。从图中选择若干个顶点,若干条边,所构成的图称为原图的子图。
生成子图:从图中选择所有的顶点,若干条边,所构成的图称为原图的生成子图。

连通图和连通分量

连通图:在无向图中,如果顶点Vi到顶点Vj有路径,则称ViVj是连通的。如果图G中任何两个顶点都是连通的,则称G为连通图。如下图,是一个连通图:

在这里插入图片描述
极大连通子图:该子图是G的连通子图,如果再加入一个顶点,该子图就不连通。
连通分量:无向图G的极大连通子图称为G的连通分量。对于连通图,其连通分量就是他自己。对于非连通图,则有两个以上连通分量。
在这里插入图片描述
对于上图,有3个连通分量(V0代表第10个顶点):
1、{①②③④⑤⑥}
2、{⑦}
3、{⑧⑨⑩}

强连通图和强连通分量

强连通图:在有向图中,如果图中任何两个顶点ViVj有路径,VjVi也有路径,则称G为强连通图。
极大连通子图:该子图是G的强连通子图,且如果再加入一个顶点,该子图不再是强连通的。
强连通分量:有向图G的极大连通子图称为G的强连通分量。
强连通图举例:对于下图,任意两个顶点之间可以相互到达
在这里插入图片描述
非强连通图举例:对于下图,V1和V2可以到达V5,但是V5不能到达V1和V2
在这里插入图片描述
对于上面的非强连通图,其强连通分量为:
在这里插入图片描述

图的存储

图的结构比较复杂,任何两个顶点之间都可能有关系。如果采用顺序存储,则需要使用二维数组表示元素之间的关系,也就是邻接矩阵,在一些特殊情况下,也可以使用边集数组。如果采用链式存储,则有邻接表、十字链表、邻接多重表、链式前向星(静态链表)等表示方法。在竞赛中,最常用的是邻接矩阵以及链式前向星

邻接矩阵的优缺点

优点

  • 可以快速判断两个顶点之间是否有边:edge[i][j] = 1表示有边,edge[i][j] = 0表示无边。在网中,edge[i][j] = ∞表示无边,否则表示有边。时间复杂度为O(1)
  • 方便计算各顶点的度。在无向图中,邻接矩阵第i行元素之和就是顶点i的度。在有向图中,第i行元素之和就是顶点i的出度,第i列元素之和就是顶点i的入度。

缺点

  • 不便于增删顶点。增删顶点时需要改变邻接矩阵的大小,效率较低。
  • 空间复杂度较高:O(nxn)
  • 不便于访问所有的邻接点。访问第i个顶点的所有邻接点,需要访问第i行的所有元素,时间复杂度为O(n)。访问所有顶点的邻接点,时间复杂度为O(nxn)
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值