【搜索与图论】图的定义和术语汇总、图的存储和遍历的概念

以下汇总均来源于:zzu信息工程学院数据结构课件
本文是概念性总结文章,包括图的定义和术语汇总、图的存储和遍历的概念。其中:图的存储和遍历算法会在另一篇文章:(【搜索与图论】树和图的存储与遍历算法实现)中给出。

1 图的定义和术语汇总

1.1 有向图和无向图

在讨论有向图和无向图时,我们约定以下两点:

  • 顶点没有到自身的边/弧(没有自环)
  • 与特定的两个顶点相关联的边不多于一条(没有重边)

容易错的一点是,在有向图中,要区分弧头和弧尾(以v1→v2为例):

  • 初始点v1:也叫弧尾
  • 终端点v2:也叫弧头

特别地:

  • 有向完全图:n个顶点、有n(n-1)条弧的有向图
  • 无向完全图:n个顶点、有n(n-1)/2条边的无向图

1.2 邻接关系

无向图中的邻接关系:如果边(v,w)∈E

  • vw互为邻接点,或vw相邻接
  • 边(v,w)依附于顶点vw,或边(v,w)与vw相关联
  • 和顶点v相关联的边的数目即v的度,记为TD(v)

有向图中的邻接关系:

  • 如果弧<v,w> ∈E,称v邻接到ww邻接自v
  • 顶点v的入度:以v为头的弧的数目,记为ID(v)
  • 顶点v的出度:以v为尾的弧的数目,记为OD(v)
  • 顶点v的度TD(v)= ID(v)+ OD(v)

其中,一个有n个顶点和e条边或弧的图,满足:在这里插入图片描述

1.3 连通性

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

1.4 无向连通图的生成树

在这里插入图片描述
我的答案:T F T T(欢迎质疑)

1.5 有向树、有向图的生成森林

在这里插入图片描述
注意:这里的绿色箭头并不是等价转换。
根据定义,有向图在转换成有向树时,需要:

  • 删除某些有向边,使某个结点的入度为0作为根节点
  • 保证其余结点入度为1

当然,并不是所有的有向图都可以转换成有向树,条件不符合时就只能转到森林了。

1.6 稀疏图和稠密图、权值和网

在这里插入图片描述

2 图的两种存储方式

  • 邻接矩阵(数组表示法)
  • 邻接表

2.1 邻接矩阵(数组表示法)

2.1.1 三个例子

分别是有向图、无向图、网的邻接矩阵存储表示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.2 邻接矩阵(数组表示法)的优缺点

在这里插入图片描述

2.2 邻接表

2.2.1 两个例子

邻接表是图的一种链式存储结构,适用于有向图和无向图。对图中每个顶点建立一个单链表,单链表中的结点表示依附于该顶点的边(对有向图来说是以该顶点为弧尾的弧)。
在这里插入图片描述
感受一下邻接表和邻接矩阵相对比,为什么更适合稀疏图?
在这里插入图片描述

2.2.2 邻接表的优缺点

在这里插入图片描述

3 图的两种遍历方式

定义:图的遍历是指从图中某个顶点出发遍访图中其余顶点,且使每个顶点仅被访问一次的过程。
意义:对非线性结构线性化。遍历算法是求解图的连通性拓扑排序、求关键路径等算法的基础。

  • 深度优先搜索DFS (Depth First Search)
  • 广度优先搜索BFS (Breadth First Search)

3.1 BFS

3.1.1 BFS算法思想

在这里插入图片描述

3.1.2 BFS举例

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

3.1.3 BFS时间复杂度分析

在这里插入图片描述

3.2 DFS

3.2.1 DFS算法思想

在这里插入图片描述

3.2.2 DFS举例

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

3.3 图的遍历算法的应用

这些只是一部分,具体应用的算法题多了去了…
不过还是把课件这一部分加进来了:

  • 利用图的遍历算法来判定一个无向图是否是连通图
  • 利用图的遍历算法来得到生成树或生成森林
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值