Java 谜题中a*搜索算法的深度
我正在尝试使用*搜索算法实现一个4*4解谜器。我知道总距离f(n)=g(n)+h(n),其中g(n)是从根到当前节点的路径成本。但是,在设置每个节点的总成本时,我对如何计算每个级别的深度感到困惑。希望有人能解释一下 A*算法实际上没有“深度”的概念。相反,我们的想法是记录从一开始到所有访问节点的成本。访问新节点时,到达新节点的成本为当前节点的成本+从当前节点到新节点的成本Java 谜题中a*搜索算法的深度,java,algorithm,sliding-tile-puzzle,Java,Algorithm,Sliding Tile Puzzle,我正在尝试使用*搜索算法实现一个4*4解谜器。我知道总距离f(n)=g(n)+h(n),其中g(n)是从根到当前节点的路径成本。但是,在设置每个节点的总成本时,我对如何计算每个级别的深度感到困惑。希望有人能解释一下 A*算法实际上没有“深度”的概念。相反,我们的想法是记录从一开始到所有访问节点的成本。访问新节点时,到达新节点的成本为当前节点的成本+从当前节点到新节点的成本 总成本启发式仅用于1个目的:选择下一个节点来考虑。正如您所说,它通常是节点的成本+目标的估计成本 关于代码的更改,我建议您要
总成本启发式仅用于1个目的:选择下一个节点来考虑。正如您所说,它通常是节点的成本+目标的估计成本
关于代码的更改,我建议您要么将“分数”存储为节点的成本(忽略估计值),并在排序比较器中计算启发式,要么将成本和估计值分别存储(如果由于任何原因计算估计值非常昂贵).在这种情况下,节点的成本是从根到特定节点的曼哈顿距离吗?@MENGXINWANG否。节点的成本是从根到节点的最短路径的距离。它可能不是最短路径,因为尚未检查所有节点。曼哈顿距离是从点到线的最短距离。据我所知,它在A*中不起作用。