algorithm - A* 表示未加权图表

标签 algorithm graph shortest-path dijkstra a-star

在未加权有向图上使用 A* 搜索算法来查找最短路径是否有意义?

来自阅读http://www.cs.cmu.edu/~cga/ai-course/astar.pdf看起来 A* 在内存方面可能会很昂贵,对于未加权的图也是如此,它如何确定启发式?

这篇文章here似乎得出结论 A* 不应该用于未加权图。

用于在未加权有向图上查找最短路径的最佳/租赁昂贵算法是什么?只是一个简单的 BFS?

最佳答案

除非你有一个有用的启发式方法来使用它,否则完全的 A* 是没有意义的。也就是说,如果您的启发式是猜测每个节点与目标的可能距离相同,那么 A* 搜索将为您提供与 BFS 相同的结果,因为您将在查看更短路径之前先查看较短路径到达的每个节点。较长的节点到达的节点。

至于最好的,我所知道的最好的算法是从两端开始的 BFS,使用哈希来检测第一个交集。也就是说,您标记源和目标。然后将源向外延伸到深度 1,然后将目标延伸到深度 1,然后将源向外延伸到深度 2,然后将目标延伸到深度 2,依此类推。当相交时,您有从两个方向到达交叉点的最短路径。所以从源出发遍历到交点,然后从交点回到目标。

例如,这种算法用于在 LinkedIn 等大型社交网络中查找与您关系密切的人。

关于algorithm - A* 表示未加权图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48630459/

相关文章:

C++ 创建加权图?

c++ - 使用BFS解决连接组件问题时得到错误答案

python 在 x 轴上旋转值以不重叠

c++ - 在至少访问 X 节点一次的图中查找最短路

c++ - 分而治之数组算法C++

c - BST 中的顺序后继者

java - 首都之间经过其他首都的最短路径

algorithm - 矩阵中最短距离中的最大值

algorithm - 使用 Trie 的时间复杂度为 O(m) 的单词搜索 - m 是单词的大小

c++ - 修改排序数组还是每次都对数组排序?