Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 最小步数_Javascript_Jquery - Fatal编程技术网

Javascript 最小步数

Javascript 最小步数,javascript,jquery,Javascript,Jquery,我试图返回在二维地图上从一个点移动到另一个点时所需的最小步数 0 – cell is empty, 1 – cell is blocked, 5 – from point (A), 6 – to point (B). 0–单元格为空, 1–单元被阻塞, 5–从(A)点开始, 6–指向第(B)点。 有人能帮忙解决这个问题吗?这里有一种技术,它是宽度优先搜索的一种实现,这是一种在未加权图中寻找最短距离的标准算法 您将需要一个队列(先进先出的数据结构),我们可以使用一个数组和一个数据结构来实现该

我试图返回在二维地图上从一个点移动到另一个点时所需的最小步数

0 – cell is empty, 1 – cell is blocked, 5 – from point (A), 6 – to point (B). 0–单元格为空, 1–单元被阻塞, 5–从(A)点开始, 6–指向第(B)点。
有人能帮忙解决这个问题吗?

这里有一种技术,它是宽度优先搜索的一种实现,这是一种在未加权图中寻找最短距离的标准算法

您将需要一个队列(先进先出的数据结构),我们可以使用一个数组和一个数据结构来实现该队列,以跟踪我们访问的节点及其父节点(即我们到达的节点)。我们可以用一张物体的地图

从启动节点开始,并将其添加到队列中。然后,当队列不为空时:

  • 将节点移出队列
  • 找到它的邻居
  • 如果邻居不在父映射中,则将其添加到队列和邻居映射中
  • 重复,直到找到目的地
如果你找不到目的地,就无法到达。最后,您的父地图将允许您通过遵循节点->父轨迹,从目的地到起点跟踪步骤。您可以使用它来获取计数并创建路径

下面的代码使用一些辅助函数打印图形,并在给定节点坐标的情况下查找邻居。为了让它更有趣一点,我使用了一个迷宫,它有一个比问题中的更复杂的解决方案

//做一个稍微难一点的迷宫
var multiArr=[
['0','0','0','0','1','5','0'],
['1','0','1','0','0','1','0'],
['0','0','0','1','0','1','0'],
['1','1','0','1','0','1','0'],
['0','0','0','1','0','1','0'],
['6','1','0','1','0','0','0']
];
/*我们开始的坐标,为简单起见硬编码*/
设coord=[0,5]
/*找到给定坐标的邻域
仅返回不等于1和的值
不要离开地图的边缘*/
函数GetNeights(arr、coord){
让高度=arr.长度;
let width=arr[0]。长度;
返回[[1,0]、-1,0]、[0,1]、[0,1]。减少((a,c)=>{
设n=c.map((d,ind)=>d+coord[ind])
如果(n[0]>=0&&n[0]=0&&n[1]bfs(coord,multiArr)
到目前为止您尝试了什么?我认为您可以用一个图来近似它,然后应用Dijkstraalgorithm@CristianTraìna我首先创建了两个循环,一个用于x,一个用于y,并在if语句中开始检查路径。从那以后我不知道该怎么做proceed@CristianTraìna Dijkstra用于具有加权边的图。没有理由在这里使用它。简单的广度优先搜索就可以了。@Mark_M是的,你是对的,使用Dijkstra在计算复杂度方面没有改进,但是矩阵可以很容易地转换成一个每个链接都有
1
作为权重的图,然后只使用已经存在的算法。Mark_M谢谢你的详细解释!最后,我需要解释一下如何解决这个问题,这样我就可以在这个问题上做更详细的研究和实践了!