Yuka js库中的search
函数使用广度优先搜索(BFS)算法来搜索从给定起始点到目标点的路径。该函数返回一个数组,其中包含从起始点到目标点的一系列节点,这些节点按照它们被探索的顺序排列,从而组成了路径。
search(start, goal, nodeNeighbors)
{x: 0, y: 0}
。该函数返回一个数组,其中包含从起始点到目标点的一系列节点。这些节点按它们被探索的顺序排列,从而组成了路径。如果没有找到路径,则返回一个空数组。
以下示例演示如何使用search
函数在二维网格中搜索路径:
// 定义二维网格
let grid = [
[0, 0, 0, 0],
[1, 1, 0, 1],
[0, 0, 0, 0],
[0, 1, 1, 0]
];
// 定义节点的邻居函数
function getNeighbors(node) {
let x = node.x;
let y = node.y;
let neighbors = [];
// 检查节点周围是否有可行的邻居
if (grid[y-1] && grid[y-1][x] === 0) {
neighbors.push({x: x, y: y-1}); // 上方节点
}
if (grid[y+1] && grid[y+1][x] === 0) {
neighbors.push({x: x, y: y+1}); // 下方节点
}
if (grid[y][x-1] === 0) {
neighbors.push({x: x-1, y: y}); // 左侧节点
}
if (grid[y][x+1] === 0) {
neighbors.push({x: x+1, y: y}); // 右侧节点
}
return neighbors;
}
// 定义起始节点和目标节点
let start = {x: 0, y: 0};
let goal = {x: 3, y: 3};
// 使用search函数寻找路径
let path = search(start, goal, getNeighbors);
console.log(path); // 输出: [{x: 0, y: 0}, {x: 0, y: 1}, {x: 0, y: 2}, {x: 1, y: 2}, {x: 2, y: 2}, {x: 2, y: 3}, {x: 3, y: 3}]
在以上的示例中,search
函数使用BFS算法在二维网格中搜索从起点到终点的路径,并返回一个节点数组,该数组按访问顺序排列,并组成了路径。