Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谜题中a*搜索算法的深度_Java_Algorithm_Sliding Tile Puzzle - Fatal编程技术网

Java 谜题中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个目的:选择下一个节点来考虑。正如您所说,它通常是节点的成本+目标的估计成本 关于代码的更改,我建议您要

我正在尝试使用*搜索算法实现一个4*4解谜器。我知道总距离f(n)=g(n)+h(n),其中g(n)是从根到当前节点的路径成本。但是,在设置每个节点的总成本时,我对如何计算每个级别的深度感到困惑。希望有人能解释一下

A*算法实际上没有“深度”的概念。相反,我们的想法是记录从一开始到所有访问节点的成本。访问新节点时,到达新节点的成本为当前节点的成本+从当前节点到新节点的成本

总成本启发式仅用于1个目的:选择下一个节点来考虑。正如您所说,它通常是节点的成本+目标的估计成本


关于代码的更改,我建议您要么将“分数”存储为节点的成本(忽略估计值),并在排序比较器中计算启发式,要么将成本和估计值分别存储(如果由于任何原因计算估计值非常昂贵).

在这种情况下,节点的成本是从根到特定节点的曼哈顿距离吗?@MENGXINWANG否。节点的成本是从根到节点的最短路径的距离。它可能不是最短路径,因为尚未检查所有节点。曼哈顿距离是从点到线的最短距离。据我所知,它在A*中不起作用。