我需要在8个连接的网格中找到从A到B的路径(上/下左/右和对角线)。问题是,这个网格是空的(25-60%)是空的,但是有一些高加权值的地方(空砖的重量的约20倍)可能必须通过。我已经用RSR和JPS查看了A *之类的东西,但这些似乎只适用于未加权的网格。现在我已经推出了A *实现,但它比我想要的慢。我甚至不需要一个完全最优的算法,只需要一些接近的算法。
答案 0 :(得分:1)
JPS并分析了带有障碍物的均匀网格。我认为,如果你对待任何“不寻常”的瓷砖,就像对待障碍物一样,JPS会起作用(即让你快速穿过均匀的区域)。 JPS的作者甚至在对JPS blog post的评论中推测得很多(而且看起来相当明显):
简单地将任何具有不同地形类型的邻居视为 当前节点,强制。这将允许您快速搜索 统一成本区域,当进入a时停止扩展节点 不同的地区,并继续在另一边跳跃
然而,您似乎暗示您的网格不仅仅是非均匀的,而且除了惩罚拼贴之外还有奖励拼贴。您还需要处理这些问题(例如,将所有网格权重偏向上以避免负权重)。
答案 1 :(得分:0)
如果需要考虑速度,请考虑使用图形硬件(例如CUDA或OpenCL)。 This paper讨论了3d网格上的“brushfire”算法,以找到具有旋转的2d机器人的路径。这几乎与你的问题完全一样,尽管你已经在2d了。