算法导论—基于BFS的图算法

华电北风吹
天津大学认知计算与应用重点实验室
最后修改日期:2015/10/17

这篇博客中的主要谈谈与广度优先搜索的相关算法。

一、广度优先搜索
广度优先搜索,顾名思义,广,可以理解为宽,与深对应,当前深度有未遍历的节点就不做深入搜索。

二、Dijklas求单源最短路径
给出起点,初始一个数据数组,记录该起点到所有节点的最短路径值(也可以用令一个数组记录最短路径),初始都为最大值。然后遍历该节点的边表(广度优先),更新该节点到每个节点的最短路径值(+路径)。选择当前节点到所有未访问节点里面距离最小的节点,作为下一次访问节点。直到所有节点都访问过。

三、最小生成树(Prime)
初始一个数组记录树与剩余节点的最短路径,初始都为最大值。每进入一个节点就更新一次树与剩余节点的最短路径(通过访问边表更新)。第一次根节点入树,以后每次选择树外的,与树距离最近的节点入树。

四、拓扑排序(强联通分量)
对一个有向图拓扑排序的时候,首先要初始化一个数组记录所有节点的入度,然后访问入度为0的节点,对入度为0的节点遍历边表,对边表上的节点入度减1,依次进行。若出现所有未访问的节点度均大于0,则是出现环,算法退出,报告错误(这时说明发现有向图的强联通分量)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值