什么是逆序数?
比如2 4 3 1。
依次看下去,2比1大,4比3大,4比1大,3比1大。所以逆序数就是4。
所以我们得知了逆序数就是体现在一个逆字上。相比于在正常序列下1234。有多少前面的数比后面的数大的这种情况,就是逆序数了。
逆序数为什么可以判八数码的无解?
(八数码:
1 2 3
4 5 6
7 8 x)
因为如果起始状态和目标状态,如果把目标状态的x也放到右下角,如果起始状态逆序数的奇偶性和目标状态的奇偶性是一样的,那行就代表这两个状态可以互相移动到。反之,就不可以互相移动到。
(感兴趣的的人看看证明吧,不感兴趣直接用也行)
我们首先需要明白,不管哪两个数进行一次交换,逆序数的奇偶性都一定会发生变化。
比如 2 4 3 1 原来的逆序数是4,假设我们交换了2和4,那么后面的数没有被影响,2和4之间的关系调换就使得了逆序数+1。那么这种关系可以被推广吗?可以的。因为两个数交换,那么仅仅看这两个数之间,他们的大小顺序肯定变换了,所以逆序数仅仅通过他们来判断肯定是+1或者-1了。与此同时还要看看他们之间顺序的改变对其他数有没有影响,显然如果这个影响发生了偶数次,就能验证我们的结论了。
这里我没看官方的结论,我只是自己简单验证了一下。