【问题标题】:How can I compute a route/path of a certain length between two places?如何计算两个地方之间一定长度的路线/路径?
【发布时间】:2014-02-02 23:20:06
【问题描述】:

给定一个区域中的两个地方,我如何计算连接两个地方的一定距离(距离作为参数给出)的路径。理想情况下,生成的路径应该由访问不超过一次的道路组成。

我了解到这个问题可以看作是一个图问题,其中地图中的道路代表图的边缘,交叉点/交叉点代表图的节点。由此可以将问题简化为为图中的任意两个节点找到一定长度的路径。

我解决这个问题的方法之一可以分为两个步骤:

  1. 查找两个节点之间的最短路径(使用 A* 或类似算法)。
  2. 扩展/扩展从 A* 返回的最短路径,使其足够长。

现在,我不确定这种方法是否值得采用,或者是否存在更好的方法?另外,我还没有遇到任何可以让我扩展路径的方法 - 是否有任何特定技术可以实现这一点?

【问题讨论】:

    标签: graph routing a-star


    【解决方案1】:

    我的想法是使用临时启发式函数。目标状态应该是通过长 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
    

    我不确定这个启发式是否一致,但您可以尝试使用类似的方法并检查结果。 如果此搜索有效,它也应该是最佳的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      相关资源
      最近更新 更多