证明八数码问题游戏的状态可以划分为两个不相交的集合,每个集合中的状态经过任意多步行动都不能转化成另一个集合中的状态


前言

八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。

如何证明八数码问题无解

用一个一位数组代替二维的3*3棋盘,用0代替空白格,即
1 2 3 4 5 6 7 8 0
还可以写成
2 1 3 4 5 6 7 8 0
在上面两个例子中,第一个是有解的,第二个无解。

每个数字前面比它大的数字的个数的和称为这个状态的逆序数。
现在来看两个例子中,除去数字0之外的逆序数:
在第一个例子1 2 3 4 5 6 7 8 0中,它的逆序数为偶数(0个);
在第二个例子2 1 3 4 5 6 7 8 0中,它的逆序数为奇数(1个)。

在棋盘中,每个数字只能横着或竖着和空格交换:
如果是横着交换,在一维数组中体现为0和数字的交换,逆序数不会产生变化;
如果是竖着交换,在一维数组中体现为0和选择的数字相隔两位数字的交换,逆序数会加2或减2,但是逆序数的奇偶不变。

所以不论怎么交换,一维数组中的逆序数的奇偶不变,所以第一个例子的情况不会转化为第二个例子的情况。

八数码的状态也会因为奇偶分为两部分,一部分有解,一部分无解。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值