让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;
}
谢谢!
答案 0 :(得分:1)
G值是从开始到当前节点的成本,而不仅仅是相邻节点的成本。目前你正在做一个贪婪的搜索,只是在最短的方向前进,而不是回顾你已经走了多远。
所以你得到“从开始到现在的成本”+“(低于)从当前到目标的估计成本”。