Arrays 数组排序上的A*容许启发式

Arrays 数组排序上的A*容许启发式,arrays,algorithm,sorting,Arrays,Algorithm,Sorting,我正试图解决这样一个问题的A*可接受启发式- 我有一组数字 我只能交换两个相邻的号码 我需要解决它的最低数量的交换 有谁能帮我找到这个问题的可行的启发式方法吗 提前感谢您的帮助。解决此问题的一个好方法是计算数组中的反转数 反转是指ia[j](即该对顺序不正确) 有一种O(nlogn)方法通过mergesort计算反演数(有关某些方法的说明,请参阅) 这是一个很好的启发,因为倒数的数量给出了到目标的精确距离。总有一种可能的移动方式可以将反转次数减少1。进行此类移动将以最少的步数对阵列进行排序 这是

我正试图解决这样一个问题的A*可接受启发式-

我有一组数字

我只能交换两个相邻的号码

我需要解决它的最低数量的交换

有谁能帮我找到这个问题的可行的启发式方法吗


提前感谢您的帮助。

解决此问题的一个好方法是计算数组中的反转数

反转是指ia[j](即该对顺序不正确)

有一种O(nlogn)方法通过mergesort计算反演数(有关某些方法的说明,请参阅)


这是一个很好的启发,因为倒数的数量给出了到目标的精确距离。总有一种可能的移动方式可以将反转次数减少1。进行此类移动将以最少的步数对阵列进行排序

这是可行的,但是如果启发式的时间与您试图解决的问题所花费的时间相同,那么它是毫无意义的。例如,您可以只获取顺序不正确的相邻对的数量。这个数总是小于(或等于)反演数,所以它也是允许的。