a-star相关内容
免责声明:我真的相信这不是类似问题的重复.我已经阅读了这些内容,并且他们(大多数情况下)建议使用堆或优先级队列.我的问题更多是“我不知道在这种情况下它们将如何工作". 简而言之: 我指的是典型的A *(A星)寻路算法,例如Wikipedia上所述: https://en.wikipedia.org/wiki/A*_search_algorithm 更具体地说,我想知道什么是
..
我正在使用A星算法,如此处所示(摘自不一定找到最佳路线 您的连通性是8个邻域,对于这个邻域而言,比欧几里得距离具有更好的启发性.请注意,路径不能具有任意角度,它必须笔直或成45度角,因此即使没有障碍物,欧几里德距离也会低估该距离.正确无误,但是您可以使用“对角距离"启发式:(取自此处,并且易于适应Python-该站点还讨论了高估启发式算法的影响) function heuristic(n
..
有我的astar算法,但是我不知道如何获得双亲并从目的地获得快速路线. Node script methods getPos() (Vector2) Parent (Node) Node n = ?.Parent; while(n != null) { path.add(n.getPos()); n = n.Parent; } 解决方案 您必须将“当前"设置为相邻
..
我很难跟踪getAdjacentTiles(..)生成的图块.我已经确定了下面我的A *实现的性能问题是,我没有跟踪以前看到的图块,每次对getAdjacentTiles的调用都会返回新的图块(Node),而不是其中的任何图块openSet或closedSet.我决定使用Node对象的列表作为到目前为止创建的所有图块,并将其传递给getAdjacentTiles以确定它生成的图块是否已经被访问过.
..
这可能是一个菜鸟问题,但我不明白. 我正在尝试在游戏中实现A *寻路.我正在遵循本教程和AstarPathfinder.java中的代码.但是,我没有实例化AStarPathfinder类并为所有Nodes创建2D数组,而是制作了一个静态方法,将我的2D数组(级别/世界)传递给该方法,开始和结束了Node. 原因我总是必须将当前和下一个Node存储在Node next和Node curren
..
我尝试在Java中创建A *算法,但遇到了这个奇怪的错误.我知道A *并非总能找到最佳路径,但是在这里它似乎与理性背道而驰,选择了更差的路径,而且我找不到导致此错误的代码中的错误.似乎在我创建的其他地图上找到了最佳解决方案. 这是该错误的图片,以及这些节点的打印输出 http://i.imgur.com/IudT7.png 这是我使用的代码的一部分. import java.ut
..
我试图了解A *路径查找算法,以及如何在python程序中实现它.我发现了此网站,该网站做得非常好解释算法本身是如何工作的,并提供一些示例代码. 在这里我被困住了: def make_graph(mapinfo): nodes = [[AStarGridNode(x, y) for y in range(mapinfo.height)] for x in range(mapinfo.
..
我使用Prolog(Swipl)实现了15益智游戏的这一实现.我已经使用曼哈顿启发式算法实现了A *搜索,但是现在我需要添加汉明启发式算法. 您知道如何实现吗? :- op(400,yfx,'@'). resolver(Estado,MovimientosSolucion) :- evaluar(Estado,0,F),
..
我正在针对C ++中的主要机器人探索行为实现A *路径规划算法.随着机器人的移动,它会将周围的环境映射为2D图形.在此图中,我设置了一个Vector2D元组{x, y},它保存了这个航路点的位置,我也希望机器人也可以在其中导航. 我对A *所做的第一件事是拥有一个Node类,该类保存有关当前节点的信息; double f; // F, final score double g; //
..
我发现此算法我有一个问题,我似乎无法理解如何设置和传递我的启发式功能. static public Path AStar(TNode start, TNode destination, Func distance, Func estimate) whe
..
我正在使用这个A星(A *)Pathfinder.java计算&在Android地图应用中生成我的路线. https://github.com/xSmallDeadGuyx/SimpleAStar/blob/master/Pathfinder.java 当我使用A star Pathfinder.java计算地图上从一个点到另一点的路线时,地图的尺寸很大,尺寸约为8000x8000.
..
我一直在阅读Wikipedia的Astar 文章.在实现中,他们检查每个节点是否在closed集中,如果是,则跳过该节点.如果启发式是可以接受的,但不同是一致的,是否可能需要两次(或多次)重新访问一个节点以提高其f值? 这是相关代码 for each neighbor in neighbor_nodes(current) if neighbor in closedset //This
..
通常说A *是解决寻路问题的最佳算法. 在A *不是 的最佳算法时,有什么情况吗? A *与BFS,DFS,UCS等相比有多好? 解决方案 简短的答案是肯定的,在某些情况下,A *不是解决问题的最佳算法.但是,有许多方法可以评估用于寻找解决方案的 best 算法的组成. 如果您考虑从单个来源到多个目的地的多次搜索的效果最佳,那么您应该考虑使用一种更合适的方法( Dijks
..
是否可以修改A *以返回具有最少转弯次数的最短路径 ? 一个复杂之处:节点不再能够仅通过位置来区分,因为它们的父节点与确定未来的转向相关,因此它们也必须具有与之关联的方向. 但是我遇到的主要问题是如何将匝数转换为部分路径成本(g).如果我将g乘以匝数(t),就会发生奇怪的事情,例如:靠近终点的N匝较长的路径比靠近起点的N匝较短的路径更受青睐. 我正在考虑的另一个较不理想的解决方案
..
我已经阅读了有关该主题的一些stackoverflows以及A *上的Wikipedia,但我仍然有些困惑.我认为这篇文章几乎可以完全向我解释: A *启发式,高估/低估了吗? 我唯一剩下的困惑是,A *如何知道最佳解决方案?在允许的启发式方法看来,您可以抛出超出已知最佳解的路径,因为可以保证启发式方法小于或等于.但是A *会如何提前知道最优值? 如果您不知道最佳路径成本,此搜索工
..
我正在使用A *算法.我有一个2D网格,上面有一些障碍,给出了起点和终点的位置,我找到了它们之间的最短路径. 这是我的伪代码 while(queueNotEmpty){ removeFromPQ; if(removed == destination) found; insertAllNeighbours; } 删除和插入是优先级队列(Heap)上的函数,并且是O
..
在智能搜索问题中用于估计距离的最常见的启发式方法是什么?特别是,我对可以(通常)用作A *搜索的允许启发式的指标感兴趣.我碰到过直线距离和曼哈顿距离,但是还有其他距离吗? 解决方案 启发式方法通常非常特定于给定的问题,因为其思想是合并您可能对该问题具有的更多知识.因此,“一般启发式"不是一个非常有用的类别.就是说,这听起来像是您在专门谈论距离指标,它是一个定义更明确的子集. 就可接受
..
我一直在用C语言开发一个15难题的求解器.我的代码使用的大量内存也有一些问题. 我不会发布我的代码,因为它太长了……我已经实现了我正在使用的大多数库,这可能会给您带来混乱.让我们从基础开始. 我现在正在使用的东西是:(所有这些都在C中实现) -斐波那契堆: /* Struct for the Fibonacci Heap */ typedef struct _fibohea
..
我有一个类似以下的迷宫: |||||||||||||||||||||||||||||||||||| | P| | ||||||||||||||||||||||| |||||||| | | || | | ||||||| || | | || | | | | |||| ||||||||| || |||||
..
我正在编写一种A *算法,该算法可以解决Java中的8难题,到目前为止,我已经使用不适当的瓦片数实现了DFS,BFS,A *,而我只需要使用启发式实现即可曼哈顿距离. 您可能已经知道,曼哈顿距离是每个图块位移相对于其当前位置及其在目标状态下的索引的总和. 我在Google上四处搜寻,并发现了有关流程主题的这些堆栈: 计算曼哈顿距离 以A *为单位的曼哈顿距离 哪个返回了以下
..