我只使用曼哈顿启发式和曼哈顿和线性冲突启发式为 15 谜题编写了 A-star 算法。
我的问题是,对于某些特定的谜题实例,线性冲突是否会导致创建和探索比单独使用 a-Star 的曼哈顿启发式更多的节点?
由于我尝试通过我的程序解决大多数拼图实例,这些实例需要 <50 次移动,只需使用曼哈顿即可在给定内存的适当时间内解决,并将其与线性冲突结合作为启发式更快地解决,因此需要 >50 次移动的实例会导致程序运行无限期地挂断我的机器,但是对于一个需要 42 次移动的特定问题,我的程序使用曼哈顿在约 8 秒内解决了问题,但在相同的情况下使用线性冲突会导致程序无限期运行并挂断我的机器。
我一遍又一遍地检查我的代码,在我的线性冲突或曼哈顿启发式代码中找不到错误。因此,这个一般性问题要确定。
以下实例导致上述问题。
2,8,7,11 //Takes 42 Moves to solve
5,0,4,15
13,9,14,3
1,10,6,12