编程语言
首页 > 编程语言> > 算法基础--图的搜索

算法基础--图的搜索

作者:互联网

图的搜索

目录

图的搜索

图的定义

加权图

有向图

广度优先搜索

深度优先搜索

贝尔曼-福特算法

狄克斯特拉算法

A*算法


​​​​​​​

图的定义

        图:由顶点和连接每队顶点的边所构成的图形

加权图

        给边上加值,没有权的边只能表示两个顶点的连接状态,有权的边可以表示顶点之间的“连接程度”

有向图

        给边加上箭头表示方向,有向图也可加上权重

广度优先搜索

        广度优先搜索优先从离起点近的顶点开始,由近及远对图进行搜索

 (也可以搜索闭环图,和以上步骤一样)

深度优先搜索

        与广度优先搜索一样,从起点对图进行搜索。深度搜索沿着一条路径不断往下搜索直到不能再继续为止,然后再折返,开始搜索下一条路径。

贝尔曼-福特算法

        贝尔曼-福特在图中求解最短路径问题,最短路径问题是在加权图指定了起点和终点的前提下,寻找从起点到终点的路径中权重总和最小的那条路径

        计算边a—边b的权重:顶点原本的权重+边的权重

         若一个闭环中权重总和是负数,不断遍历这个环,路径权重不断减小,认定不存在最短路径

狄克斯特拉算法

        同为求解最短路径问题,比起需要对所有边都重复计算权重和更新权重的贝尔曼-福特算法,狄克斯特拉算法多了一步选择顶点的操作,使得它在求最短路径上更为高效

         当图中含有负数权重,狄克斯特拉算法可能无法得出正确答案,故有负数权重时不能使用狄克斯特拉算法

        总结:不存在负数权重,使用效率更高的狄克斯特拉算法,存在负数权重,使用贝尔曼-福特算法

A*算法

        同为求解最短路径,由狄克斯特拉算法演变而来,优点是会与先预估一个值,省去计算离终点较远的路径        

         当信息可以估算时,能使用A*算法,当信息不能估算时,不能使用。

标签:狄克,权重,--,路径,算法,搜索,斯特拉
来源: https://blog.csdn.net/zxn200125/article/details/120549945