幻方

**幻方**，有時又稱**魔術方陣**（其簡稱「魔方」現一般指立方體的魔術方塊）或**縱橫圖**，由一組排放在正方形中的整數組成，其每行、每列以及每一條主對角線的和均相等。通常幻方由從 $1$ 到 $N^{2}$ 的連續整數組成，其中 $N$ 為正方形的行或列的數目。因此 $N$ 階幻方有 $N$ 行 $N$ 列，並且所填充的數為從 $1$ 到 $N^{2}$ 。

幻方可以使用 $N$ 階方陣來表示，方陣的每行、每列以及兩條對角線的和都等於常數 $M_{2}(N)$ ，如果填充數為 $1,2,\dots ,N^{2}$ ，那麼有

　
: $M_{2}(N)={\frac {N(N^{2}+1)}{2}}$

## 幻方簡史

《繫辭》云：「河出圖，洛出書，聖人則之。」在宋朝之前，洛書的記述只有文字。

九宮圖實物最早發現於西漢，1977 年中國考古學家在安徽阜陽縣雙古堆西漢古墓中發現漢文帝七年（前 173 年）的太乙九宮占盤，乃是中國漢代幻方的實物。東漢《數術記遺》也有記載。

後來陳摶以降認為河圖洛書的洛書代表九宮圖，為 $1,\dots ,9$ 這 $9$ 個數，而 $3$ 行、 $3$ 列以及兩對角線上各自的數之和均為 15。

## 楊輝縱橫圖

南宋數學家楊輝著《續古摘奇算法》把類似於九宮圖的圖形命名為縱橫圖，書中列舉 3、4、5、6、7、8、9、10 階幻方。其中所述三階幻方構造法：「九子斜排，上下對易，左右相更，四維挺出，戴九履一，左三右七，二四為肩，六八為足」，比法國數學家 Claude Gaspar Bachet 提出的方法早三百餘年。

## 構造法

根據構造方法的不同，幻方可以分成三類：奇數階幻方、 $4M$ 階幻方和 $4M+2$ 階幻方，其中 $M$ 為自然數， $2$ 階幻方不存在。幻方構造法主要有：連續擺數法、階梯法（樓梯法）、奇偶數分開的菱形法、對稱法、對角線法、比例放大法、斯特雷奇法、LUX 法、拉伊爾法（基方、根方合成法）、鑲邊法、相乘法、幻方模式等。

### 奇數階幻方構造法

Siamese 方法（Kraitchik 1942 年，pp. 148-149）是構造奇數階幻方的一種方法，說明如下：

* 把 $1$ 放置在第一行的中間。
* 順序將 $2,3,\dots $ 等數放在右上方格中。
* 當右上方格出界的時候，則由另一邊進入。
* 當右上方格中已經填有數，則把數填入正下方的方格中。
* 按照以上步驟直到填寫完所有 $N^{2}$ 個方格。

（由於幻方的對稱性，也可以把右上改為右下、左上以及左下等方位）

以下圖 $5$ 階幻方為例， $1$ 填寫在 $(1,3)$ （第一行第三列）的位置上； $2$ 應當填寫在其右上方格即 $(0,4)$ 中，由於 $(0,4)$ 超出頂邊界，所以從最底行進入，即 $(5,4)$ ； $3$ 填寫在 $(5,4)$ 的右上方格 $(4,5)$ 中； $4$ 填寫在 $(4,5)$ 的右上方格 $(3,6)$ 中，由於 $(3,6)$ 超出右邊界，所以從最左列進入，即 $(3,1)$ ； $5$ 填寫在 $(3,1)$ 的右上方格 $(2,2)$ 中； $6$ 應該填寫的方格 $(1,3)$ 已經被 $1$ 所占據，因此填寫在 $(2,2)$ 的正下方格 $(3,2)$ 中；按照上面的步驟直到所有數填入。

魔方陣不是唯一的，比如 5 階魔方陣還可以是：

### 偶數階幻方構造法

####  $4M$ 階幻方構造法

對於 $4M$ 階幻方一般都用對調法，製作起來很容易。將它分割成 $M^{2}$ 個 $4\times 4$ 區塊，再將其每一個區塊的非主副對角線上的各個數關於中心對調即可。 
如 4 階幻方的排列法： 
 ${\begin{bmatrix}1&2&3&4\\5&6&7&8\\9&10&11&12\\13&14&15&16\end{bmatrix}}$ 
按如上圖排列好，再將非主副對角線上的各個數關於中心對調，即成下圖： 
 ${\begin{bmatrix}1&15&14&4\\12&6&7&9\\8&10&11&5\\13&3&2&16\end{bmatrix}}$ 
八階幻方構造如下 
 $\left[{\begin{array}{cccc|cccc}\diagdown &\bigstar &\bigstar &\diagup &\diagdown &\bigstar &\bigstar &\diagup \\\bigstar &\diagdown &\diagup &\bigstar &\bigstar &\diagdown &\diagup &\bigstar \\\bigstar &\diagup &\diagdown &\bigstar &\bigstar &\diagup &\diagdown &\bigstar \\\diagup &\bigstar &\bigstar &\diagdown &\diagup &\bigstar &\bigstar &\diagdown \\\hline \diagdown &\bigstar &\bigstar &\diagup &\diagdown &\bigstar &\bigstar &\diagup \\\bigstar &\diagdown &\diagup &\bigstar &\bigstar &\diagdown &\diagup &\bigstar \\\bigstar &\diagup &\diagdown &\bigstar &\bigstar &\diagup &\diagdown &\bigstar \\\diagup &\bigstar &\bigstar &\diagdown &\diagup &\bigstar &\bigstar &\diagdown \\\end{array}}\right]$ 
即： 
 ${\begin{bmatrix}1&63&62&4&5&59&58&8\\56&10&11&53&52&14&15&49\\48&18&19&45&44&22&23&41\\25&39&38&28&29&35&34&32\\33&31&30&36&37&27&26&40\\24&42&43&21&20&46&47&17\\16&50&51&13&12&54&55&9\\57&7&6&60&61&3&2&64\end{bmatrix}}$

####  $4M+2$ 階幻方構造法

##### 加邊法

以 $6$ 階為例子，先排出 $4$ 階的幻方，如上圖，再將圖中每一個數都加上 $8m+2=10$ ，有下圖： 
 ${\begin{bmatrix}11&25&24&14\\22&16&17&19\\18&20&21&15\\23&13&12&26\end{bmatrix}}$ 

在外圍加上一圈格子，把 $1,2,3,\dots ,8m+2$ 和 $16m^{2}+8m+3,16m^{2}+8m+4,\dots ,(4m+2)^{2}$ 這些數安排在外圈格子內，但要使相對兩數之和等於 $16m(m+1)+5$ 。對於 $m=1$ 這些數是： $1,2,3,4,5,6,7,8,9,10$ ； $27,28,29,30,31,32,33,34,35,36$ 。 
結果如下： 
 ${\begin{bmatrix}1&9&34&33&32&2\\6&11&25&24&14&31\\10&22&16&17&19&27\\30&18&20&21&15&7\\29&23&13&12&26&8\\35&28&3&4&5&36\end{bmatrix}}$

##### LUX 法

在 (4M+2)×(4M+2）個方格的適當格點上，先排出 2M+1 階的幻方。在前 M+1 行的格點，全部標上「L」；在第 M+1 行的中間格點標上「U」，其餘格點標上「L」；在第 M+2 行的中間格點標上「L」，其餘格點標上「U」；在餘下的 M-1 行的格點全部標上「X」。將格點上的數乘以 4 再減 4，再按下面的規則加上 1 至 4 其中一個數，填入對應的格上：

```
 4 1    1 4    1 4
  L      U      X
 2 3    2 3    3 2
```

例子：

```
[ 68  65  96  93   4   1  32  29  60  57 ]
   17L     24L      1L      8L     15L
[ 66  67  94  95   2   3  30  31  58  59 ]

[ 92  89  20  17  28  25  56  53  64  61 ]
   23L      5L      7L     14L     16L
[ 90  91  18  19  26  27  54  55  62  63 ]

[ 16  13  24  21  49  52  80  77  88  85 ]
    4L      6L     13U     20L     22L
[ 14  15  22  23  50  51  78  79  86  87 ]

[ 37  40  45  48  76  73  81  84  9   12 ]
   10U     12U     19L     21U      3U
[ 38  39  46  47  74  75  82  83  10  11 ]

[ 41  44  69  72  97  100  5  8   33  36 ]
   11X     18X     25X      2X      9X
[ 43  42  71  70  99  98   7  6   35  34 ]
```

### 編程語言參考實現

### 四階幻方全解搜索 (C/C++)

#### 奇數階幻方算法的 Java 語言實現

```
以下是本算法將n設置為11時得出的11階幻方的構造結果：
```

```
68 81 94 107 120 1 14 27 40 53 66
80 93 106 119 11 13 26 39 52 65 67
92 105 118 10 12 25 38 51 64 77 79
104 117 9 22 24 37 50 63 76 78 91
116 8 21 23 36 49 62 75 88 90 103
7 20 33 35 48 61 74 87 89 102 115
19 32 34 47 60 73 86 99 101 114 6
31 44 46 59 72 85 98 100 113 5 18
43 45 58 71 84 97 110 112 4 17 30
55 57 70 83 96 109 111 3 16 29 42
56 69 82 95 108 121 2 15 28 41 54
```

####  $4$ 階幻方算法的 Java 語言實現

```
以下是本算法輸出的結果：
```

```
對調之前的樣子：
1_2_3_4_
5_6_7_8_
9_10_11_12_
13_14_15_16_
對調之後的樣子：
1_15_14_4_
12_6_7_9_
8_10_11_5_
13_3_2_16_
```

## 研究價值

知名華人數學家陳省身曾在數學演講中說幻方只是一個奇蹟，它在數學中沒有引起更普遍深刻的影響，不屬於「好的數學」。

對幻方的學習和研究一直局限於趣味數學本身，更接近數字遊戲或文字遊戲，缺乏與主流數學的聯繫 (和璇璣圖在中國詩歌中的地位有一些相似)。數學和物理中也有具有更多學術價值的特殊數字方陣，如推動了試驗設計研究的拉丁方陣和已有應用的阿達瑪矩陣，還有在量子力學中有重要價值的泡利矩陣及其推廣版本蓋爾曼矩陣。魔術方塊則可以與群論建立聯繫 (見魔方群)，可以作為抽象代數的入門教具，也是計算群論的研究案例之一，並非單純的幾何玩具。高性能的計算機誕生後，幻方、幻星、素數環 (prime ring problem) 等很多這類需要滿足特殊規律的填數問題，只要所需的數字規模不大，都可以考慮通過深度優先搜索算法暴力求解和枚舉。

## 藝術與流行文化

* 德國畫家與雕刻家阿爾布雷希特・丟勒曾在一幅名作《憂鬱》(Melencolia I) 的角落中畫下一個幻方。這個著名的幻方圖也被知名工程數學軟體 MATLAB 加入自己的幫助文檔中。

## 參見

* 九宮圖
* 九宮算
* 洛書
* 幻圓
* 素數倒數幻方
* 數獨
* 未解決的數學問題
* 吠陀方形
* Frenicle 標準型式
* 數字推盤遊戲
* 泛對角幻方

## 參考資料

### 引用

### 延伸閱讀

* 高治源。九宫图探秘。香港天馬圖書有限公司. 2004 （中文（香港））.
* 張道鑫。素数幻方。香港天馬圖書有限公司. 2003 （中文（香港））.
* 李杭強。趣味数学幻方。香港天馬圖書有限公司. 2002 （中文（香港））.
* 林正祿。开拓智力的奇方 —— 幻方。香港天馬圖書有限公司. 2001 （中文（香港））.

## 外部連結

* 幻方介紹及其建造方法（英語）
* 一個小學老師對幻方的研究