Artificial intelligence 我如何实现一个A*寻路算法,每种编程语言都有移动成本?

Artificial intelligence 我如何实现一个A*寻路算法,每种编程语言都有移动成本?,artificial-intelligence,path-finding,a-star,pathfinder,Artificial Intelligence,Path Finding,A Star,Pathfinder,我们能让人们用每种语言发布A*寻路算法的简单优化实现代码吗? 这主要是为了好玩和发挥stackoverflow本身的能力。。。虽然我实际上很想得到这个的ActionScript3版本 但是我们的想法是,这个“问题”将永远更新到未来,即使创建了不同的编程语言 我不知道在网上还有哪个地方可以看到伪代码被“翻译”成多种(更不用说每种)不同的语言。似乎这是一个有价值的资源,虽然不一定是这个网站的设计目的,但不妨尝试一下,看看它是否值得stackoverflow使用 下面是一个由构建该语言的人员完成的任务

我们能让人们用每种语言发布A*寻路算法的简单优化实现代码吗?

这主要是为了好玩和发挥stackoverflow本身的能力。。。虽然我实际上很想得到这个的ActionScript3版本

但是我们的想法是,这个“问题”将永远更新到未来,即使创建了不同的编程语言

我不知道在网上还有哪个地方可以看到伪代码被“翻译”成多种(更不用说每种)不同的语言。似乎这是一个有价值的资源,虽然不一定是这个网站的设计目的,但不妨尝试一下,看看它是否值得stackoverflow使用

下面是一个由构建该语言的人员完成的任务。

一个VB6实现


这是非常有用的,因为您可以逐步完成这个过程,并很好地了解算法的工作原理。当把算法转换成另一种语言时,这是非常有价值的。

< P>这是C++实现。到目前为止,它已经得到了很好的测试,并用于商业视频游戏和各种人工智能项目

还有一个教程,实际上是我首先写的:

这里有一个,以及一个我作为爱好/研究项目做的

这非常简单,但您可以更改一些参数(网格大小、墙的大小、调试信息开/关)。它将显示每个被检查节点的计算f(x)、g(x)和h(x)值


演示页面实现使用jQuery。

AS 3示例

一个实现,主要基于中给出的示例。

不是一个实现,但我发现这是对算法的一个特别清晰的解释。具有使其易于实现的伪代码,以及可用于实现开闭集的各种数据结构的扩展审查、适用于不同情况的不同启发式的讨论、对启发式的修改以获得特定行为(例如,在仅支持有限移动角度的系统中获得直线近似值)、常见缺陷(例如,使用与实际移动成本具有不同规模的启发式)和一些优化(例如,使用成本均匀的区域而不是网格).

在GraphHopper中提供了一个优化版本。

不同编程语言的源代码和演示:

每种语言的演示列表:

C++: 1
Java: 3
Processing: 1
Actionscript 3 (Flash): 4
Flex (Flash): 1
Javascript: 6
C#: 1
Ruby: 1
Prolog: 1
Unity: 1
Lua: 1


享受:)

我在C中实现了一个*作为学习C的一种方式,所以我不能保证它很漂亮,但它很有效! 我用它来解决Euler#83项目,它在两个测试用例上工作


以及。该代码一般用于图形,而不是特定于网格(您将在web上的许多A*示例中发现)。它使用二进制堆作为优先级队列(Python和C++都在标准库中有二进制堆)。我有广度优先搜索,Dijkstra算法,还有那个页面上的A*。代码相当短(比我找到的大多数示例代码都短)。

如果您提供更多基本规则,例如“测试”迷宫/障碍场,可能会更好。理想情况下,每个实现都会找到相同的路径或一个非常常见的可能解决方案短列表@Ray Hayes,也许不是同一条路线(因为可以有多条路线通向同一个目标),但相同的路线长度。SPOJ及其衍生产品/网站提供了一种在线编译多种不同语言代码的方法。也许你可以在那里制造问题,人们可以发布可测试和可编译的代码。术语“优化代码”和“简单代码”是相互排斥的。如果你在网上寻找“可以看到伪代码被翻译成多种(更不用说每种)不同语言的地方”,你可能会选择,一个网站实际上就是为了这个目的而做的。注意这是依赖于jquery的。演示依赖于jquery,插件本身不是。我更新了答案,指出非依赖部分更加突出,这个答案遭受链接腐烂,因为得到404@GMastros没问题。林基已经腐烂了!404! :D