【问题标题】:How can I compare Dijkstra and A*?如何比较 Dijkstra 和 A*?
【发布时间】:2016-04-27 21:20:19
【问题描述】:

我正在开发一个 GPS 系统。目的是开发更适合解决问题的算法。我正在使用 Dijkstra 和 A*,现在在我的报告中,我需要围绕它提出一些理论,并说明哪个是最好的。

我有一张充满顶点和边(街道)的地图,我想知道如何比较这两种算法,以便说明为什么一个比另一个更好以及为什么。

我问这个是因为当我运行 Dijkstra 时,它会获得所有顶点的路径,所以即使我增加了我想知道的点之间的路径,它也可能是相同的,我认为这是一种很好的测试方式一种*。有没有办法可以得到一个类似的术语?

【问题讨论】:

  • 我相信 A* 可以遵循与 Dijikstra 相同的路径,给出正确的启发式。但是您可以提供许多启发式方法,包括好的和坏的。
  • 使用欧几里得距离

标签: algorithm dijkstra a-star


【解决方案1】:

星星基本上是 Dijkstra 的知情变体。而 A 星使用广度优先搜索来加速搜索,这将是一种贪婪的方法。

最终成本 = 移动成本 + 启发式成本

上述等式用于A星算法。它类似于 Dijkstra 算法。因此,您可以将其与速度进行比较。仍然注意当 N 增加时,使用 A Star 并不是最好的。因为它在两种情况下尽可能选择最优路径:

  1. 估计成本总是低于实际成本。
  2. 有足够的内存可用于找到解决方案并表示它。

在另一个 Stack Overflow 问题中进行了解释,Dijkstra 和 A 明星之间的区别和优势

【讨论】:

    猜你喜欢
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多