五子连珠问题由五子棋抽象而来,类比晶体学中晶体的成核与生长过程,运用回溯法求出所有最佳晶胞,基于棋盘空间分解与不同维度晶胞的生长,得出最少放置数的求解公式,给出数学证明,同时快速给出所有最优放置,具有运算速度快、结果全面的优点。 The five-sub-alignment problem comes from the abstraction of gobang. Analogize the nucleation and growth process of crystals in crystallography. The backtracking method is used to find all the best cells. Based on the spatial decomposition of the chessboard and the growth of cells in different dimensions, the formula for solving the minimum number of placements is obtained. At the same time, give all the optimal places quickly, which has the advantages of fast calculation speed and comprehensive results.
五子连珠问题由五子棋抽象而来,类比晶体学中晶体的成核与生长过程,运用回溯法求出所有最佳晶胞,基于棋盘空间分解与不同维度晶胞的生长,得出最少放置数的求解公式,给出数学证明,同时快速给出所有最优放置,具有运算速度快、结果全面的优点。
五子连珠,晶胞生长,模N皇后问题,分割法,分治算法,回溯算法,0-1规划,组合优化
Jingjing Wu1, Zisen Mao2*, Lingling Xu3
1College of Command and Control Engineering, Army Engineering University of PLA, Nanjing Jiangsu
2Department of Basic Courses, Army Engineering University of PLA, Nanjing Jiangsu
3School of Engineering and Management, Pingxiang University, Pingxiang Jiangxi
Received: Sep. 26th, 2022; accepted: Oct. 19th, 2022; published: Oct. 27th, 2022
The five-sub-alignment problem comes from the abstraction of gobang. Analogize the nucleation and growth process of crystals in crystallography. The backtracking method is used to find all the best cells. Based on the spatial decomposition of the chessboard and the growth of cells in different dimensions, the formula for solving the minimum number of placements is obtained. At the same time, give all the optimal places quickly, which has the advantages of fast calculation speed and comprehensive results.
Keywords:Five-Sub-Alignment, Cell Growth, Modular N-Queens Problem, Segmentation, Divide and Conquer Algorithm, Backtracking Algorithm, 0-1 Programming, Combinatorial Optimization
Copyright © 2022 by author(s) and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
五子连珠问题是基于五子抽象棋演变而来 [
五子连珠问题首先出现在年全国高中数学联赛,目前的研究主要可以分为两类。第一类偏向于对问题的分析研究:丁龙云在“五子棋”到“马步跳”中首先运用了马步跳法 [
本文结合以上两类方法并对放置方法进行了研究,首先类比化学领域在空间点阵选取得到晶胞的方法,借鉴吴亚东发现的有效晶胞定义最佳晶胞,将最佳晶胞等价到模n皇后问题 [
吴亚东在基于0-1规划的五连珠问题求解中已经给出了有效晶胞的模型,并运用0-1规划发现了一种有效晶胞,给出了一维和二维晶胞的模型,本文将有效晶胞称为最佳晶胞。
在五子连珠问题的研究中,有很多学者运用了一些好的方法,在总结前人的基础上给出最佳晶胞构造的三点原则:
1) 最优原则:每5个位置有且仅有一个黑子,根据抽屉原理(鸽笼原理) 5 × 5的棋盘至少需要5个黑子,最佳晶胞取最少。
2) 生长原则:除晶胞内不能连珠外,晶胞沿任意方向生长也满足不连珠要求,棋盘上表示为晶胞的对角线不能n连珠,如图1、图2所示:
图1. 最佳晶胞生长时需满足的一个条件
图2. 条件的转化
3) 循环体原则:最佳晶胞是一个循环体 [
图3. 最佳晶胞的空间折叠 [
以二维最佳晶胞为例,记整数集合 A = { 1 , 2 , ⋯ , N } 。A的笛卡尔乘积记为B,即 B = A × A = 〈 ( 1 , 1 ) , ( 1 , 2 ) , ⋯ , ( 1 , N − 1 ) , ( N , 1 ) , ( N , 2 ) , ⋯ , ( N , 1 ) , ⋯ , ( N , N ) 〉 。从集合B中选择N个元素组成集合C,若C的笛卡尔乘积C × C中的每一个元素(Ik, Jk),(Ig, Jg),能满足以下的所有条件:
1) Ik≠ Ig{不在同一列上};
2) Jk≠ Jg{不在同一行上};
3) Ik+ Jk≠ Ig+ Jg± N {不在同一对角线及互补对角线上};
4) Ik− Jk≠ Ig− Jg± N {不在同一对角线及互补对角线上}。
二维棋盘下,对于任意5 × 5的区域,横、竖、主对角线、副对角线及其互补对角线共4 × 5个条件需满足,一个棋子最多能满足4个条件,故不存在某个条件未被满足也不存在某两个个黑子重叠满足同一个条件,可以说明最佳晶胞每行、列和互补对角线有且仅有一个黑子。
Le,Li and Wang在文章也证明到:如果n ≥ 4且n ≥ k ≥ 1,那么对于n × n的棋盘,我们能够放置kn个皇后在棋盘上,使每一行有k个皇后,每列有k个皇后,每条对角线上最多有k个皇后 [
存在性定理(Pólya):当n × n的模n皇后有解当且仅当gcd(n, 6) = 1 [
基于现有对n皇后问题的研究,由gcd(5, 6) = 1知五阶最佳晶胞存在,要找到所有最佳晶胞应借助回溯法 [
图4. n = 5的十种最佳晶胞
借鉴基础解 [
1) 循环体变换
运用循环体原则,将最佳晶胞第一列变换到最后一列记作H1,对应有H2、H3、H4、H5,则Hk(k = 1~5)对于一个放置(x, y)产生的新放置坐标为 ( ( x + k ) mod 5 , y ) ,实际上 H k = H 1 k ,为表示形象依然使用Hk。
2) 对称变换 [
最佳晶胞沿某条直线对称依然能保持原有性质,变换S1(上下对称),新坐标为 ( x , ( 9 − y ) mod 5 ) 。
最后将此处10种归为一类。如图4所展示10的种最佳晶胞,第一行的五种第一行与第五行相接为结果相同,上下两行为对称关系,本文取第1种为这类晶胞的一个代表元,可以表示为表1所示的变换运算:
编号 运算 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
H1 | 2 | 3 | 4 | 5 | 1 | 7 | 8 | 9 | 10 | 6 |
H2 | 3 | 4 | 5 | 1 | 2 | 8 | 9 | 10 | 6 | 7 |
H3 | 4 | 5 | 1 | 2 | 3 | 9 | 10 | 6 | 7 | 8 |
H4 | 5 | 1 | 2 | 3 | 4 | 10 | 6 | 7 | 8 | 9 |
H5 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
S1 | 6 | 7 | 8 | 9 | 10 | 1 | 2 | 3 | 4 | 5 |
表1. 最佳晶胞变换运算
求解五子连珠普遍的方法是回溯法与0-1规划,但这两种方法求解复杂度高,对于棋盘空间较大时无法有效求解,且0-1规划每次只能给出一种放置,但运用最佳晶胞与棋盘分割能够有效克服以上不足。
对于N × M大小棋盘下,根据N,M模5的结果: { a = [ N 5 ] b = [ M 5 ] a 1 = N % 5 b 1 = M % 5 ,将棋盘分割为三大块:
{ a × b A 区 ( 二 维 晶 胞 生 长 区 ) a × b 1 + a 1 × b B 区 ( 一 维 晶 胞 生 长 区 ) a 1 × b 1 C 区 ( 可 变 生 长 区 )
其中:A区可看作ab个二维最优晶胞,需放置黑子5ab。
B区有a1b + b1a个一维晶胞,需黑子a1b + b1a。
C区为可挑选生长,可以通过A区最佳晶胞的变换选择生长出二维晶胞的任意部分,如图5、图6展示的选取不同晶胞进行生长所带来C区结果的差异。
运用不同最佳晶胞进行生长不一定能得出最优解,但可以在最佳晶胞中搜索求出对1 × 2的C区最少需0个黑棋,得最优解为8,故综上求出0~4 × 0~4的最优解,得出C区生长i行j列所需最少棋子的可变矩阵:
图5. 6 × 7棋盘分割法示例
图6. 另一种更优生长
A ( i , j ) = ( 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 2 0 0 1 2 3 )
根据A、B、C区三个区都达到最优,合成本问题的最优放置,可得出此类N × M棋盘五子连珠问题公式:
X = 5 a b + a 1 b + b 1 a + A ( a 1 , b 2 )
可以检验可变矩阵满足 [
A ( i , j ) = [ i × j 5 ]
将计算公式简化为:
X = [ M × N 5 ]
公理:若一个优化问题的最小值为x,则增加约束后的新的约束问题的最小值 y ≥ x
证明1:五子连珠问题最少放置数 X ( M , N , 5 ) = [ M × N 5 ]
首先默认公式不考虑 M ≤ 4 或 N ≤ 4 的情况,这是容易求解的,在考虑 5 ≤ M ≤ 9 且 5 ≤ N ≤ 9 时,通过0-1规划的分支定界法逐个检验公式的正确性,下面对 M = 5 p + m 且 N = 5 q + n ( p , q ∈ I ; m , n ∈ { 5 , 6 , 7 , 8 , 9 } ) 证明该公式在 10 ≥ M 且 10 ≥ N 的正确性,剩余一类情况可参照证明。
已知 X ( m , n , 5 ) 是正确的,如图7所示可以将区域划分为两块,区域一为右下角 m × n 大小的已证明区域,对于我们的晶胞构造方法,只需将区域二铺满 p n + q m + p q 个同类型晶胞,得出我们计算的最优解为 X ( m , n , 5 ) = [ m × n 5 ] + 5 ( p n + q m + p q ) = [ M × N 5 ] ,则可以得出 X ( M , N , 5 ) ≤ [ M × N 5 ] ;若按行将区域二分成 5 p n + 5 q m + 5 p q 个 1 × 5 的晶胞(棋盘),则可知每个区域至少需要放置1个棋子,可得区域二至少需要 5 p n + 5 q m + 25 p q 个棋子,又区域一至少需要 [ m × n 5 ] ,则两区域合并前的最小值之和 X 1 ≥ [ m × n 5 ] + 5 p n + 5 q m + 5 p q = [ M × N 5 ] ,对于合并前后的最小值X1与X2,由于合并后的问题相对合并前的问题增加了合并时边界上的约束,则由公理可知 X 2 ≥ X 1 ,则可知原问题 X ( M , N , 5 ) ≥ [ M × N 5 ] ,故只能取等号,得证。
图7. 递推证明图及合并后增加的一个约束示意
1) 求出一种解
可变矩阵得出3 × 2时的可变生长区最少放置数为1,可变生长区为最佳晶胞的一部分,可以是由(2, 2)到(4, 3),如图8所示。
根据可变生长区的起始位置(x, y)、可变生长区大小i × j和代表最佳晶胞,则只需将代表晶胞进行一个循环变换,逆推出A生长区的最佳晶胞,确定一种最优放置,如图9所示。
图8. 一种可变生长区的挑选
图9. 一种可变生长区产生的一种最优放置
2) 变换给出所有放置
可变生长区是最佳晶胞内连续的一部分,在最佳晶胞中仅运用同一方向的循环体性质寻找出所有能够满足最少放置数的i × j的连续矩形情况,对于3 × 2的可变生长区有4种放置为1的情况,再根据对称变换可得共8种最优放置,见图10。
图10. 13 × 17的8种最优放置
证明2:给出的最优放置方法是完备的
任取棋盘上一个5 × 5的区域,若仅考虑行和列的约束,此处最少需放置5个黑子,而若此区域放置多于5,则整体无法达到最优(证明参照证明1),则此区域只能放置五个黑子,且每行每列均有一个,如此根据等价性则此区域必为一个MNQP的解,则可以推出其它区域也均为MNQP的相同解,故给出的放置方法是完备的。
上面可以看出,最佳晶胞在求解五子连珠问题上表现出的优越性,此处对模型做一个总结,表述如下图11:
图11. 模型使用流程
模型检验与总结
当棋盘空间较小时可以运用0-1规划与回溯法进行计算与结果检验,以下给出本模型计算部分结果如表2所示:
棋盘大小 | 最少放置数 | 放置方法 | |
---|---|---|---|
N | M | ||
6 | 7 | 8 | 6 |
13 | 17 | 44 | 8 |
25 | 25 | 125 | 10 |
81 | 81 | 288 | 8 |
192 | 193 | 1635 | 8 |
表2. 模型计算结果展示
五子连珠问题对于不同大小棋盘的求解看似有所区别,实际是一种循环往复,最佳晶胞模型借助晶体学概念和部分模N皇后问题结论,很好地描述了这种循环的内在逻辑,比较全面地解决了此问题,计算速度远超0-1规划与回溯法,且能够快速给出所有放置。
对于多子连珠和一般化为d维空间下的n连珠问题,借鉴现有模N皇后的结论,运用此模型有效求解部分此类问题,能有效克服高维度、大棋盘和多连珠所产生的复杂度是后面研究的重点。
吴晶晶,毛自森,许玲玲. 晶胞构造求解五子连珠问题Crystal Cell Structure for Solving the Pentagram Problem[J]. 应用数学进展, 2022, 11(10): 7430-7439. https://doi.org/10.12677/AAM.2022.1110789
https://doi.org/10.1016/0012-365X(78)90173-5
https://doi.org/10.1016/j.disc.2007.12.043