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

前言

八数码问题也称为九宫问题。在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,但是逆序数的奇偶不变。

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Intern 一个有序序列有N个数,随机替换其中k个,求复杂度< O(NlogN)的算法使替换后数组重新有序。St...
    WinKKKKy阅读 3,856评论 0 0
  • 本章主要介绍n阶行列式的定义、性质及其计算方法。此外还要介绍用n阶行列式求解n元线性方程组的克拉默(Cramer)...
    勇于自信阅读 11,447评论 0 2
  • 总结一下网易2018内推的测试题,我看python的比较少,所以献上自己的low代码,都AC过的,大毛病应该没有,...
    mrlevo520阅读 10,376评论 2 4
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 11,019评论 0 5
  • 昨天,在回家的路上,坐在车里悠哉悠哉地看着三毛的《撒哈拉沙漠的故事》,我被里面的内容深深吸引住了,尽管上学时...
    夜阑晓语阅读 9,200评论 2 9