Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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 分片重复N-谜题的启发式A*算法_Algorithm_Search_A Star - Fatal编程技术网

Algorithm 分片重复N-谜题的启发式A*算法

Algorithm 分片重复N-谜题的启发式A*算法,algorithm,search,a-star,Algorithm,Search,A Star,我实现了一个算法来解决N-难题。该算法将使用其他算法,如A*和启发式双向搜索。总的来说,这两种算法都给了我很好的结果:A*为一些移动超过50步的问题找到了解决方案,而我使用另一种算法来解决其他更大的问题 问题如下:我使用曼哈顿距离作为两种算法的启发式,如果电路板没有重复的瓷砖,它似乎工作得很好。例如,对于3x3,一个经典的8字谜起始板可以是1,2,3 | 4,5,6 | 7,8,0,重复的瓷砖可以是:1,1,1 | 2,3,2 | 1,1,0。但是在这种情况下(当电路板有重复的分片时),这些算法

我实现了一个算法来解决N-难题。该算法将使用其他算法,如A*和启发式双向搜索。总的来说,这两种算法都给了我很好的结果:A*为一些移动超过50步的问题找到了解决方案,而我使用另一种算法来解决其他更大的问题

问题如下:我使用曼哈顿距离作为两种算法的启发式,如果电路板没有重复的瓷砖,它似乎工作得很好。例如,对于3x3,一个经典的8字谜起始板可以是1,2,3 | 4,5,6 | 7,8,0,重复的瓷砖可以是:1,1,1 | 2,3,2 | 1,1,0。但是在这种情况下(当电路板有重复的分片时),这些算法可以工作,但并不相同,需要更多的时间并给出更大的解决方案。我修改了启发式函数,现在每个图块取到任何原始位置的最短路径,例如,如果有多个2,则每个图块将计算到其最近开始位置的曼哈顿距离,该位置有一个2

问题:有人知道解决这些问题的更好的方法吗?对于具有重复元素的问题,这一曼哈顿距离启发式仍然是可接受的吗?这是与N字谜不同的另一个问题吗


谢谢……

您能正式定义“重复元素的n字谜”吗?这不是什么“经典”的东西,所以它需要一个正式的定义,以确保我们都在谈论同一件事。抱歉耽搁了:对于“重复元素”,我的意思是重复瓷砖。例如,对于3x3,一个经典的8字谜起始板可以是1,2,3 | 4,5,6 | 7,8,0,重复的瓷砖可以是:1,1,1 | 2,3,2 | 1,1,0。这是我的一个问题:这是另一个不同于N字谜的问题吗?@RaulOtaño:请给这个问题添加解释,并添加这个问题的启发式函数到底是什么。我怀疑你确实是对的,启发式是不可接受的。曼哈顿距离的A*似乎是一个很好的解决方案。我想看看更好的。