我知道这个问题已被问到,但它没有回答我的具体问题。 我明白Dijkstra算法和A *算法是如何工作的,而A *是Dijkstra的一般情况。为什么A *比Dijkstra更快
A *通常认为A *会更快找到解决方案,因为您使用启发式方法可以加快过程/减少有效的分支因子。
但我记得,为了使A *返回最优结果,您必须搜索所有成本低于目标成本的节点。这确保了最优性,并且据说不可能有更快的算法,因为A *查看等节点< =每个算法至少需要的目标成本。
但是迪杰斯特拉呢?它也仅支付节点< =目标成本,因为它在每一步都扩展了最小可能路径。
如果您为了确保最优性而扩展其他节点,A *启发式优点是什么? 另外两种算法似乎有运行时的n log n个复杂
希望有人能清楚这件事:)
如果我没有表达错误,我相信。英语不是我的母语。 A *是Dijkstra的推广,这是一个更好的术语吗? – Nocta
对不起,你似乎是对的。这个有点违反直觉的术语似乎很普遍。 –