在Scheme/Racket中实现A*搜索算法

在Scheme/Racket中实现A*搜索算法,scheme,racket,path-finding,a-star,Scheme,Racket,Path Finding,A Star,我期待着实现A*搜索算法,但我不知道应该从哪里开始。我想出了一种方法来表示我的图形,如下所示: ( '("city1" (x y (("neighbour1" edgeWeight1)("neighbour2" edgeWeight2)))) ... ) 我创建了一个openlist和一个closedlist,但从现在起我真的不知道该怎么做。有什么想法吗?在尝试实现算法时,首先要做的是实现算法使用的抽象 A*搜索算法使用两种抽象。第一

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

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

我创建了一个openlist和一个closedlist,但从现在起我真的不知道该怎么做。有什么想法吗?

在尝试实现算法时,首先要做的是实现算法使用的抽象

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

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


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

每当我需要用一种新的语言写一个*时,我只要在维基百科页面上找到算法的描述和相关的伪代码并翻译它。事先有一个优先级队列API很有用。@user10802841很高兴我能帮上忙。