魔方阵是个很经典的数组排列算法,就是将nxn的自然数序列排为二维数组,其中行列斜上每个数字的和都等于同一个数,这就是魔方阵最基本的特性。
魔方阵算法分为三种情况,分别是奇数阶、4K阶(K为任意自然数)、2n阶(n为任意奇数)。
其中2n阶是最难计算的一种,今天,李木就分享一下它的算法。
举个例子,3阶魔方阵如下:
它的算法就不详细说明了,4阶魔方阵算法也是很简单的,但是遇到6阶魔方阵呢?一般的书籍中没有详细说它的解法。
解六阶魔方阵:
先让我们想一下上面的那个三阶魔方阵的图,它的组成元素是{1,2,3,4,5,6,7,8,9},我们现在可以换成{0,4,8,12,16,20,24,28,32}替换它们,也就是差为4的等差数列。
这是一个对角、行‘列和为48的方阵。
接着我们将它扩展为六阶方阵:
这是一个对角、行、列都是96的方阵。
我们再看下面这个方阵:
这是一个对角、行、列都是15的方阵。
我们将方阵2和方阵3重叠相加,便可得到我们想要的六阶魔方阵了:
它的行、列、对角和都等于111。
这里便有规律所寻了。
我们接着解十阶魔方阵:
使用方阵5代替方阵1,也是一个由差为4的等差数列排列而来。
接着使用方阵6代替方阵3:
然后方阵5和方阵6重叠相加,便可以得到行、列、对角和为505的十阶魔方阵了。
这里就可以分析出其中的规律,可以概括为以下几条:
(1)、使用{4k|k = 0, 1, · · · , n2 − 1}的等差数列, 排列出一個n阶, 且行、列、对角方向的和等于2n^3−2n的魔方阵。
(2)、将步骤一中的每一个元素,扩展为2×2维,数字相等的方阵,便可得到一个2n阶的方阵。
(3)、将步骤二中得到的方阵同时上下做对称的扩展,扩展矩阵为:
(4)、将步骤三中得到的方阵再做左右对称的扩展,其中左侧扩展为:右侧扩展为:
(5)、将步骤二中的方阵与步骤四得到的方阵重叠相加,便可得到一个2n(n为奇数)阶魔方阵了。
证明的过程就不写了,上述的步骤也写的比较简单,这个需要拿起笔纸写写画画的,仔细分析,便可得到正确的魔方阵了。