星形算法 - G和H部分的帮助

时间:2011-05-10 01:52:03

标签: path-finding heuristics a-star

让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;
    }

谢谢!

1 个答案:

答案 0 :(得分:1)

G值是从开始到当前节点的成本,而不仅仅是相邻节点的成本。目前你正在做一个贪婪的搜索,只是在最短的方向前进,而不是回顾你已经走了多远。

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