40410 楊輝的六階幻方

終極密碼

遊戲規則:本遊戲為猜密碼的遊戲。密碼為0到100之間的其中1個整數,電腦會提示密碼的所在範圍,玩家必須在6次之內猜到密碼才能過關。
★ 終極密碼為0到100之間 ★
您共有六次機會

一、 引言

楊輝, 字謙光, 南宋末年錢塘(今浙江杭州)人 (1127$\sim$1279), 是古代中國傑出的數學家與數學教育家, 著述頗多, 其中包括《詳解九章算法》 12 卷(1261)、 《日用算法》 2 卷 (1262)、 《乘除通變本末》 3 卷 (1274, 其中卷下署"錢塘楊輝、 史仲榮編集")、 《田畝比類乘除捷法》 2 卷(1275)、 《續古摘奇算法》 2 卷 (1275), 對後世影響很大, 其中后三種又合稱為《楊輝算法》 。 楊輝在"剁積術"與縱橫圖 (即幻方)以及總結民間乘除捷算等都有重要貢獻, 也以楊輝三角 (又稱為"賈憲三角"或"帕斯卡三角")聞名於世。 在數學史中, 楊輝與秦九韶、 李冶以及朱世傑並稱為中國古代數學宋元四大家。

在楊輝著作中, 《續古摘奇算法》 是數學史上第一本關於幻方 (magic square) 的系統著作, 同時楊輝在書中也討論了幻圖 (magic figure), 關於幻圖的討論可見 。 本文將討論的是幻方, 在第一卷中楊輝給出了 3$-$10 階幻方, 其中3階幻方即為洛書, 其他分別稱為"花十六圖"(4階)、 "五五圖"(5階)、 "六六圖"(6階)、 "衍數圖"(7階)、 "易數圖"(8階)、 "九九圖"(9階)、 "百子圖" (10階), 楊輝在書中給出了一部分幻方的構造方法, 如其中的"花十六圖", 然而如"六六圖" 等則未給出構造方法, 本文將討論的即為"六六圖"。

所謂幻方, 是指一個數字矩陣, 通常矩陣元素就是一組連續正整數序列, 比如用 1$\sim n^2$ 構造一個 $n$ 階幻方, 其中每行之和, 每列之和, 以及兩條對角線之和均等於一個常數, 該常數稱為幻和。 楊輝在書中給出了兩個 6 階幻方, 分別謂之為陽圖 (矩陣1) 與陰圖 (矩陣2)。 本文的目的是研究其中的陽圖的構造方法, 在仔細研究其中的陽圖之後, 我們會發現其中蘊含的構造方法與現代的康威給出的 LUX 方法類似
(也可見維基百科詞條: https://en.wikipedia.org/wiki/Conway%27s_LUX_method_for_magic_squares)。

下文的安排如下, 首先解釋 LUX 法的構造過程, 然後再與楊輝的幻方對比, 最後, 我們將基於對比分析推廣出一個一般方法。 通常在研究中把幻方劃分為三類, 奇數階 ($2m+1$)、 單偶數階 $(2(2m+1))$ 以及雙偶數階 $(4m)$, 其中 $m$ 為正整數。 6 階幻方屬於單偶數階幻方, 而本文最終推出的方法可以適用於構造任意單偶數階幻方。 $$ \left[\begin{array}{cccccc} ~13~&~22~&~18~&~27~&~11~&~20~\\ 31& 4& 36& 9& 29&2\\ 12&21&14&23&16&25\\ 30&3&5&32&34&7\\ 17&26&10&19&15&24\\ 8&35&28&1&6&33\end{array}\right]\\ (1) \\ \, \\ \left[\begin{array}{cccccc} 4&~13~&~36~&~27~&~29~&2\\ 22&31&18&9&11&20\\ 3&21&23&32&25&7\\ 30&12&5&14&16&34\\ ~17~&26&19&28&6&~15~\\ 35&8&10&1&24&33\end{array}\right] \\(2) $$

二、 LUX法構造過程

下面首先回顧 LUX 法的構造方法。 LUX 法是構造單偶數階幻方的方法, 因此此時幻方的階數為 $n=2(2m+1)$。

步驟一: 使用連續擺數法構造一個奇數階 $(2m+1)$ 階幻方, 關於連續擺數法, 具體構造方法可見文獻 中的 2.2 節, 這裡不再詳述。 以構造 10 階幻方為例, 此時就是先構造一個 5 階幻方, 如矩陣 3 所示; $$\left[\begin{array}{ccccc} ~17~&~24~&~1~~&~8~&~15~\\ 23&5&7&~14~&16\\ 4&6&~13~&20&22\\ 10&12&19&21&3\\ 11&18&25&2&9\end{array}\right]\\(3)$$

步驟二: 將 1$\sim n^2$ 這 $n^2$ 個數字劃分為四個一組, 共計 $(2m+1)^2$ 組, 這 $(2m+1)^2$ 組陣列將填在步驟一中生成的幻方中, 不過需要先將每組數填充到 $2\times 2$ 階的小矩陣中, 之後這些矩陣再填入 $(2m+1)$ 階幻方中。 這裡為了方便描述, 將 LUX 法的插入順尋直接用 $2\times 2$ 矩陣表示, 後面我們將看到使用這些 $2\times 2$ 小矩陣會更容易看到規律。

步驟三: 在 $(2m+1)$ 阶幻方的不同位置插入的小矩陣的數位順序有所區別, 在最上的 $m+1$ 行採用 $L$ 形式插入(見矩陣 4a), 接下來的第 $m+2$ 行按照 $U$ 形式插入 (見矩陣 4b), 餘下的 $m-1$ 行按照 $X$ 形式插入 (見矩陣 4c)。 所謂採用 $L$ 形式插入, 即按照矩陣 $4a$ 中的 $1\to 2\to 3\to 4$ 順序插入, 形同 $L$, 其他情形類似。 之後再調整第 $m+1$ 行中間的 $2\times 2$ 矩陣 (即矩陣 5 中的 $49-50-51-52$), 將對應數組從 $L$ 變為 $U$ 形插入, 其下方的第 $m+2$ 行中間的一組數字從 $U$ 形變為 $L$ 形 (即矩陣 5 中的 $73-74-75-76$)。

$$\left[\begin{array}{cc} ~4~&~1~\\ 2&3\end{array}\right]\\(4a)$$ $$ \left[\begin{array}{cc} ~1~&~4~\\ 2&3\end{array}\right]\\(4b)$$ $$\left[\begin{array}{cc} ~1~&~4~\\ 3&2\end{array}\right]\\(4c)$$

這樣, 我們就構造了一個 10 階幻方, 如矩陣 5 所示。 $$\left[\begin{array}{cccccccccc}68&65&96&93&4&1&32&29&60&57\\ ~66~&~67~&~94~&~95~&2&3&~30~&~31~&~58~&~59~\\ 92&89&20&17&28&25&56&53&64&61\\ 90&91&18&19&26&27&54&55&62&63\\ 16&13&24&21&49&52&80&77&88&85\\ 14&15&22&23&50&51&78&79&86&87\\ 37&40&45&48&76&73&81&84&9&12\\ 38&39&46&47&74&75&82&83&10&11\\ 41&44&69&72&97&100&5&8&33&36\\ 43&42&71&70&~99~&~98~&7&6&35&34\end{array}\right] \\(5)$$

三、 LUX法與楊輝幻方的對比

下面首先把楊輝的幻方 (矩陣1) 分解, 將其分解為 9 個 $2\times 2$ 矩陣的組合, 我們會發現有三個特點。

之一, 每組是一個等差數列, 公差均為9, 如最左上角的 $2\times 2$ 子矩陣的四個元素為 $\{4$, 13, 22, $31\}$, 恰好是公差為 9 的等差數列; 之二是每組的最小數字提取出來, 依然組合成為一個三階幻方, 見矩陣 6 所示, 這實際上也是連續擺數法生成的, 與 LUX 法類似; 之三, 由於是 6 階幻方, $2\times 2$ 矩陣只有兩種形式, 分別見矩陣 7a 與 b。 在《續古摘奇算法》 一書中, 楊輝的 10 階幻方並非使用類似方法, 我們無法從 《續古摘奇算法》 中的其他幻方直接推知更高階單偶數階幻方如何構造, 因此需要補充與 LUX 法中矩陣 4c 對應的排序方式。 簡單對比, 我們可以發現, 矩陣 4 的 a 與 b 對應到矩陣 7 的 a 與 b, 簡而言之, 矩陣 7a 是矩陣 4a 上下對稱翻折得到, 而矩陣 7b 則為矩陣 4b 上下對稱翻折得到, 這樣, 我們自然可以推測對應矩陣 4c 應該有矩陣 7c, 也為矩陣 4c 上下對稱翻轉得到, 從而矩阵 4 中的3個 $2\times 2$ 階矩陣都有了對應形式。

經過上面的對比, 我們發現楊輝幻方與 LUX 法構造的幻方有很強的相似性, 這提示我們楊輝幻方背後的構造方法可以一般化推廣, 並用來構造單偶數階幻方。 然而, 將楊輝幻方提示的方法推廣到一般情形時需要解決一個問題, 即公差選擇為多少, 在 6 階時選擇為 9, 一般的 $2(2m+1)$ 階時呢? 簡單計算可知選擇為 $(2m+1)^2$ (因為我們需要保證劃分之後的小數組可以填充進一個 $(2m+1)$ 階幻方中)。 下面我們就可以動手嘗試用楊輝幻方類似的方法構造更高階的單偶數階幻方了。 基本步驟與 LUX 法一樣, 只是在填充 $2\times 2$ 矩陣時對應的順序按照矩陣 7, 並且每個小數組的公差選擇為 $(2m+1)^2$。 $$\left[\begin{array}{ccc} ~4~&~9~&~2~\\ ~3~&~5~&~7~\\ 8&1&6\end{array}\right] \\(6)$$

$$\left[\begin{array}{cc} 2&3\\ ~4~&~1~ \end{array}\right] \\ (7a) $$ $$\left[\begin{array}{cc} 2&3\\ ~1~&~4~\\ \end{array}\right] \\(7b) $$ $$\left[\begin{array}{cc} 3&2\\ ~1~&~4~ \end{array}\right] \\(7c)$$

下面同樣以 10 階為例, 使用矩陣 3 為奇數階幻方, 用前面從楊輝幻方觀察出的方法構造。 首先, 將1$\sim$100劃分為 25 組, 每組 4 個數字, 公差均選擇為 $25=(2\times 2+1)^2$。 具體填入方法是, 在最上面 $m+1$ 行填寫矩陣 7a 所示的順序, 接下的一行填寫矩陣 7b 所示的順序, 最後一行填寫矩陣 7c 所示的順序, 再將第 3 行中間的 $2\times 2$ 矩陣以及其下方的 $2\times 2$ 矩陣做調整, 分別調整為矩陣 7b 與 a 的排列順序, 最後得到矩陣 8, 經過驗證, 滿足幻方條件。 這樣, 我們就利用楊輝書中幻方啟發的方法構造了一個 10 階幻方。

此外, 對比會發現陰圖 (矩陣2) 實際上是陽圖做了一些調整而得到的, 在《幻方及其他 --- 娛樂數學經典名題》 一書中, 作者也認為如此, 這裡不再詳細敘述。 $$\left[\begin{array}{cccccccccc} ~42~&~67~&~49~&~74~&~26~&~51~&~33~&~58~&~40~&~65~\\ 92&17&99&24&76&1&83&8&90&15\\ 48&73&30&55&32&57&39&64&41&66\\ 98&23&80&5&82&7&89&14&91&16\\ 29&54&31&56&38&63&45&70&47&72\\ 79&4&81&6&13&88&95&20&97&22\\ 35&60&37&62&44&69&46&71&28&53\\ 10&85&12&87&94&19&21&96&3&78\\ 61&36&68&43&75&50&52&27&59&34\\ 11&86&18&93&25&100&2&77&9&84\end{array}\right] \\ (8)$$

四、 更一般的推廣

下面我們將總結 LUX 法以及楊輝幻方, 給出一個更一般的構造方法。從兩個角度推廣, 第一點, 從楊輝幻方以及 LUX 法可知, $2\times 2$ 矩陣填入的數組的公差可以為 1 (如 LUX 法), 也可以為 $(2m+1)^2$ (楊輝幻方中的方法); 第二點, 可以從 $2\times 2$ 矩陣的變換角度考慮, 我們已知矩陣 4a, b, c 與矩陣 7a, b, c 一一對應, 且 LUX 法的陣列排序方式與楊輝方法的排序方式差一個上下翻轉, 自然的, 還有一種翻轉是左右翻轉, 易知這樣對陣列進行變換之後, 若原矩陣為幻方, 則變換後的矩陣也是幻方。 因此, 可以在矩陣 4 與矩陣7的基礎上再添加可以作為基礎排序的矩陣 9 以及矩陣 10, 這裡為了方便只用 $\{1$, 2, 3, $4\}$ 作為示例, 而實際填入方法與 LUX 法類似。 易知, 這四組排序方式互相可以通過上下翻轉與左右翻轉變換得到。 設上下翻轉設為 $T_1$, 左右翻轉設為 $T_2$, 那麼這四組基礎排序可以相互轉換, 比如矩陣 9 可以由矩陣 4 做 $T_2$ 變換得到, 矩陣 10 可以由矩陣 7 做 $T_2$ 變換得到, 而矩陣 9 與矩陣 10 之間可以做 $T_1$ 變換得到。 注意這裡不能採用旋轉變換, 比如將矩陣 4 旋轉 90 度, 此時生成的就不是幻方。

基於這四種不同排序的 $2\times 2$ 矩陣, 接下來就可以陳述更一般的方法, 與 LUX 法類似, 三個步驟, 不同之處是其中的步驟二的數組的公差可以選擇為 $(2m+1)^2$, 以及步驟三的填入順序可以是矩陣 4, 7, 9, 10 中的任意一種。

$$\left[\begin{array}{cc} ~1~&~4~\\ 3&2 \end{array}\right]\\(9a)$$ $$ \left[\begin{array}{cc} ~4~&~1~\\ 3&2 \end{array}\right] \\(9b) $$ $$\left[\begin{array}{cc} ~4~&~1~\\ 2&3 \end{array}\right]\\ (9c)$$
$$\left[\begin{array}{cc} 3&2\\ ~1~&~4~ \end{array}\right] \\ (10a) $$ $$ \left[\begin{array}{cc} 3&2\\ ~4~&~1~ \end{array}\right] \\(10b) $$ $$ \left[\begin{array}{cc} 2&3\\ ~4~&~1~ \end{array}\right]\\ (10c)$$

步驟一: 用連續擺數法構造一個階數為(2m+1)的奇數階幻方;

步驟二: 將 $\{1-n^2$} 劃分為 $(2m+1)^2$ 個小數組, 每個數組均有四個數字, 為等差數列, 公差為 1 或 $(2m+1)^2$;

步驟三: 將這些數組分別填入前面的 $(2m+1)$ 階幻方中, 可以選擇矩陣 4, 7, 9, 10 四種排序方式中的一種。 最上面 $m+1$ 行按照矩陣 4, 7, 9, 10 的 $a$ 排序, 接下的第 $m+2$ 行按照 $b$ 排序, 剩下的 $m-1$ 行按照 $c$ 排序。 再將第 $m+1$ 行中間的 $2\times 2$ 矩陣調整為按照 $b$ 排序, 其下方的 $2\times 2$ 矩陣按照 $a$ 排序。 這樣即生成一個 $2(2m+1)$ 階幻方。

以 10 階為例, 我們继续選擇矩陣 3 作為奇數階幻方, 選擇公差 $d=25$, 選擇矩陣 9, 10 兩種排序就生成了兩個 10 階幻方, 分別如矩陣 11 與 12 所示。

$$\left[\begin{array}{cccccccccc} ~17~&~92~&~24~&~99~&~1~&~76~&~8~&~83~&~15~&~90~\\ 67&42&74&49&~51~&26&~58~&33&65&40\\ 23&98&5& 80&7&82&14&89&16&91\\ 73&48&55&30&57&32&64&39&66&41\\ 4&79&6&81&88&13&20&95&22&97\\ 54&29&56&31&63&38&70&45&72&47\\ 85&10&87&12&19&94&96&21&78&3\\ 60&35&62&37&69&44&71&46&53&28\\ 86&11&93&18&100&25&77&2&84&9\\ 36&61&43&68&50&75&27&52&34&59\end{array}\right] \\(11)$$ $$\left[\begin{array}{cccccccccc} ~67~&~42~&~74~&~49~&~51~&~26~&~58~&~33~&~65~&~40~\\ 17&92&24&99&1&76&8&83&15&90\\ 73&48&55&30&57&32&64&39&66&41\\ 23&98&5&80& 7&82&14&89&16&91\\ 54&29&56&31&63&38&70&45&72&47\\ 4&79& 6&81&88&13&20&95&22&97\\ 60&35&62&37&69&44&71&46&53&28\\ 85&10&87&12&19&94&96&21&78&3\\ 36&61&43&68&50&75&27&52&34&59\\ 86&11&93&18&100&25&77&2&84&9\end{array}\right] \\(12)$$

對於LUX法的證明, 在 中提示了一種方法, 可以很容易的驗證形成的矩陣為幻方, 對於公差為 $(2m+1)^2$ 時的情形也是類似。 而證明了對應於矩陣 4, 7, 9, 10 四種排序中的任何一種, 則其他情形可自動的得證, 因為左右翻轉與上下翻轉不改變行以及列之和, 因此只需要說明對角線的變化即可, 而這一點很容易驗證。

在《續古摘奇算法》 一書中還給出了一個 10 階幻方, 如矩陣 13 所示, 名曰"百子圖", 然而該幻方的對角線之和, 一為 540, 一為 470, 嚴格來說並非幻方。 數學史專家李儼對構造方法提出了一種見解, 這裡不再詳述。 將 (13) 與 (8) (11) (12) 對比, 即可知 (13) 的構造方法與本文推廣的方法截然不同, 因此, 其與楊輝書中的6階幻方的構造方法也不同, 比如 (13) 中 1$-$6 行對應的數組都是遞增或遞減的數字排序, 若將其劃分為 25 個 $2\times 2$ 的小矩陣分析, 每個 $2\times 2$ 子矩陣的數組也非等差數列。 因此, 楊輝書中的 6 階幻方與 10 階幻方並非同樣的構造方法所得。 $$\left[\begin{array}{cccccccccc} 1&~20~&~21~&~40~&~41~&~60~&~61~&~80~&~81~&100\\ ~99~&82&79&62&59&42&39&22&19&2\\ 3&18&23&38&43&58&63&78&83&~98~\\ 97&84&77&64&57&44&37&24&17&4\\ 5&16&25&36&45&56&65&76&85&96\\ 95&86&75&66&55&46&35&26&15&6\\ 14&7&34&27&54&47&74&67&94&87\\ 88&93&68&73&48&53&28&33&8&13\\ 12&9&32&29&52&49&72&69&92&89\\ 91&90&71&70&51&50&31&30&11&10\end{array}\right] \\(13)$$

五、 結語

經過討論, 我們可以看到楊輝幻方與LUX法構造的幻方的相似處, 然而楊輝的《續古摘奇算法》 是 1275 年成書, LUX 法則是在 20 世紀得到, 中間有近 700 年的時間跨度, 這是一件很有趣的事情。 我們這裡是用一種啟發式的方法對楊輝幻方進行分析, 不一定是古人最初構造時的思考步驟, 然而, 從形式上來說二者有相通的地方。 至於古人為何沒有在《續古摘奇算法》 中將 6 階幻方構造方法用於構造 10 階幻方則是另一個問題。 鑒於這種跨越古今中外的有趣聯繫, 我想, 或許本文總結的構造單偶數階幻方的方法可以稱為"楊輝 --- 康威方法" (Yang Hui-Conway method)。

參考資料

郭熙漢。楊輝算法導讀。湖北教育出版社, 1996。 羅見今。王文素《算學寶鑒》 幻圖的組合意義。數學傳播季刊, 40(2), 45-56, 2016。 吳鶴齡。幻方及其他—娛樂數學經典名題。科學出版社, 63-64, 2004。 Erickson Martin, Aha! Solutions. MAA Spectrum, 98, 2009. 吳鶴齡。幻方及其他—娛樂數學經典名題。科學出版社, 22-23, 2004。

---本文作者為上海華東理工大學金融學系博士生---