本博文来自bestsort
(转载请保留此信息)
A*是一种启发式搜索,根据目标地点和当前点的距离和估计要走的步数来决策下一步走哪个方向。而这两个参数,一般用 g ( x ) g(x) g(x)和 h ( x ) h(x) h(x),其中 g ( x ) g(x) g(x)为 x x x点到目标点的实际距离。
所以最终的我们要走哪个点取决于 g ( x ) + h ( x ) g(x)+h(x) g(x)+h(x),取可选点中 g ( x ) + h ( x ) g(x)+h(x) g(x)+h(x)最优的那个点走。
而k短路,就是终点第K次被找到的时候。
随便从网上扒了一份图,根据图来详细了解下
这份图因为在博客园出现过,在简书也出现过,且都未标注原创是谁,所以这里我直接拿来用了,如有侵权,请回复,我会删除此文
现在来看看图,现在我们要从 A A A点走到 B B B点,假设我们可走8个方向( ↑ , ↓ , ← , → , ↖ , ↗ , ↙ , ↘ ↑,↓,←,→,↖,↗,↙,↘ ↑,↓,←,→,↖,↗,↙,↘)。(后文均用箭头代指方向)
先求出实际花费(就是↑,↓,←,→,↖,↗,↙,↘8个点到 B B B点的最短路,用Dijkstra或者SPFA等常用最短路算法跑一遍就行了)

尊重原图,这里设每走一格花费为10,所以走第一步的 g g

本文详细介绍了A*算法的工作原理,通过实际距离g(x)和启发式估计h(x)结合来决策路径选择。同时,文章讨论了k短路的概念,即找到到达目标点的第k次最短路径。内容包括如何计算每个方向到目标点的最短距离,以及如何通过BFS不断寻找加权和最小的点。虽然A*算法在某些特定图结构(如n元环)中时间复杂度可能较高,但通常能提供高效的寻路解决方案。
8921

被折叠的 条评论
为什么被折叠?



