【问题标题】:Implementing A* Search algorithm [closed]实现 A* 搜索算法 [关闭]
【发布时间】:2016-12-20 08:52:37
【问题描述】:

我是一个尝试实施 A* 搜索算法以进行练习的初学者,我想知道最好的方法是什么。我创建了一个图结构(邻接矩阵),我的计划是将 A* 应用于初始和目标顶点。随着我的进展,我还创建了启发式并改进了它。问题是,这甚至可以工作吗?我看过其他实现,他们使用不同的数据结构完成了它。

【问题讨论】:

  • 那么问题是什么?你的实施会奏效吗?

标签: algorithm search data-structures a-star adjacency-matrix


【解决方案1】:

这取决于您如何实现邻接矩阵。

A* 的一个关键点是找到一个节点的邻居。如果您将矩阵实现为一个简单的密集位字段,其中相邻节点为 1,非相邻节点为 0,则此搜索效率非常低,因为您必须检查每个节点。虽然效率低下,但这并不妨碍您实施 A*。

如果您有更复杂的邻接矩阵实现,例如作为一个稀疏矩阵,它允许您直接查询邻居,这将更适合 A*。

【讨论】:

  • 是的,我已经将它实现为一个稀疏矩阵(抱歉,我不知道它的确切名称)。即便如此,与替代方案相比,这仍然是一种低效的数据结构吗?
  • 我将稀疏矩阵定义为双图[][],如何直接查询邻居?
  • 这不是稀疏矩阵实现。它是存储在密集矩阵表示中的稀疏矩阵。参见例如netlib.org/utk/people/JackDongarra/etemplates/node373.html。通过这种表示,所有邻居都彼此相邻。
猜你喜欢
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
  • 2012-10-18
  • 1970-01-01
  • 2017-01-06
相关资源
最近更新 更多