N皇后问题 - 构造法原理与证明: 时间复杂度O(1)

版权声明:[ EXP技术分享博客(http://exp-blog.com) ] 版权所有,转载请注明出处: https://blog.csdn.net/lyy289065406/article/details/78955101

M皇后问题 - 构造法原理

[原] E.J.Hoffman; J.C.Loessi; R.C.Moore

The Johns Hopkins University Applied Physics Laboratory

[译] EXP 2017-12-29


本文全公式无图版http://exp-blog.com/2018/06/16/pid-429/
本文完整原文下载(转载请注明出处,仅供分享学习,严禁用于商业用途)



[写在前面]

  这是现在网上流传的一套关于M皇后问题的构造法公式,但是这套公式是怎么得来的,却鲜有人知。而文本会详细阐述这套公式的推导过程:
这里写图片描述


1. 前言

  文本核心内容主要译自E. J. Hoffman、J. C. Loessi 和R. C. Moore发表于Mathematics Magazine《数学杂志》上的学术论文《Constructions for the Solution of the m Queens Problem》(已被美国数学协会Mathematical Association of America公开),具体期数为Vol. 42, No. 2 (Mar., 1969), pp. 66-72。

  该文献可从以下途径购买:
   http://www.jstor.org/stable/2689192
   http://links.jstor.org/sici?sici=0025-570X%28196903%2942%3A2%3C66%3ACFTSOT%3E2.0.CO%3B2-9
  该文献的英文原文链接:http://penguin.ewu.edu/~trolfe/QueenLasVegas/Hoffman.pdf
  该文献的CSDN下载地址:http://download.csdn.net/download/lyy289065406/10184847


2. 问题背景

  M皇后问题: 在M×M格的国际象棋上摆放M个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上。
  根据场景,又有三种衍生问题:
  ① 共有多少种摆法(即有多少种可行解)
  ② 求出所有可行解
  ③ 求任意一个可行解

  问题① 属于 禁位排列 问题,目前是存在通项公式直接求解的。
  问题② 属于 搜索 问题,在网上也有多种解法,主流是 回溯法(另有衍生的位运算变种算法),但不管如何优化,回溯法都有一个致命的问题:M值不能过大(一般M=30已是极限)。
  问题③ 属于 问题② 的子集,因此很多人的切入点依然是回溯法,也有启发式算法的解法:如遗传算法、还有刘汝佳在《算法艺术与信息学竞赛》提出的启发式修补算法。启发式算法在M<10000左右都是可解的,但是因为启发式算法均存在随机性,收敛速度视不同的收敛因子而变化(我看过某篇论文称启发式算法在M=10000时的耗时等价于回溯法M=30的耗时)。

  但早在1969年, 问题③ 的解就被E. J. Hoffman、J. C. Loessi 和R. C. Moore找到了潜在的数学规律,通过推导出数学公式,利用 构造法 使得该问题可在O(1) 的时间复杂度得到解


3. 译者的话

  ① 由于原文使用了“m皇后”进行描述,所以本文也使用“m皇后”进行描述。我这里就不调整为大多数人习惯的“n皇后”了,避免某些数学公式参数混淆。
  ② 原文写得有点艰涩,有些中间步骤是跳过了。我就加上自己的理解做了意译,并补上了跳过的步骤和图示,但是核心的推导思路和步骤不会修改。
  ③ 原文首先给出了3个构造式(其实就是m皇后问题的通解式),然后以此为结论展开了一系列的推导证明这3个构造式是正确的。但是这3个构造式真正是怎么得来,原作者并没有说,估计是原作者做了大量的演绎、从m皇后的特解找到了潜在规则所总结出来的通解。


4. 译文:m皇后问题的构造解法

 4.1. 数学模型定义

  m皇后问题最初是由Gauss(高斯)提出的,该问题描述如下:
  是否有可能在一个m×m的国际棋盘上放置m个皇后使得她们无法互相攻击?(注:皇后是国际象棋中的一种棋子,她可以对横、竖、斜三个方向的棋子发起攻击)
这里写图片描述
这里写图片描述
  至此,m皇后问题的解模型可以定义为如下:
  放置m个皇后到一个m×m的方格矩阵,使得皇后们的所在的方格同时满足下面所有条件:
  ① 行编号唯一
  ② 列编号唯一
  ③ 主对角编号唯一
  ④ 次对角编号唯一

  这个模型足以解决所有m皇后问题(但仅适用于m>=4的情况,因为m=2、3时无解,m=1的解就不需要讨论了)—— 译者注:这个大前提条件会在最后进行论证


 4.2. m皇后通解:三个构造式

  由于通解公式相对复杂,为了便于说明,此处不从过程推导出结论,而是反其道而行之:先给出结论的通解公式(且不考虑公式是怎么推演出来的),再证明之。
  m皇后问题的解的共由3个构造式组成


 4.2.1. 【构造式A】

这里写图片描述


 4.2.2. 【构造式B】

这里写图片描述


 4.2.3. 【构造式C】

这里写图片描述


 4.3. 三个构造式的正确性证明

  要证明构造式是成立的,只需要证明每个构造式导出的皇后位置均满足:① 行编号唯一;② 列编号唯一;③ 主对角编号唯一;④ 次对角编号唯一


 4.3.1. 【构造式A】的证明

 4.3.1.1. 【构造式A】

这里写图片描述
这里写图片描述


 4.3.1.2. 【定理A】

这里写图片描述


 4.3.1.3. 【定理A】的证明

这里写图片描述
这里写图片描述
这里写图片描述


 4.3.2. 【构造式B】的证明

 4.3.2.1. 【构造式B】

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述


 4.3.2.2. 【定理B】

这里写图片描述


 4.3.2.3. 【定理B】的证明

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述


 4.3.3. 【构造式C】的证明

 4.3.3.1. 两条【引理】

这里写图片描述
这里写图片描述
这里写图片描述


 4.3.3.2. 【定理C】

这里写图片描述


 4.3.3.3. 【定理C】的证明

这里写图片描述


 4.2. 大前提条件m≥4的证明

  上述所有的证明,都是基于一开始给出的大前提条件:
  对于构造式A或B:令m = 2n,其中 n = 2, 3, 4,……(即m≥4且m是偶数)
  对于构造式C:在构造式A或B可解的基础上令m+1(即m≥5且m是奇数)

  亦即m皇后问题(m≥4且m是偶数)可通过【构造式A】或【构造式B】求解,而m+1皇后问题(m+1≥5且m是奇数)则可通过【构造式C】求解。

  至于为什么m=1、m=2或m=3时并不适用于构造式A、B、C就是这里要讨论的。
  首先当m=1时,虽然是有明确的唯一解,但并不存在m=2n的形式。而n作为三个构造式的重要变量,既然一开始就不存在n值,构造式A、B、C也就无从谈起了。
  那么需要证明的,就是为什么m=2与m=3也不可取?

这里写图片描述


5. 译者后记:通解转换式(编程用)

  在原作者提出的三个构造式A、B、C中,均使用(i,j)的二维坐标形式标记每个皇后的位置,从数学角度上更易于表达作者的思想,但是不便于编程使用。
  为此译者在这里补充针对构造式A、B、C的转换公式,使用一维坐标形式标记每个皇后位置,以配合编程使用(其实这就是目前网上普遍流传的m皇后问题构造式)。
  一维坐标的标记方式为:从第1行开始,依次写出m个数字,分别代表每行的皇后列坐标。亦即行坐标为数序(索引/下标),列坐标为数值。
  如序列 [5, 3, 1, 6, 8, 2, 4, 7] 等价于 (1,5), (2,3), (3,1), (4,6), (5,8), (6,2), (7,4), (8,7)


 5.1.【构造式A】的转换式

这里写图片描述
这里写图片描述


 5.2.【构造式B】的转换式

这里写图片描述
这里写图片描述
这里写图片描述


 5.3. 小结:通解转换式归整

这里写图片描述

猜你喜欢

转载自blog.csdn.net/lyy289065406/article/details/78955101