【问题标题】:Implementing A-Star algorithm. Help please?实现A-Star算法。请帮忙?
【发布时间】:2013-10-20 11:54:57
【问题描述】:

我正在尝试用 JavaScript 为我的寻路机器人实现 A* 算法。唯一的问题是我不明白找到所有相邻的正方形是什么意思。我正在使用曼哈顿距离公式,因为我不能让我的机器人斜着走。这是我的代码(暂时):

var open = new Array();
var closed = new Array();
start = [9,18]; //do not take this literally
goal = [1,0]; //again don't
open.push(start);
while (open.length != 0) {
    for(var x = 0; x < open.length; x++) {
        heuristicValue[x] = computeHeuristicV(maplayout, start[0], start[1], open[x][0], open[x][1], goal[0], goal[1]);
    }
    minimum = Math.min(100000,heuristicValue[0]);
    for(var x = 1; x < open.length; x++) {
        minimum = Math.min(minimum, heuristicValue[x]);
    }
    for(var x = 0; x < open.length; x++) {
        if (minimum == heuristicValue[x]) {
            current = [open[x][0], open[x][1]];
        }
    }
    closed.push(current);
    //INCOMPLETE
}

computeHeuristicV 函数计算上述代码中的启发式值。

【问题讨论】:

    标签: javascript algorithm bots a-star heuristics


    【解决方案1】:

    “所有相邻方格”表示路径上每个可能的下一跳。

    【讨论】:

      【解决方案2】:

      A* 是一个很好掌握和使用的算法。两个关键要素是寻找邻居和启发式。启发式方法用于估计您当前位置与终点之间的距离。此外,“查找所有相邻方格”的语句引用了邻居函数。例如,您可能有以下情况:

      var heuristic = function(state) {
          var endLocation = MyGame.getEndLocation();
          return Math.abs(state.x - endLocation.x) + Math.abs(state.y - endLocation.y)
      }
      
      var neighbors = function(state){
          var neighborStates = [];
          MyGame.setPlayer({
              x: state.x,
              y: state.y
          });
          neighborStates.push(MyGame.moveUp.getState());
          neighborStates.push(MyGame.moveRight.getState());
          neighborStates.push(MyGame.moveDown.getState());
          neighborStates.push(MyGame.moveLeft.getState());
          return neighborStates;
      }
      

      因此,获取“相邻方块”只是询问您相邻的州或选项。个人插件:我刚刚在这里编写了一个简单的 a-star 算法:https://github.com/tssweeney/async-astar。阅读说明可能有助于您更好地理解问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-22
        • 1970-01-01
        • 1970-01-01
        • 2011-03-27
        • 1970-01-01
        • 2011-05-09
        • 1970-01-01
        相关资源
        最近更新 更多