You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Best First Search求解网格s到g首路径的问题咨询

基于Best First Search(曼哈顿距离+多路径剪枝)的网格路径求解步骤

核心纠正:曼哈顿距离就是你的启发值

你之前误以为没有启发值是错误的,曼哈顿距离是Best First Search在这里的核心评估函数,公式为:
曼哈顿距离 = |当前格子x坐标 - 终点g的x坐标| + |当前格子y坐标 - 终点g的y坐标|
这个值越小,说明当前格子离终点越近,是优先级队列排序的依据。

完整执行流程(含多路径剪枝)

  • 初始化操作

    1. 把起点s放入优先级队列(队列按节点的曼哈顿距离从小到大排序,距离越小越先被取出)。
    2. 维护一个已访问集合,初始时把s加入其中(剪枝用,防止重复处理同一格子)。
    3. 每个节点要记录自身坐标+从s到它的路径信息。
  • 循环处理队列

    1. 取出队列头部的节点(当前曼哈顿距离最小的节点)。
    2. 如果这个节点是终点g,直接返回它记录的路径——这就是首次找到的符合要求的路径。
    3. 生成当前节点的上下左右四个相邻节点:
      • 筛掉超出网格边界、属于阴影禁区的节点。
      • 筛掉已经在已访问集合里的节点(多路径剪枝:既然之前已经处理过这个格子,说明有更早/更优的路径到达它,无需再处理)。
      • 给每个有效相邻节点计算曼哈顿距离,把节点+路径信息加入优先级队列,同时将该节点标记为已访问。
    4. 重复上述步骤,直到找到终点或队列为空(无路径)。

关键注意点

  • Best First Search的核心是每次优先处理离终点最近(曼哈顿距离最小)的节点,所以首次到达终点的路径就是算法给出的结果。
  • 多路径剪枝的核心是:一旦某个格子被加入已访问集合,就不再处理任何后续到达它的路径,避免冗余计算和绕路。

内容的提问来源于stack exchange,提问作者Fabian Shamano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:32:41