【问题标题】:Implementing the A* search algorithm in Scheme/Racket在 Scheme/Racket 中实现 A* 搜索算法
【发布时间】:2021-05-28 15:23:39
【问题描述】:

我期待实现 A* 搜索算法,但我不知道我应该从哪里真正开始。我想出了一种方法来表示我的图表,如下所示:

(
'("city1" (x y (("neighbour1" edgeWeight1)("neighbour2" edgeWeight2))))
...
)

我创建了一个开放列表和一个封闭列表,但从现在开始我真的不知道该怎么做。有什么想法吗?

【问题讨论】:

  • 每当我需要用一种新的语言编写 A* 时,我都会去维基百科页面上对算法和相关伪代码的描述进行翻译。事先有一个优先队列 API 很有用。

标签: scheme racket path-finding a-star


【解决方案1】:

在尝试实现算法时,您应该做的第一件事是实现算法使用的抽象。

A* 搜索算法使用两个抽象。第一个抽象是图的抽象。您应该提出一些图的定义并实现函数来执行 A* 所需的“图相关的事情”(例如,获取给定节点的邻居,查找图中的所有节点等)。

A* 搜索使用的第二个抽象是优先级队列,用于“开放集”。您需要为“开放集”提出一个方案定义,并编写方案函数来完成必须完成的事情(即找到并删除成本最低的节点)。

一旦你做了这些事情,你应该会发现算法相当简单。

【讨论】:

  • @user10802841 很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
  • 2011-08-16
  • 2010-12-07
  • 2011-06-05
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
相关资源
最近更新 更多