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

来源:互联网 发布:十大当红网络女作家 编辑:程序博客网 时间:2024/06/15 04:02

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

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

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

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

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

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

0 0
原创粉丝点击