【问题标题】:What is a good benchmark for A* (AStar)?A* (AStar) 的良好基准是什么?
【发布时间】:2013-06-07 16:41:16
【问题描述】:

我给自己写了一个 A*,它工作得很好,现在是时候评估它的性能了(可能会对照其他解决方案来看看它的性能)。

为了获得视觉反馈和乐趣,我将它用作图像迷宫解算器。首先 - 我知道这不是 A* 的主要设计目的,但我认为这是一个很好的测试方法(但不是唯一的方法)。同意 ?我一直很简单:白色像素是节点,其他颜色是墙壁。

我曾想过向它扔this maze(大图),但我知道它会

  • 显然需要一些时间,因为它有超过 3 000 000 条边(还不到墙的一半,但仍然如此)
  • 不一定是一个很好的指标,过大的环境

总结:什么样的环境对A*来说是一个好的压力测试?应用 A* 中图表的数量级是多少(例如在游戏中)?

【问题讨论】:

  • 我不确定这个问题是否有意义 - 我认为根本不存在“一般良好的指标”存在。不同的调整效果更好或更差,具体取决于问题;有些,比如使用布尔网格来存储封闭的“列表”,在许多情况下甚至不应用根本,但可以(但不一定)很棒当他们这样做的时候。
  • @harold 可能没有“一个板凳可以统治所有人”,这是肯定的,但我认为有一些有趣的事情可以尝试。我不是在谈论优化,我想知道我链接的那种迷宫是否不是一个非常具体的案例,不能代表算法的全球使用。
  • 好吧,如果你是这个意思的话,至少这是一个有趣的测试

标签: performance algorithm benchmarking path-finding a-star


【解决方案1】:

一个好的压力测试是一个数字道路网络
1) 大国(如西班牙、法国、德国)的一部分,然后
2)全国。 (几百万个节点)

OpenStreetMap 提供了此类数据,但将其导入图表需要大量工作。

【讨论】:

  • 这是一个非常好的主意,但恐怕它超出了我的专业知识(我认为这是非常复杂的数据)。反正我看看!
  • @tehinternetsismadeofcatz GraphHopper 已经很容易地从 openstreetmap 导入大数据(例如世界范围内),所以这不再是很多工作了。它实现了 A*,但您可以轻松实现自己的(在 Java 中),更重要的是:您可以比较和提高性能:)
  • @AlexWien for me/graphhopper 世界范围的场景大约有。 80mio 节点和 ~110mio 边缘用于汽车。德国有 9mio 边和 7mio 节点
  • @感谢您的信息。 Navis 通常使用分层网络计算海岸路线:但在服务器端,您有 80 个 mio 节点的内存。
  • @Karussell 不幸的是我使用 C++,但这很有趣。
【解决方案2】:

我在大约 420 x 760 六边形(总共超过 325,000 个六边形)的地形图上实现了Parallel New Bidirectional A* 的串行版本。这张地图上最困难的长对角线路径(大约 1080 步)在单个 i7 内核上在大约 0.45 秒的时间内完成,完成后只有不到 90,000 个封闭集元素。

请注意,就 Dijkstra 和 A* 而言,地形图具有迷宫般的品质,因为步长成本的范围很广(此地图从 2 到 10+)确保所有可接纳的启发式方法效率低下。

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2011-07-18
    • 2023-04-02
    • 1970-01-01
    • 2010-10-16
    相关资源
    最近更新 更多