我的教授给了我一个简单的编程任务——至少我是这么认为的。基本原理很简单:我有一个n>20000个不同房间的随机迷宫我想“嘿,太好了,让我们用一个*来计算最佳路线”。现在我遇到了以下问题:
我教授的java程序将房间随机化为一个大数组,保存X房间的所有后续房间。示例:
房间[2427][{42},{289},{2833}//2427房间在42、289和2833房间旁边-这3个房间可以从2427房间进入。
A*需要一个好的启发来衡量每个房间的以下成本。例子:
后续房间的总成本=当前房间的完工成本+当前房间到后续房间的成本+估计的休息成本。
“估计的休息费用”是问题所在。如果我有一个二维数组,我可以很容易地使用空气距离从a到b作为一个基本的启发,因为将有至少X成本(空气距离从a到b)但是我现在不能用,因为我不知道房间在哪里!它们是完全随机的,我不知道23878房间在哪里。
我还能用别的方法吗?我不能把每个开放房间的预计休息费用都设为0,可以吗?有更好的方法吗?
谢谢!

最佳答案

使用0作为启发式应该是可行的。0-启发式实际上是a*算法的一个特例,也称为dijkstra算法。

关于algorithm - 对A *算法使用不同的启发式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20294618/

10-11 19:14