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