深入理解逆序数+八数码原理

什么是逆序数?

比如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了。与此同时还要看看他们之间顺序的改变对其他数有没有影响,显然如果这个影响发生了偶数次,就能验证我们的结论了。

这里我没看官方的结论,我只是自己简单验证了一下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值