草庐IT

javascript - A* 算法 : closed list contains too many elements/too large

我目前正在用JavaScript实现A*算法。但是,我遇到了一个问题:我的closedList似乎太大了。这是输出的屏幕截图:什么会导致这个问题?我的启发式计算有误吗?Node.prototype.getHeuristic=function(pos0,pos1){//ManhattenDistancevarhorizontalDistance=Math.abs(pos1.x-pos0.x);varverticalDistance=Math.abs(pos1.y-pos0.y);returnhorizontalDistance+verticalDistance;}还是我在这个方法中理解/

javascript - 一种立方体曲面星形寻路启发式算法

我正在构建一个snakegame在立方体的表面上播放。目前它使用Dijkstra算法进行寻路。尽管对集合和优先级队列数据结构进行了优化,但它仍然有点太慢了。当蛇吃掉食物并开始寻找新食物时,您会注意到延迟。我试图让它改用A*,但找不到好的启发式算法。在具有4个运动方向的平面网格上,我会使用曼哈顿距离。我试过使用3DManhattan距离abs(dx)+abs(dy)+abs(dz)但没有成功,原因很简单:对于蛇来说,游戏世界真的是6grids(correspondingtothefacesofthecube)具有不寻常的环绕属性。在代码中,每个方block都存储在一个grid[15][1

c# - 在后面的代码中应用 Grid Star Size

我如何以编程方式构建这段XAML?动态解析和构造控件是否有优雅的解决方案?我正在尝试做某事:RowDefinitionnewRow=newRowDefinition();newRow.Height=newGridLength(10);newGrid.RowDefinitions.Add(newRow);但是我如何分配一个*符号呢?寻找解决这个问题的任何想法!谢谢! 最佳答案 您可以使用Grid.Star单位类型newRow.Height=newGridLength(1,GridUnitType.Star);您还可以使用XamlRea

javascript - 如何在 A* 图形搜索结果中拉直不需要的转弯?

我一直在研究早期90'sadventuregames的JavaScript实现。并特别绘制一条从英雄站立的地方到玩家点击的位置的路径。我的方法是首先确定是否可以绘制一条海峡线(没有障碍物),如果不能,则使用BrianGrinstead's搜索一条清晰的航路点路径。优秀javascript-astar.然而,我面临的问题是路径(而优化将转向用户认为无意的空间。这是我正在谈论的一个经典示例(绿色路径是生成的路径,红点是路径方向改变的每个转弯处):现在我知道A*只能保证返回一条不能更简单的路径(就步骤而言),但我正在努力实现权重转换的启发式方法。这是一张图片,显示了另外两条同样简单的路径(步

java - 节点间距离不规则的 A* 算法启发式

我目前正在研究A*Algorithm的实现两个节点之间的距离不规则。包含节点的图是有向加权图。每个节点都至少连接到一个其他节点,也可能存在不同距离的对称连接。节点只是一个标签,不包含任何特殊信息我需要的是一种启发式方法,以尽可能准确地确定从任何节点A到另一个节点B的最短路径。我尝试使用一种启发式方法来返回到节点最近邻居的距离,但当然这不如完全没有启发式方法有效(=Dijkstra)。我的A*算法实现主要由2个类组成,算法本身的类(AStar)和节点的类(Node)。该代码主要基于维基百科伪代码。AStar.java源代码publicclassAStar{privateAStar(){}

java - A* 中的曼哈顿距离

我正在使用A*搜索算法并使用曼哈顿距离作为启发式算法来实现NxN难题求解器,但我遇到了一个奇怪的错误(?),我无法解决这个问题.考虑这些谜题(0元素是空格):(初始)102754863(目标)123456780从初始状态达到解决方案的最小步数是11。但是,我的求解器在17步内达到了目标。这就是问题所在-我的解谜器主要以正确的(最小)步数解决了可解的谜题,但对于这个特定的谜题,我的解谜器超过了最小步数,我想我已经确定了问题在这种特殊情况下错误计算曼哈顿距离。在此link您可以看到我的求解器在做什么(在右侧)以及一个经过反复测试的求解器在做什么(BrianBorowski的优秀求解器,可用

8.7K+ Star!快速搭建个人在线工具箱

大家好,我是Java陈序员。作为一名“CV工程师”,每天工作中需要用到各种各样的工具来提高效率。之前给大家安利过一款离线的开发工具集合,今天给大家推荐一款在线的开发工具箱,功能更加齐全。开发者的瑞士军刀!一款适用于开发者的工具集合!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍it-tools——一个为开发人员提供方便的在线工具集合的开源项目,包含了加密、转换器、Web、开发、图片和视频等十几种工具,功能齐全,部署方便。it-tools是基于Vue3实现的,采用NaiveUI组件库开发,支持Docker私有化部署。安装部署Docke

java - 基于多边形的寻路

我已经用Java实现了一个基于网格的基本A*寻路器。我想制作一个基于导航网格/多边形的探路者,但我遇到的问题是:如果我找到橙色路线,那么我可以使用类似afunnelalgorithm的东西拉直它以获得所需的路线(蓝色)。但是,如果程序计算每条路线(红色和橙色)的成本,那么它会说红色路线最便宜。我该如何编写我的A*算法和/或创建我的网格,以免发生这种情况。 最佳答案 第15章ComputationalGeometry:AlgorithmsandApplications正是描述并解决了这个问题:自由空间可以用梯形图来描述,但是使用梯形图

强!1.8k star,推荐一款将Requests和Selenium无缝衔接的爆款工具!

今天给大家推荐一款自动化测试工具库:Requestium1、介绍Requestium是一个基于Requests库的Python库,概况来说,它是将Requests、Selenium和Parsel的功能合并为一个用于自动化Web操作的集成工具,特别是针对网络数据采集、Web自动化测试等任务提供了极大的便利。它可以让你在一个统一的接口中使用Requests的简便性和Selenium的强大功能。2、核心功能和特点Requestium是一个基于Requests库和SeleniumWebDriver的Python库,它提供了一些额外的功能和工具,使得进行Web请求和自动化测试变得更加简单和灵活。以下是R

java - A* 算法无法正常工作

我的A*算法实现需要一些帮助。当我运行算法时,它确实找到了目标,但路径肯定不是最短的:-P这是我的代码,请帮我找出错误!我认为这可能是我的问题的重建路径,但我不确定。publicclassPathfinder{publicListaStar(Nodestart,Nodegoal,WeightedGraphgraph){Nodex,y;inttentative_g_score;booleantentative_is_better;FScoreComparatorcomparator=newFScoreComparator();Listclosedset=newArrayList();Qu