search - 寻找二维数组中两点之间的最短路径

标签 search multidimensional-array typescript

我有一个简单的游戏,我试图获得两点之间的最短路线

enter image description here

map 由二维数组 matrix: Node[][] 组成,

class Node{
   index: {
     x: number,
     y: number
   },
   isAvailable: boolean
}

该算法应返回关于节点可用性的最短路径。

例如树被标记为不可用 node.isAvailable = false
我坚持为这个矩阵实现算法

我尝试使用 迪杰斯特拉斯 算法来自 here ,但我不知道如何应用它,我做到了
const graph = new Dijkstra();

//convert the matrix (2d array) to graph
matrix.map((row) => {
  row.map((node: Node) => {
    let x = node.index.x;
    let y = node.index.y;
    graph.addVertex(x + ":" + y, {x: x, y: y});

  });
});

console.log(graph.shortestPath('0:0', '5:5'));
//the output was ['0:0'] (definitly not the answer)

如何在这个矩阵上应用算法?

P.S 这是我的全部 code

最佳答案

我使用了一种最好描述为将油漆泼洒在目标上的方法:

你用 0 标记目标方块,然后遍历邻居并将它们标记为 1,代表到目标的距离,然后遍历邻居的邻居,等等。重复这个过程,直到油漆到达你的巨魔。巨魔要做的就是开始移动到潜力最低的方格。

一旦你有多个角色需要在每个人都在移动时互相绕行,它就会变得更有趣。

关于search - 寻找二维数组中两点之间的最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40857466/

相关文章:

algorithm - 如何检查是否可以在字典中找到所有子字符串

java - 在 appengine 数据存储区上存储和搜索键和值对

c - 在二维矩阵(水平、垂直、对角线)中查找回文

reactjs - Next.js 勒纳 monrepo : Module parse failed: Unexpected token

list - Neo4j - 获取包含子节点列表的节点

ruby-on-rails-3 - Rails 搜索并重定向到另一个页面

C++ 多维数组程序在输出中显示垃圾值

java - StringTokenizer NoSuchElements

javascript - Closure 编译器导出 Typescript 类和函数

javascript - 在 TypeScript 中声明 UInt8Array 变量