Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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
Algorithm 容许启发式曼哈顿距离_Algorithm_Artificial Intelligence_A Star_Heuristics - Fatal编程技术网

Algorithm 容许启发式曼哈顿距离

Algorithm 容许启发式曼哈顿距离,algorithm,artificial-intelligence,a-star,heuristics,Algorithm,Artificial Intelligence,A Star,Heuristics,我最近开始了一门人工智能的入门课程,我被指派在Python中实现一个可接受的启发式函数,用*搜索解决15个难题 我实现了曼哈顿距离和其他一些启发式方法。Python代码运行得很好,该算法实际上解决了这个问题,但我怀疑曼哈顿距离启发法是否适用于这个特定问题 根据理论,如果启发式永远不会高估实现目标的成本,那么启发式是可以接受的。这意味着启发式是乐观的,它返回的成本永远不会大于实际成本 初始状态为以下时(0表示空插槽): 我的程序用5次移动解决了这个问题,但每个错放瓷砖的曼哈顿距离之和等于10,这是

我最近开始了一门人工智能的入门课程,我被指派在Python中实现一个可接受的启发式函数,用*搜索解决15个难题

我实现了曼哈顿距离和其他一些启发式方法。Python代码运行得很好,该算法实际上解决了这个问题,但我怀疑曼哈顿距离启发法是否适用于这个特定问题

根据理论,如果启发式永远不会高估实现目标的成本,那么启发式是可以接受的。这意味着启发式是乐观的,它返回的成本永远不会大于实际成本

初始状态为以下时(0表示空插槽):

我的程序用5次移动解决了这个问题,但每个错放瓷砖的曼哈顿距离之和等于10,这是实际成本的两倍。因此,实际成本远低于估计成本。这是否意味着启发式是不可接受的,还是我的逻辑有问题

我曾考虑只计算空区块的曼哈顿距离,但如果空区块位于正确位置,但其他区块错位,则会导致估计成本为零的状态。

启发式方法是可行的,因为它独立地考虑每个区块(而事实上,区块相互干扰)。所以这是乐观的

在您的示例中,所有分幅距目标位置的距离之和为5(分幅5、9、10、11、15各需要移动一次)


您还没有向我们展示您的逻辑,那么我们应该如何评估它?我对代码没有任何问题。我的问题是一个理论问题。这个问题可以用五个步骤来解决。每次向上、向下、向右或向左移动空磁贴时。解决问题的五个步骤是:下,右,右,下,右。但是如果你将启发式应用到初始状态,它会返回10,这是实际成本的两倍。根据理论,它应该小于实际成本。计算曼哈顿距离不需要代码。感谢您的快速回复;)在我看来,在你的例子中,曼哈顿距离的总和实际上是5。你是怎么得到10的?@j_random_hacker我怀疑他们增加了移动空瓷砖的成本。我认为空瓷砖的成本也需要计算。谢谢你的澄清!谢谢,我还增加了移动空瓷砖的费用
1  2  3  4
0  6  7  8
5  9  10 12
13 14 11 15