【发布时间】:2014-05-13 05:20:34
【问题描述】:
我正在尝试使用 A* 寻路算法实现第二条最短路径,最好是第 n 条最短路径。我已经实现了最短路径:
while(open.length > 0) {
max = worldSize;
min = -1;
for(i in open) {
if(open[i].f < max) {
max = open[i].f;
min = i;
}
}
node = open.splice(min, 1)[0];
if(node.value === nodeEnd.value) {
path = closed[closed.push(node)-1];
do {
result.push({x: path.x, y:path.y});
} while(path = path.parent);
open = closed = astar = [];
result.reverse();
} else {
neighbors = findNeighbors(node.x, node.y);
for(i = 0; i < neighbors.length; ++i) {
path = newNode(node, neighbors[i]);
if(!astar[path.value]) {
path.g = node.g + manhattanDistance(neighbors[i], node);
path.f = path.g + manhattanDistance(neighbors[i], nodeEnd);
open.push(path);
astar[path.value] = true;
}
}
closed.push(node);
}
}
我能做什么?我在这方面的经验为零,甚至不完全理解算法(目前仍在研究)。谢谢。
【问题讨论】:
-
一定要用A*吗?
-
具有相同距离的路径是否符合第二短?