早前写了一篇关于A*算法的文章:《算法:Astar寻路算法改进》
最近在写个js的UI框架,顺便实现了一个js版本的A*算法,与之前不同的是,该A*算法是个双向A*。
双向A*有什么好处呢?
我们知道,A*的时间复杂度是和节点数量以及起始点难度呈幂函数正相关的。
这个http://qiao.github.io/PathFinding.js/visual/该网址很好的演示了双向A*的效果,我们来看一看。
绿色表示起点,红色表示终点,灰色是墙面。稍浅的两种绿色分别代表open节点和close节点:
aaarticlea/png;base64,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" alt="" />
当路径通过狭窄通道时,如果起点离通道较近,则很容易找到了终点,把起点和终点交换一下,如图:
aaarticlea/png;base64,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" alt="" />
可以注意到,被查找的节点多了不止一倍。
我们可以认为,终点在狭窄地带是最差结果,在开阔地带是最优结果。再来看看双向A*算法的寻址:
aaarticlea/png;base64,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*TiJoNjBgTMABgFWRTEUZBFQRwzwAwwA2pxk8ExAwJmAIyCLAriKMiiII4ZYAaYAbW4yeCYAQEzAEZBFgVxFGRREMcMMAPMgFrcZHDMgIAZAKMgi4I4CrIoiGMGmAFmQC1uMjhmQMAMgFGQRUEcBVkUxDEDzAAzoBY3GRwzIGAGwCjIoiCOgiwK4pgBZoAZUIubDI4ZEDADYBRkURBHQRYFccwAM8AMqMVNBscMCJgBMAqyKIijIIuCOGaAGWAG1OImg2MGBMwAGAVZFMRRkEVBHDPADDADanGTwTEDAmYAjIIsCuIoyKIgjhlgBpgBtbjJ4JgBATMARkEWBXEUZFEQxwwwA8yAWtxkcMyAgBkAoyCLgjgKsiiIYwaYAWZALW4yOGZAwAyAUZBFQRwFWRTEMQPMADOgFjcZHDMgYAbAKMiiII6CLArimAFmgBlQi5sMjhkQMANgFGRREEdBFgVxzAAzwAyoxU0GxwwImAEwCrIoiKMgi4I4ZoAZYAbU4iaDYwYEzAAYBVkUxFGQRUEcM8AMMANqcZPBMQMCZgCMgiwK4ijIoiCOGWAGmAG1uMngmAEBMwBGQRYFcRRkURDHDDADzIBa3GRwzICAGQCjIIuCOAqyKIhjBpgBZkAtbjI4ZkDADIBRkEVBHAVZFMQxA8wAM6AWNxkcMyBgBsAoyKIgjoIsCuKYAWaAGVCLmwyOGRAwA2AUZFEQR0EWBXHMADPADKjFTQbHDAiYATAKsiiIoyCLgjhmgB*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*Q1zACc5G8yZkDADIApg6AZwB5gXiIVVLB2mAFmQF3DDMBJ/iZjBgTMAJgyCJoB7AHmJVJBBWuHGWAG1DXMAJzkbzJmQMAMgCmDoBnAHmBeIhVUsHaYAWZAXcMMwEn+JmMGBMwAmDIImgHsAeYlUkEFa4cZYAbUNcwAnORvMmZAwAyAKYOgGcAeYF4iFVSwdpgBZkBdwwzASf4mYwYEzACYMgiaAewB5iVSQQVrhx*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" alt="" />
可以看到,和单向的最优结果是很接近的。
观察浅绿色寻路节点我们可以注意到,当open节点第一次接触到之后,中止了查找。
根据该思路,实现算法如下:
while (true) {
minFNode = anra.AStarUtil.findMinNode(openList);
openList.removeObject(minFNode);
if (!closedList.contains(minFNode))
closedList.push(minFNode); if (closedList.length > 500) {
return;
}
if (minFNode == null || minFNode.equals(endNode))
break;
anra.AStarUtil.search(this, minFNode, openList, closedList, endNode);
BIminFNode = anra.AStarUtil.findMinNode(BIopenList);
BIopenList.removeObject(BIminFNode);
if (!BIclosedList.contains(BIminFNode))
BIclosedList.push(BIminFNode); if (BIclosedList.length > 500) {
return;
}
if (BIminFNode == null || BIminFNode.equals(startNode))
break;
anra.AStarUtil.search(this, BIminFNode, BIopenList, BIclosedList, startNode);
for (var i = 0; i < openList.length; i++) {
for (var j = 0; j < BIopenList.length; j++) {
if (BIopenList[j].equals(openList[i])) {
BIminFNode = BIopenList[j];
minFNode = openList[i];
middleNode = minFNode;
break;
}
}
if (middleNode)
break;
}
if (middleNode)
break;
}
findMinNode:function (openList) {
if (openList.length == 0)
return null;
else if (openList.length == 1)
return openList[0];
openList.sort(function (a, b) {
return a.f() - b.f();
});
return openList[0];
},
/*搜索*/
search:function (router, node, openList, closedList, endNode) {
var nodes = this.findAroundNode(router, node);
if (nodes == null)
return;
for (var i = 0; i < 8; i++) {
if (nodes[i] == null || nodes[i].level == null)continue;
nodes[i].g = (i > 3 ? nodes[i].level[0]
: nodes[i].level[1]) + node.g;
nodes[i].h = this.caculateH(nodes[i], endNode);
if (closedList.contains(nodes[i])) {
continue;
}
if (!openList.contains(nodes[i])) {
openList.push(nodes[i]);
nodes[i].parent = node;
} else {
var idx = openList.indexOf(nodes[i]);
var n = openList[idx];
if (nodes[i].g < n.g) {
openList.remove(idx);
closedList.push(n);
nodes[i].parent = n.parent;
openList.splice(idx, 0, nodes[i]);
}
}
}
},
/*查找指定节点周围的可用节点*/
findAroundNode:function (router, node) {
if (node == null)return null;
var nodes = []; nodes[0] = ANodeFactory.create(router, node.i, node.j + 1);
nodes[1] = ANodeFactory.create(router, node.i, node.j - 1);
nodes[2] = ANodeFactory.create(router, node.i + 1, node.j);
nodes[3] = ANodeFactory.create(router, node.i - 1, node.j); nodes[4] = ANodeFactory.create(router, node.i - 1, node.j + 1);
nodes[5] = ANodeFactory.create(router, node.i + 1, node.j - 1);
nodes[6] = ANodeFactory.create(router, node.i + 1, node.j + 1);
nodes[7] = ANodeFactory.create(router, node.i - 1, node.j - 1); return nodes;
},
caculateH:function (p, endNode) {
return (Math.abs(endNode.i - p.i) + Math.abs(endNode.j
- p.j))
* p.level[0];
},