29

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

这主要是为了好玩和玩 stackoverflow 本身的能力......虽然我实际上有兴趣获得一个 ActionScript 3 版本。

但想法是,即使创建了不同的编程语言,这个“问题”也将在未来不断更新!

我不知道在网上还有其他地方可以看到伪代码“翻译”成许多(更不用说每种)不同的语言。似乎它是一个有价值的资源,虽然不一定是这个网站的设计目的,但尝试一下并看看它是否是一个可以使用 stackoverflow 的有价值的东西并没有什么坏处!

4

11 回答 11

11

这是一个JavaScript 实现,以及源代码和我作为爱好/研究项目所做 的在线演示。

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

演示页面实现使用 jQuery。

于 2009-06-03T20:47:14.117 回答
9

这是一个 C++ 实现。到目前为止,它经过了很好的测试,并用于商业视频游戏和各种 AI 项目。

http://code.google.com/p/a-star-algorithm-implementation/

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

http://www.heyes-jones.com/astar.html

于 2009-01-27T01:58:34.623 回答
5

这是由构建该语言的人之一完成的C# 实现。

于 2008-09-17T16:33:56.347 回答
3

Source codes and demos in different programming languages:

List of demo's for each language:

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

Pathfinding Demo in different languages

Enjoy :)

于 2012-12-31T04:59:41.580 回答
1

AS 3 示例... http://www.dauntless.be/astar/

于 2010-01-13T15:50:38.797 回答
1

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

https://github.com/PeterMitrano/A-star-Pathfinding/blob/master/problem_83.c

于 2014-10-27T05:18:34.580 回答
1

Clojure实现,很大程度上基于PAIP中给出的示例。

于 2011-06-05T08:07:24.783 回答
1

不是实现,但我发现http://theory.stanford.edu/~amitp/GameProgramming/AStarComparison.html是对该算法的特别清晰的解释。具有使其非常易于实现的伪代码,以及对可用于实现开放集和封闭集的各种数据结构的扩展回顾,讨论适用于不同情况的不同启发式,修改启发式以获得特定行为(例如,在仅支持有限运动角度的系统中获得直线的近似值)、常见的陷阱(例如,使用与实际运动成本不同的启发式算法)和一些优化(例如,使用统一成本的区域而不是网格)。

于 2012-04-16T23:50:35.137 回答
1

Python 和 C++ 源代码以及交互式教程。该代码通常用于处理图形,而不是特定于网格(您会在网络上的许多 A* 示例中找到)。它使用二进制堆作为优先级队列(Python 和 C++ 在其标准库中都有二进制堆)。我在该页面上有广度优先搜索、Dijkstra 算法和 A*。该代码相当短(比我发现的大多数 A* 示例代码短)。

于 2016-06-29T01:10:13.613 回答
0

GraphHopper 中提供了优化的Java 实现。

于 2012-08-10T10:47:51.923 回答
0

VB6 实现。

http://www.gandraxa.com/pathfinding_with_a_star.xml

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

于 2008-09-17T16:56:05.360 回答