考虑到一个区域中的两个位置,我如何计算连接两个位置的具有一定距离的路径(距离作为参数给出)。理想情况下,生成的路径应由不超过一次访问的道路组成。
我了解到这个问题可以看作是一个图形问题,其中地图中的道路代表图形的边缘,交叉点/交叉点代表图形的节点。由此可以将问题简化为为图中任何两个节点找到一定长度的路径。
我解决这个问题的方法之一可分为两个步骤:
现在,我不确定这种方法是否值得追求,或者是否存在更好的方法?此外,我没有遇到任何可以让我扩展路径的方法 - 是否有任何特定的技术可以实现这一目标?
答案 0 :(得分:0)
我的想法是使用ad-hoc启发式功能。目标状态应该以路径长L到达目的地。(因此,如果您通过路径太短到达目的地,则不满足目标测试并且算法将继续)。
#goal state
if (state == dest and curr_length == required_length)
return path
对于每个其他节点,启发式必须给出一个值,该值是目的地的预期距离和必须经过的所需长度的组合。
h(state, curr_length):
dist = manhattan_distance(state, goal)
#must use the abs instead if curr_length > required_length this value becomes
#negative and this node gets a wrong result
len = abs(required_length - curr_length)
return dist + len
我不确定这种启发式是否一致,但您可以尝试这样的事情并检查结果。 如果此搜索工作也应该是最佳的。