java - 二维数组中的寻路

标签 java arrays 2d a-star path-finding

假设我有这个二维数组 map

{ 0,0,0,0,7,1,1,1,1,1,1,1,1 },
{ 0,7,7,7,7,1,1,1,24,1,1,1,1 },
{ 0,7,24,24,24,24,24,24,24,1,1,3,1 },
{ 0,7,23,23,23,23,23,23,24,1,1,3,1 },
{ 0,7,24,23,23,23,23,23,23,1,1,1,1 },
{ 0,7,24,23,23,23,23,23,23,1,1,1,1 },
{ 0,7,23,23,23,23,23,23,24,1,3,1,1 },
{ 0,7,24,24,24,24,24,24,24,1,3,1,1 },
{ 0,0,0,0,1,1,1,1,1,1,1,1,1 },

我有一个充满整数的 HashSet,它们定义了阻塞的图 block 。当我点击玩家所在位置的 map 一部分时,有什么好方法可以很好地进行寻路? A*(使用节点/等)?你有什么建议?

谢谢。

最佳答案

如果图形的大小实际上按照您所描述的示例的顺序,那么您可以安全地使用 Dijkstra's algorithm ,考虑到它比 A* 更容易实现,并且如果您几乎可以在同一时间进行详尽的搜索,则实际上不需要启发式算法:)

至于您关于“使用节点/等”的评论,这已经是一张图表,尽管是一个有点尴尬的表示。每个数组值都是一个节点,“边”由数组中的邻接关系给出。阻止的切片可以通过抑制邻接来完成(即查找阻止的切片列表以确定是否可以从当前考虑的节点到达另一个节点),或者如 Yossarian 上面建议的那样,只需将该切片的成本设置为某个值即可大到几乎无限。但是,如果您采用后一种方法,您将需要确保这些图 block 永远不会无意中最终出现在解决方案中!

关于java - 二维数组中的寻路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3300827/

相关文章:

javascript - 从 Javascript 关联数组中删除一个项目

math - 曲线透视 : Convert 3D to 2D

C# XNA 删除磁贴组

java - Servlet 被调用了两次!

Java Media Framework 始终生成 TTL=1 的多播数据包

arrays - 使用 Perl 枚举哈希数组

python - 这两个二维数组有什么区别?

Java 2D 数组无法将值写入最后一个值索引

java - 如何通过 RestController 创建对象的实例,而不通过 RequestBody 传递构造函数的所有字段?

java - 使用 Intent 只是发送数据而不移动到不同的类/Activity