图论算法

基本概念

  • 是由顶点(vertex)和边(edge)的集合,每一条边就是一个点对(a, b),如果点对是有序的就是有向图

  • 图的表示
    邻接表
    邻接矩阵

  • 连通性:如果在一个无向图中从每一个顶点到每个其他顶点都存在一条路径,则称该无向图是连通的。具有这种性质的有向图是强连通的,如果一个有向图不是强连通的,但是他的基础图,即去掉边的方向所形成的图,是连通的,则称该有向图是弱联通的,完全图是其每一对顶点间都存在一条边的图。

  • DAG(有向无圈图): 如果一个有向图从任意顶点出发无法经过若干条边回到该点,则这个图是一个有向无圈图(DAG, Directed Acyclic Graph)
    在这里插入图片描述

  • 出度:由一个顶点出发的边的总数

  • 入度:指向一个顶点的边的总数
    算法精解:DAG有向无环图

深度优先搜索 DFS

只要可能,就在图中尽量“深入”,深度优先搜索总是对最近才发现的结点v的出发边进行探索,直到该结点的所有出发边都被发现为止。一旦节点v的所有出发边都被发现,搜索则“回溯”到v的前驱结点,来搜索该前驱结点的出发边。
在这里插入图片描述
在这里插入图片描述

根据DFS所生成的深度优先森林,可以定义4种边的类型:

  • 树边:为深度优先森林种某一棵树的边。如果结点v是因为算法对边(u, v)的探索而首先被发现,则边(u, v)是一条树边
  • 后向边B:后向边(u, v)是将结点u连接到其所在深度优先树种一个祖先结点v的边。
  • 前向边F:是将结点u连接到其在深度优先树中一个后代结点v的边(u, v);
  • 横向边:除上述3种之外的边,可以连接同一棵深度优先树种同一深度的两个结点,也可以连接不同深度优先树种的两个结点。

应用

  • 拓扑排序
    有向无环图所有的节点按照DFS的完成时间降序排序,即可完成一个拓扑时序图

广度优先搜索 BFS

将已发现的结点和未发现的结点之间的边界,沿其广度方向向外扩展。也就是说,算法需要在发现所有距离源结点s为k的所有结点之后,才会发现距离源结点s为k+1的其他结点。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值