用于解决N拼图的A *启发式算法的比较

时间:2017-02-23 20:20:47

标签: algorithm graph-algorithm a-star heuristics 8-puzzle

我正在尝试使用具有3种不同启发函数的A *算法来解决N难题。我想知道如何在时间复杂度方面比较每个启发式方法。我使用的启发式方法是:曼哈顿距离,曼哈顿距离+线性冲突,N-max交换。特别是8拼图和15拼图。

2 个答案:

答案 0 :(得分:1)

一般来说,N-puzzle很难找到最短的解决方案,所以无论你使用哪种启发式方法,你都不可能在它们之间找到任何复杂性差异,因为你不会被证明任何束缚的紧张。

如果你将自己限制在8-puzzle或15-puzzle中,带有任何可允许启发式的A *算法将在O(1)时间内运行,因为有一个有限(尽管很大)的棋盘位置。

答案 1 :(得分:1)

正如@Harold在他的评论中所说的那样,通过实验测试来比较启发式函数的时间复杂度。在您的情况下,为8-puzzle和15-puzzle生成一组 n 随机问题,并使用不同的启发函数解决它们。需要注意的是:

  1. 比较将始终取决于几个因素,例如硬件预测,编程语言,实施算法时的技能,......

  2. 一般来说,更明智的启发式方法总是会比不太知情的方法扩展节点,并且可能会更快。

  3. 最后,为了比较每个问题集的三个启发式算法,我建议使用平均运行时间的图形(例如每个问题重复5次),其中:

    1. 问题在x轴上按难度排序。
    2. 每个启发函数的运行时间都在y轴上(如果不能轻易看到备选方案之间的差异,可能采用对数刻度)。
    3. 以及与探索状态数量相似的图形。

相关问题