【问题标题】:A Star Algorithm - Help on G and H partA Star 算法 - G 和 H 部分的帮助
【发布时间】:2011-08-22 02:37:49
【问题描述】:

我在让 H 和 G 正常工作时遇到了一些麻烦。发生的事情是,当我运行程序时,它有时会找到最佳路径,有时会避开到达该位置的路。

下面是一些截图:

Good path find

Bad path find

这是我目前对 F、H 和 G 的设置:

public double f(Node current, Node adj, Node goal)
{
    double f = g(current, adj) + h(current, goal);
    return f;
}

public double h(Node current, Node goal)
    {
        double dx = goal.getX() - current.getX();
        double dy = goal.getY() - current.getY();

        double h = Math.sqrt(dx*dx + dy*dy);

        return h;
    }

public double g(Node current, Node adj)
    {
        double dx = adj.getX() - current.getX();
        double dy = adj.getY() - current.getY();

        double g = Math.sqrt(Math.abs(dx) + Math.abs(dy));
        System.out.println("g " + g);
        return g;
    }

谢谢!

【问题讨论】:

  • 您的图片链接已损坏

标签: path-finding heuristics a-star


【解决方案1】:

G 值是从起点到当前节点的成本,而不仅仅是到相邻节点的成本。目前你更多的是在做贪婪的搜索,只是朝着最短的方向前进,而不是回头看你已经走了多远。

所以你得到了“从开始到当前的成本”+“(低估)从当前到目标的成本”。

【讨论】:

  • 是的,我似乎忽略了一个小细节:policyalmanac.org/games/aStarTutorial.htm
  • 您对保持G值有什么建议吗?
  • 那不是真的。根据维基百科的说法,为了使 h 可以接受,“估计成本必须始终低于或等于达到目标状态的实际成本。”这与你所说的相反。
  • @Tim 哦,伙计,对!对不起,那真的是我的记忆让我着迷,这也更有意义。上帝,永远不要在凌晨 4:00 快速写出答案。再次抱歉。
  • @abc123 只存储从节点开始的成本,并在访问新节点时将前一个节点的成本与前一个节点到下一个节点的成本相加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 2011-03-27
  • 2010-11-22
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
相关资源
最近更新 更多