问题标签 [a-star]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
419 浏览

java - A* 实现总是返回相同的值

我似乎要么失去理智,要么错误地实现了 A* 算法:

下面是我的代码,似乎无论我输入什么值,它总是会返回 360。我在这里遗漏了一些关键信息吗?同样在有人问是之前,这与我收到的机器学习作业有关。

公共类 A_Star {

}

公共类 SearchNode {

public SearchNode(int cost, int xCoordinate,int yCoordinate){
this.cost=cost;
this.xCoordinate =xCoordinate;
this.yCoordinate = yCoordinate;
}
public int getCost() { 返回成本;}

}

0 投票
3 回答
26582 浏览

python - Python - 加速 A Star 寻路算法

我编写了我的第一个稍微复杂的算法,A Star Pathfinding算法的实现。我遵循了一些关于实现图形的Python.org 建议,因此字典包含每个节点也链接的所有节点。现在,由于这一切都是为了游戏,每个节点实际上只是节点网格中的一个图块,因此我是如何制定启发式方法和偶尔引用它们的。

多亏了 timeit,我知道我可以每秒成功运行这个函数一百多次。可以理解的是,这让我有点不安,因为没有任何其他“游戏内容”,比如图形或计算游戏逻辑。所以我很想看看你们中的任何人是否可以加快我的算法,我完全不熟悉 Cython 或它的亲戚,我不能编写一行 C。

废话不多说,这是我的 A Star 函数。

0 投票
1 回答
407 浏览

python - 始终使用 A* 实现获得相同的路径

我正在尝试从维基百科的伪代码中实现 A*,但是我得到了一些奇怪的结果。

该实现找到了最初看起来不错的路径,但进一步看,它总是产生相同的路径!

任何人都可以发现任何问题吗?代码用 python 3.1 编写并使用 pygame。

我真的不知道,因为我认为我已经逐句实现了伪代码语句。

这里也是一个截图: http ://andhen.mine.nu/uploads/astar.dib

谢谢!

0 投票
3 回答
1517 浏览

search - A* 搜索算法卡住了

我正在尝试实现 A* 搜索算法。现在我只是想在一个到处都是墙壁的环境中找到一条好路。墙壁是随机生成的,在某些情况下,我的路径会“卡住”。如果搜索在它前面遇到一堵墙,并且在它的所有侧面(除了把它带入这个烂摊子的那一面),它就会停止。我能做些什么来防止这种情况发生吗?我正在为我的 H 值使用“如乌鸦飞”点系统,它忽略了墙壁,只是估计到达目的地需要多远。这有时会导致它陷入这个陷阱。

谢谢。

0 投票
6 回答
26924 浏览

algorithm - 使用 A* 解决旅行推销员

我的任务是编写 A* 算法(提供启发式算法)的实现,以解决旅行商问题。我了解算法,它很简单,但我看不到实现它的代码。我的意思是,我明白了。节点的优先级队列,按距离 + 启发式(节点)排序,将最近的节点添加到路径上。问题是,如果不能从前一个最近的节点到达最近的节点会发生什么?一个人实际上如何将“图形”作为函数参数?我只是看不到算法实际上是如何运作的,就像代码一样。

在发布问题之前,我阅读了维基百科页面。反复。它并没有真正回答这个问题——搜索图表是一种方式,与解决 TSP 方式不同。例如,您可以构建一个图,其中任何给定时间的最短节点总是导致回溯,因为两条相同长度的路径不相等,而如果您只是尝试从 A 到 B,那么两条路径相同的长度是相等的。

您可以得出一个图表,通过始终最接近的方式永远无法到达某些节点。

我真的不明白 A* 如何适用于 TSP。我的意思是,找到从 A 到 B 的路线,当然,我明白了。但是TSP?我没有看到联系。

0 投票
1 回答
458 浏览

algorithm - 与 Dijkstra 概念不同的路由算法

存在哪些与 Dijkstra 概念不同的路由算法?

Dijkstra(和 A*、D*、bellman forge 等)使用这个概念:从已知节点中获取最佳节点,展开并将结果保存到已知节点。

有没有根本不同的概念?

0 投票
2 回答
2295 浏览

c# - C# 中 Astar (A*) 图形搜索数据的结构

您如何在图形搜索类中构建图形/节点?我基本上是在创建一个 NavMesh,需要生成从 1 个多边形到另一个多边形的节点。连接两个多边形的边将是节点。

替代文字

然后我将在这些节点上运行 A* 来计算最短路径。我只需要知道如何构建我的类及其属性?

我确信我不需要用节点和边创建一个完全成熟的无向图。

0 投票
2 回答
8676 浏览

c# - A-star (A*) 的曼哈顿启发式函数

我在这里找到了这个算法。

我有一个问题,我似乎无法理解如何设置和传递我的启发式函数。

如您所见,它接受 2 个函数,一个距离和一个估计函数。

使用曼哈顿启发式距离函数,我需要采用 2 个参数。我是否需要修改他的源并将其更改为接受 TNode 的 2 个参数,以便我可以将曼哈顿估计值传递给它?这意味着第 4 个参数将如下所示:

并将估计函数更改为:

我的曼哈顿功能是:

0 投票
4 回答
212 浏览

java - 在我的寻路区域周围设置边界是否可以接受?

我目前正在使用 A* 寻路算法来计算无限网格上的路径(使用 Gridworld 中的 UnboundedGrid,AP CS 案例研究,如果对任何人有帮助的话)。一切都很好,除了因为末端节点完全被墙包围而没有有效路径的情况。正如预期的那样,算法继续无限搜索,永远找不到结束节点。

一个可能的解决方案是在整个寻路区域周围放置不可见的(如用户看不到但算法看到的)墙,确保开始节点、结束节点和所有墙节点都在这些范围内墙壁,有2-3个空格填充左右。就像是:

...想法是最终所有节点都将添加到封闭列表中,开放列表将变为空,此时我将知道不存在有效路径。

这似乎是解决问题的合理方法吗?有什么方法可能会出错吗?我知道另一种解决方案是同时从末端向后寻路,但这似乎可能很昂贵,特别是在末端节点没有那么紧密封闭的情况下。

0 投票
2 回答
820 浏览

c# - 如何从此数据结构创建图表?

我从这个A* 教程中获取了这个数据结构:

我不知道如何创建一个简单的图表。

如何使用 C# 添加类似以下无向图的内容:

替代文字

基本上我想知道如何连接节点。我有自己的数据结构,我已经可以确定邻居和距离。我现在想把它转换成这个张贴的数据结构,这样我就可以通过 AStar 算法运行它。

我正在寻找更多类似的东西: