3

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

以下是正在发生的事情的一些屏幕截图:

找路好

错误的路径查找

这是我目前对 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;
    }

谢谢!

4

1 回答 1

1

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

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

于 2011-05-10T01:59:09.360 回答