常见的寻路算法包括深度优先搜索、广度优先搜索、迭代加深、双向广度优先、A*、IDA*和JPS等。 总的来说,这些寻路算法各有优缺点,适用于不同的场景和需求。
广度优先算法
function bfs(graph, startNode) {
let queue = [startNode];
let visited = new Set();
while (queue.length > 0) {
let node = queue.shift();
if (!visited.has(node)) {
visited.add(node);
console.log(node); // 或者你可以在这里处理节点,例如将其添加到结果数组中
let neighbors = graph[node];
for (let neighbor of neighbors) {
if (!visited.has(neighbor)) {
queue.push(neighbor);
}
}
}
}
}
深度优先算法
function dfs(node, callback) {
if (!node) return;
// 访问当前节点
callback(node);
// 遍历子节点
for (let i = 0; i < node.children.length; i++) {
dfs(node.children[i], callback);
}
}