我正在尝试寻找具有特定起点和放大器的迷宫中的最短路径。结束点,迷宫被建成一个2D表(行和列),当你在表中的某些单元格中无法通过时(“墙”), 到目前为止,A *算法运行良好,当特定细胞具有更好'重量'然后其他细胞时问题就开始了。 例如,采取3 * 3迷宫:
所以通过A *它甚至不会让1 * 3细胞了解它有更好的重量!
是否有解决该问题的方法?
谢谢!
答案 0 :(得分:4)
创建代表迷宫G=(V,E)
的图表。
使用权重函数为图中的边创建一个新的加权图:
w(u,v) = 1 if v is "not important"
1-1/(n+1) if v is important.
(n is the total number of vertices/cells in your maze).
现在,请注意,通过v
的路径比不通过它的路径“更好”(更短),但仍然更短(远距离)路径。
您现在可以使用A *修改启发式功能:
h'(v) = h(v)*[1-1/(n+1)] [where h(v) is the original admissible heuristic you had]
注意:忽略评论,如果您有一个可接受的启发式功能,Dijsktra的算法不如A *,而且看起来像是这样。