Bootstrap

最短路径问题

BFS(无权)【广度优先】

Dijkstra(有权+无权)

在Dijkstra算法中,是每次将距离当前路径最近的顶点加入最短路径中。不同的是,在加入顶点的同时还需要遍历加入顶点的邻接顶点以更新其他顶点到当前最短路径的距离

Floyd(有权+无权+负值)

Floyd算法是一种非常简单的算法,采用了动态规划的思想。假设Ai和Aj两点间不包含其他顶点。加入顶点B能够使得Ai-B-Aj的距离小于Ai-Aj,则最短路径中应该包括B。顶点B是从1到N的。假设有最短路径A-1-N-B,先插入1时能够对A-B和A-N进行优化,再插入N时会先对1-B进行优化,从而对A-B的距离进行了优化。同理假设有最短路径A-N-1-B,先插入1对N-B的距离进行优化,再插入N对A-1和A-B(因为上一步对B-B进行了优化)进行了优化
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/koulongxin123/article/details/124587840

A*

A*算法是一种启发式算法,比起Dijkstra算法的盲目搜索,A*算法的搜索路径更具有目的性,其性能取决于所给的启发式信息,即启发函数的准确度,启发函数的准确度越接近于实际距离,则算法效率越高,结果越精确,然而它并不能保证能够得到最优解。

对比于图论中的算法,它更适用于节点数量巨大的情形,因此常用于游戏、机器人或无人驾驶的自动寻路与路径规划问题中。

A*搜索算法所做的是,从起点开始,根据一个值f 选择下一步移动的网格,f = g + h 。在每一步中,它选择具有最低f 的节点进行处理。
其中:

g 为从起始点移动到给定方格的移动成本
h 为从给定方格移动到最终目的地的估计移动成本,通常被称为启发式函数,是一种猜测或者估算。在找到路径之前,不可能知道实际的距离,因为各种各样的东西都可能挡在路上(墙壁、水等)。计算h 的方法有很多。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_43276566/article/details/134618310

;