Graph 如何计算两地之间一定长度的路线/路径?
给定一个区域中的两个位置,如何计算连接这两个位置的具有特定距离(该距离作为参数给出)的路径。理想情况下,生成的路径应由访问次数不超过一次的道路组成 我了解到,这个问题可以看作是一个图形问题,其中地图中的道路表示图形的边缘,交叉点/交叉点表示图形的节点。由此,问题可以简化为为为图中任意两个节点寻找一条特定长度的路径 我解决这个问题的方法之一可以分为两个步骤:Graph 如何计算两地之间一定长度的路线/路径?,graph,routing,a-star,Graph,Routing,A Star,给定一个区域中的两个位置,如何计算连接这两个位置的具有特定距离(该距离作为参数给出)的路径。理想情况下,生成的路径应由访问次数不超过一次的道路组成 我了解到,这个问题可以看作是一个图形问题,其中地图中的道路表示图形的边缘,交叉点/交叉点表示图形的节点。由此,问题可以简化为为为图中任意两个节点寻找一条特定长度的路径 我解决这个问题的方法之一可以分为两个步骤: 查找两个节点之间的最短路径(使用*或类似算法) 扩展/扩展从*返回的最短路径,使其足够长 现在,我不确定这种方法是否值得追求,或者是否存在更
现在,我不确定这种方法是否值得追求,或者是否存在更好的方法?此外,我还没有遇到任何方法可以让我扩展路径-有什么具体的技术可以实现这一点吗?我的想法是使用一个特殊的启发式函数。目标状态应该是以路径长L到达目的地(因此,如果以过短的路径到达目的地,则目标测试不满足,算法将继续) 对于每个其他节点,启发式必须给出一个值,该值是距离目的地的预期距离和仍然必须行驶的所需长度的组合
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
我不确定这个启发是否一致,但你可以尝试类似的方法并检查结果。
如果这个搜索有效,它也应该是最优的
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