魔表03:对称性探究------从 64 种操作到 6 个原型
回顾
在上一篇文章中,我们建立了一个基于线性方程组的数学模型:把 64 种"按钮-拨轮"组合各自的效果向量排成矩阵 \(\mathbf{A}\),然后求解 \(\mathbf{A}\mathbf{k} \equiv -\mathbf{x} \pmod{12}\) 即可得到一组复原操作。
问题在于------**谁愿意手动标定 64 个效果向量?**每个向量 18 个分量,64 次重复,枯燥且容易出错。
但如果你动手玩过魔表,几分钟内就会发现:很多操作的效果看上去就像是前几个操作的"旋转"或者"镜像"。比如,"只按 UL,转 UL 拨轮"的效果和"只按 UR,转 UR 拨轮"的效果,好像只是把整个盘面旋转了 90°。
如果这种对应关系是精确的,那么我们就可以只测少数几个原型操作,其余的全部用对称性推出来。
本文就来系统地探究这些对称性,并看看它们到底能把 64 次测量压缩到多少次。
一、旋转对称:\(R\)
1.1 直观描述
魔表的盘面是个正方形,四角各有一个按钮和一个拨轮。如果我们把整个魔表绕中心旋转 90°,会发生什么?
- 左上角(UL)转到了右上角(UR)
- 右上角(UR)转到了右下角(DR)
- 右下角(DR)转到了左下角(DL)
- 左下角(DL)转到了左上角(UL)
也就是说,旋转把四个角按循环 \(( \mathrm{UL} \to \mathrm{UR} \to \mathrm{DR} \to \mathrm{DL} )\) 重新排列。
于是,一个很自然的猜想是:
"在 UL 角进行某操作"的效果,旋转 90° 后,应该等价于"在 UR 角进行同样的操作"。
1.2 正面与反面的旋转方向

观察这个图片,这里有一个细节:魔表有正反两面。当我们把魔表整体旋转 90° 时:
- 正面的盘面跟着魔表一起顺时针旋转了 90°
- 反面 呢?你把魔表翻过来看,就相当于从背面观察同一个旋转------反面看到的是逆时针 90° 旋转
所以旋转操作 \(R\) 对正反面的作用是不同的:
\\\begin{aligned} \\text{正面:} \&\\quad \\text{顺时针旋转 90°} \\\\ \\text{反面:} \&\\quad \\text{逆时针旋转 90°} \\end{aligned} \\
用坐标来表示。设正面为 \(F_{r,c}\),反面为 \(B_{r,c}\)(\(r\) 为行,\(c\) 为列,都从 \(0\) 到 \(2\)):
\\\begin{aligned} R(F)_{r,c} \&= F_{2-c,\\, r} \\\\\[4pt R(B){r,c} &= B{c,\, 2-r} \end{aligned} \]
用矩阵来表示更直观。正面顺时针 90°:
\R:\\quad \\begin{pmatrix} a \& b \& c \\\\ d \& e \& f \\\\ g \& h \& i \\end{pmatrix} \\;\\longrightarrow\\; \\begin{pmatrix} g \& d \& a \\\\ h \& e \& b \\\\ i \& f \& c \\end{pmatrix} \\
反面逆时针 90°(等价于顺时针 270°):
\R:\\quad \\begin{pmatrix} a \& b \& c \\\\ d \& e \& f \\\\ g \& h \& i \\end{pmatrix} \\;\\longrightarrow\\; \\begin{pmatrix} c \& f \& i \\\\ b \& e \& h \\\\ a \& d \& g \\end{pmatrix} \\
一个操作的效果向量旋转后,就变成了另一个角上的对应操作的效果向量。旋转 4 次回到原位:\(R^4 = I\)。
1.3 举例说明
以上图为例,这个旋转对称性给我们提供的信息是:
已知 \(S = \{\mathrm{UL}\},w = \mathrm{UL}\) 时(即只按下 UL 按钮,顺时针转 UL 拨轮),产生的变换效果为:
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} +1 \& 0 \& 0 \\\\ 0 \& 0 \& 0 \\\\ 0 \& 0 \& 0 \\end{matrix} \\qquad \\text{反面:}\\; \\begin{matrix} 0 \& -1 \& -1 \\\\ 0 \& -1 \& -1 \\\\ 0 \& 0 \& 0 \\end{matrix} \\end{aligned} \\
那么,根据旋转对称性,当 \(S = \{\mathrm{UR}\},w = \mathrm{UR}\) 时,产生的变换效果就应当为:
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} 0 \& 0 \& +1 \\\\ 0 \& 0 \& 0 \\\\ 0 \& 0 \& 0 \\end{matrix} \\qquad \\text{反面:}\\; \\begin{matrix} -1 \& -1 \& 0 \\\\ -1 \& -1 \& 0 \\\\ 0 \& 0 \& 0 \\end{matrix} \\end{aligned} \\
同理,我们自然可以得到,旋转 180° 和 旋转 270° 下的变换向量了。
二、对角线轴对称:\(D\)
旋转 \(R\) 能把四个角串起来。但 \(\mathrm{UR}\) 和 \(\mathrm{DL}\) 是正方形对角线上的一对,它们之间的关系不能单靠 \(R\) 来建立。要建立 \(\mathrm{UR}\) 和 \(\mathrm{DL}\) 的关系,我们还需要一个对角线上的镜像操作。
2.1 直观观察
我们以正面的主对角线作为对称轴进行探究(同时它也是反面的副对角线),如下图中红色虚线所示。

由下图可以看到,经过我们实测,当按钮的状态关于主对角线呈轴对称分布时,它们的转换效果也是沿主/副对角线轴对称的。

上图具体来说,是这样的:
当 \(S = \{\mathrm{UR}\}, w = \mathrm{UL}\) 时,产生的变换效果为:
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} +1 \& +1 \& 0 \\\\ +1 \& +1 \& +1 \\\\ +1 \& +1 \& +1 \\end{matrix} \\qquad \\text{反面:}\\; \\begin{matrix} 0 \& 0 \& -1 \\\\ 0 \& 0 \& 0 \\\\ -1 \& 0 \& -1 \\end{matrix} \\end{aligned} \\
那么当 \(S = \{\mathrm{DL}\}, w = \mathrm{UL}\) 时,产生的变换效果为:
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} +1 \& +1 \& +1 \\\\ +1 \& +1 \& +1 \\\\ 0 \& +1 \& +1 \\end{matrix} \\qquad \\text{反面:}\\; \\begin{matrix} -1 \& 0 \& -1 \\\\ 0 \& 0 \& 0 \\\\ -1 \& 0 \& 0 \\end{matrix} \\end{aligned} \\
可以看到,当按钮的位置关于主对称轴对称,那么产生的变化效果也相应地关于主/副对角线对称,具体表现为正面关于主对角线对称,反面关于副对角线对称。
2.2 对角镜像的定义
定义 \(D\) 为保持 \(\mathrm{UL}-\mathrm{DR}\) 对角线不变,交换 \(\mathrm{UR}\) 和 \(\mathrm{DL}\) 的镜像。
这就相当于沿 \(\mathrm{UL}-\mathrm{DR}\) 对角线翻转盘面:
- 正面:做转置(行列互换)
\D(F)_{r,c} = F_{c,r} \\
\D:\\; \\begin{pmatrix} a \& b \& c \\\\ d \& e \& f \\\\ g \& h \& i \\end{pmatrix} \\;\\longrightarrow\\; \\begin{pmatrix} a \& d \& g \\\\ b \& e \& h \\\\ c \& f \& i \\end{pmatrix} \\
- 反面:做反对角转置
\D(B)_{r,c} = B_{2-c,\\,2-r} \\
\D:\\; \\begin{pmatrix} a \& b \& c \\\\ d \& e \& f \\\\ g \& h \& i \\end{pmatrix} \\;\\longrightarrow\\; \\begin{pmatrix} i \& f \& c \\\\ h \& e \& b \\\\ g \& d \& a \\end{pmatrix} \\
在按钮标签上,\(D\) 的作用是:
\D(\\mathrm{UL}) = \\mathrm{UL},\\quad D(\\mathrm{UR}) = \\mathrm{DL},\\quad D(\\mathrm{DR}) = \\mathrm{DR},\\quad D(\\mathrm{DL}) = \\mathrm{UR} \\
同样,\(D^2 = I\)。
注:正反面的 \(D\) 定义不同,是因为正面和反面的坐标方向不同(反面是从背面观察的)。用坐标来定义 \(D(F)\) 和 \(D(B)\) 是精确的,矩阵形式只是直观辅助。
三、正反互补对称:\(C\)
3.1 直观观察
有了旋转 \(R\) 和对角镜像 \(D\),我们已经可以从"只按一角"推导出其余三个角的对应操作。
但还剩下一类重要的对称性:按钮的补集关系。仔细观察标定数据就会发现------"只按某个按钮"和"只不按那个按钮(即其余三个全按)"的两种操作,效果向量之间存在确定的对应关系。如果能精确找到这个对应关系,测量工作量又能砍掉一半。
本节以 \(S = \{\mathrm{UR}\}, w = \mathrm{UL}\) 为起点来探究。已知当只按下 UR 按钮、顺时针转 UL 拨轮时的效果为:
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} +1 \& +1 \& 0 \\\\ +1 \& +1 \& +1 \\\\ +1 \& +1 \& +1 \\end{matrix} \\qquad \\text{反面:}\\; \\begin{matrix} 0 \& 0 \& -1 \\\\ 0 \& 0 \& 0 \\\\ -1 \& 0 \& -1 \\end{matrix} \\end{aligned} \\
我们的目标是:用已有的对称性推导出它的补集------即只不按 UR(等价于按下 UL、DL、DR),顺时针转 UL 拨轮------的效果向量。
3.2 四步推导

如上图所示,我们通过四次变换,一步步推导出正反互补对称的变换方式。图中蓝色箭头表示旋转的拨轮以及它的旋转方向,橙黄色的箭头表示转换的顺序。下面逐步详细解释。
第一次变换:正反对称
把正面当作反面,把反面当作正面。从正面看,只按下 UR、顺时针转 UL;翻到背面看:
- \(\{\mathrm{UR}\}\) 在背面对应位置是 \(\{\mathrm{UL}\}\),状态取反(按下 → 弹起),其余三个按钮全部按下。即背面按钮集为 \(\{\mathrm{UR}, \mathrm{DL}, \mathrm{DR}\}\)
- 拨轮 UL 在背面对应 UR,方向取反(顺时针 → 逆时针)
效果向量正反面互换:
\(F, B) \\;\\xrightarrow{swap}\\; (B, F) \\
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} 0 \& 0 \& -1 \\\\ 0 \& 0 \& 0 \\\\ -1 \& 0 \& -1 \\end{matrix} \\qquad \\text{反面:}\\; \\begin{matrix} +1 \& +1 \& 0 \\\\ +1 \& +1 \& +1 \\\\ +1 \& +1 \& +1 \\end{matrix} \\end{aligned} \\
此时操作为:\(\{\mathrm{UR}, \mathrm{DL}, \mathrm{DR}\}\) / \(\mathrm{UR}\) / 逆时针。
注:顺时针逆时针均以正面观察为准。正面看是顺时针,背面看则是逆时针。
第二次变换:逆时针取负
利用性质 4(逆时针取负),将逆时针变为顺时针,效果整体取负:
\(B, F) \\;\\xrightarrow{neg}\\; (-B, -F) \\
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} 0 \& 0 \& +1 \\\\ 0 \& 0 \& 0 \\\\ +1 \& 0 \& +1 \\end{matrix} \\qquad \\text{反面:}\\; \\begin{matrix} -1 \& -1 \& 0 \\\\ -1 \& -1 \& -1 \\\\ -1 \& -1 \& -1 \\end{matrix} \\end{aligned} \\
此时操作为:\(\{\mathrm{UR}, \mathrm{DL}, \mathrm{DR}\}\) / \(\mathrm{UR}\) / 顺时针。
第三次变换:逆时针旋转 90°(\(R^{-1}\))
利用上文旋转对称性,将魔表整体逆时针旋转 90°,把拨轮从 UR 移回 UL。按钮集随旋转变化:\(R^{-1}(\{\mathrm{UR}, \mathrm{DL}, \mathrm{DR}\}) = \{\mathrm{UL}, \mathrm{UR}, \mathrm{DR}\}\)。
\(-B, -F) \\;\\xrightarrow{R\^{-1}}\\; R\^{-1}(-B, -F) \\
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} +1 \& 0 \& +1 \\\\ 0 \& 0 \& 0 \\\\ 0 \& 0 \& +1 \\end{matrix} \\qquad \\text{反面:}\\; \\begin{matrix} -1 \& -1 \& -1 \\\\ -1 \& -1 \& -1 \\\\ -1 \& -1 \& 0 \\end{matrix} \\end{aligned} \\
此时操作为:\(\{\mathrm{UL}, \mathrm{UR}, \mathrm{DR}\}\) / \(\mathrm{UL}\) / 顺时针。
第四次变换:对角镜像(\(D\))
然而 \(\{\mathrm{UL}, \mathrm{UR}, \mathrm{DR}\}\) 还不是 \(\{\mathrm{UR}\}\) 的补集。\(\{\mathrm{UR}\}\) 的补集是 \(\{\mathrm{UL}, \mathrm{DL}, \mathrm{DR}\}\)。
对比二者,差异仅在于 \(\mathrm{UR}\) 和 \(\mathrm{DL}\) 互换了。这恰是 \(D\) 的作用------保持 \(\mathrm{UL}\) 和 \(\mathrm{DR}\) 不变,交换 \(\mathrm{UR} \leftrightarrow \mathrm{DL}\)。
施加 \(D\):
\R\^{-1}(-B, -F) \\;\\xrightarrow{D}\\; D\\big(R\^{-1}(-B, -F)\\big) \\
此时操作为:\(\{\mathrm{UL}, \mathrm{DL}, \mathrm{DR}\}\) / \(\mathrm{UL}\) / 顺时针------这正是 \(\{\mathrm{UR}\}\) 的补集。得到的效果为:
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} +1 \& 0 \& 0 \\\\ 0 \& 0 \& 0 \\\\ +1 \& 0 \& +1 \\end{matrix} \\qquad \\text{反面:}\\; \\begin{matrix} 0 \& -1 \& -1 \\\\ -1 \& -1 \& -1 \\\\ -1 \& -1 \& -1 \\end{matrix} \\end{aligned} \\
实测验证完全吻合。
下表总结了从原始操作到互补操作的完整推导路径:
| 步骤 | 变换 | 操作 (按钮 / 拨轮 / 方向) | 效果向量 |
|---|---|---|---|
| \((F,B)\) | 起点 | \(\{\mathrm{UR}\}\) / \(\mathrm{UL}\) / 顺时针 | \((F, B)\) |
| ① | 正反对称(\(swap\)) | \(\{\mathrm{UR,DL,DR}\}\) / \(\mathrm{UR}\) / 逆时针 | \((B, F)\) |
| ② | 逆时针取负(\(neg\)) | \(\{\mathrm{UR,DL,DR}\}\) / \(\mathrm{UR}\) / 顺时针 | \((-B, -F)\) |
| ③ | 逆时针旋转 90°(\(R^{-1}\)) | \(\{\mathrm{UL,UR,DR}\}\) / \(\mathrm{UL}\) / 顺时针 | \(R^{-1}(-B,-F)\) |
| ④ | 对角镜像(\(D\)) | \(\{\mathrm{UL,DL,DR}\}\) / \(\mathrm{UL}\) / 顺时针 | \(D(R^{-1}(-B,-F))\) |
注意:这个性质不可使用 \(\{\mathrm{UL}\}\) 为例推导
若以 \(S = \{\mathrm{UL}\}\) 为起点推导,第三步得到的 \(R^{-1}(-B, -F)\) 在 \(D\) 变换下碰巧不变------因为 \(\{UL\}\) 位于 \(D\) 的对称轴 \(\mathrm{UL}\!-\!\mathrm{DR}\) 上。这样推导必然会因为举例的特殊性而漏掉最后一步的 \(D\) 变换。换成不在对称轴上的 \(S = \{\mathrm{UR}\}\),\(D\) 的必要性就立刻暴露了。
3.3 互补公式
总结上述推导,互补变换 \(C\) 定义为四种变换的复合:
\C(F,\\,B) = D\\big(R\^{-1}(-B, -F)\\big) \\
其中 \(R^{-1}\) 为逆时针旋转 90°(正面 CCW 90°,反面 CW 90°),\(D\) 为对角镜像(正面转置,反面反对角转置)。
我们可以尝试化简一下这个看起来复杂的式子。
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} a \& b \& c \\\\ d \& e \& f \\\\ g \& h \& i \\end{matrix} \\;\\;\\xrightarrow{R\^{-1}}\\;\\; \\begin{matrix} c \& f \& i \\\\ b \& e \& h \\\\ a \& d \& g \\end{matrix} \\;\\;\\xrightarrow{D}\\;\\; \\begin{matrix} c \& b \& a \\\\ f \& e \& d \\\\ i \& h \& g \\end{matrix} \\end{aligned} \\
\\\begin{aligned} \\text{反面:}\\; \\begin{matrix} a \& b \& c \\\\ d \& e \& f \\\\ g \& h \& i \\end{matrix} \\;\\;\\xrightarrow{R\^{-1}}\\;\\; \\begin{matrix} g \& d \& a \\\\ h \& e \& b \\\\ i \& f \& c \\end{matrix} \\;\\;\\xrightarrow{D}\\;\\; \\begin{matrix} c \& b \& a \\\\ f \& e \& d \\\\ i \& h \& g \\end{matrix} \\end{aligned} \\
可以看出,无论是正面还是反面,经过先旋转再对角线镜像之后,得到的结果都是一样的,都是原始矩阵的水平镜像。即:
\D \\cdot R\^{-1} \\equiv H \\
因此可以化简得到如下式子:
\\\boxed{\\;C(F,\\,B) = H(-B, -F)\\;} \\
其中 \(H\) 表示水平镜像(左右翻转),对正反面适用相同:
\H(M)_{r,c} = M_{r,\\,2-c} \\
\H:\\; \\begin{pmatrix} a \& b \& c \\\\ d \& e \& f \\\\ g \& h \& i \\end{pmatrix} \\;\\longrightarrow\\; \\begin{pmatrix} c \& b \& a \\\\ f \& e \& d \\\\ i \& h \& g \\end{pmatrix} \\
对于任意按钮集 \(S \subseteq \{\mathrm{UL}, \mathrm{UR}, \mathrm{DR}, \mathrm{DL}\}\),设其在 UL 拨轮下的效果向量为 \((F, B) = E(S, \mathrm{UL})\),则按钮集取补后的效果向量为:
\E(S\^c,\\; \\mathrm{UL}) = C\\big(E(S,\\; \\mathrm{UL})\\big) = H(-B, -F) \\
其中 \(S^c\) 表示 \(S\) 的补集(原来按下的弹起,原来弹起的按下)。
3.4 \(C\) 的数学含义
这个公式告诉我们两件事。
第一,按钮互补关系是精确的。 按钮取补后,效果向量只需正反对调并取负,再做水平镜像------\(C(F,B) = H(-B, -F)\)。毫无随机性。
第二,\(C\) 是一个对合变换。 按钮互补两次就回到原始状态,且 \(C\) 是线性变换。把 \(C\) 作用在效果向量上,直接得到互补按钮状态的效果,无需额外测量。
有了 \(C\),所有含 3 个按钮按下的操作(例如 \(\{\mathrm{UR}, \mathrm{DL}, \mathrm{DR}\}\))都可以从只含 1 个按钮的操作推导出来。这直接砍掉了一半的测量工作。
四、6 个原型 → 全部 64 种操作
现在我们来回答核心问题:到底需要测多少个原型?
答案是:我们只需要手动测出 6 种基本原型,即可利用上述探究出的三种对称性,完全推导得出全部 64 种基本操作的效果矩阵 \(A\) 。
4.1 6 个基本原型
固定拨轮为 UL、顺时针转 1 格,只改变按钮状态。以下 6 种代表不同的按钮模式:
| 原型 | 按钮集合 | 按钮模式说明 |
|---|---|---|
| \(v_0\) | \(\varnothing\) | 无按钮按下 |
| \(v_1\) | \(\{\mathrm{UL}\}\) | 只按本角 |
| \(v_2\) | \(\{\mathrm{UR}\}\) | 只按相邻角 |
| \(v_3\) | \(\{\mathrm{DR}\}\) | 只按对角 |
| \(v_4\) | \(\{\mathrm{UL}, \mathrm{UR}\}\) | 本角 + 相邻角 |
| \(v_5\) | \(\{\mathrm{UL}, \mathrm{DR}\}\) | 本角 + 对角 |
这些原型是**"不可再约简"的** ------它们之间不能通过 \(R\)、\(C\)、\(D\) 相互转换,各自代表了不同的按钮模式类。下表依次给出了我动手测量出的 \(6\) 个基本原型的变换效果以及变换向量,由此表也可以看出,6个基本原型差异较大,互相之间无法通过变换来推导得出。
| 原型 | 按钮集合 | 正面变化 | 反面变化 | 效果向量 \(\mathbf{e}\)(按 \(F_1\!\sim\!F_9, B_1\!\sim\!B_9\) 顺序) |
|---|---|---|---|---|
| \(v_0\) | \(\varnothing\) | \(\begin{smallmatrix}+1&+1&+1\\+1&+1&+1\\+1&+1&+1\end{smallmatrix}\) | \(\begin{smallmatrix}-1&0&-1\\0&0&0\\-1&0&-1\end{smallmatrix}\) | \((1,1,1,1,1,1,1,1,1,\;11,0,11,0,0,0,11,0,11)^T\) |
| \(v_1\) | \(\{\mathrm{UL}\}\) | \(\begin{smallmatrix}+1&0&0\\0&0&0\\0&0&0\end{smallmatrix}\) | \(\begin{smallmatrix}0&-1&-1\\0&-1&-1\\0&0&0\end{smallmatrix}\) | \((1,0,0,0,0,0,0,0,0,\;0,11,11,0,11,11,0,0,0)^T\) |
| \(v_2\) | \(\{\mathrm{UR}\}\) | \(\begin{smallmatrix}+1&+1&0\\+1&+1&+1\\+1&+1&+1\end{smallmatrix}\) | \(\begin{smallmatrix}0&0&-1\\0&0&0\\-1&0&-1\end{smallmatrix}\) | \((1,1,0,1,1,1,1,1,1,\;0,0,11,0,0,0,11,0,11)^T\) |
| \(v_3\) | \(\{\mathrm{DR}\}\) | \(\begin{smallmatrix}+1&+1&+1\\+1&+1&+1\\+1&+1&0\end{smallmatrix}\) | \(\begin{smallmatrix}-1&0&-1\\0&0&0\\0&0&-1\end{smallmatrix}\) | \((1,1,1,1,1,1,1,1,0,\;11,0,11,0,0,0,0,0,11)^T\) |
| \(v_4\) | \(\{\mathrm{UL},\mathrm{UR}\}\) | \(\begin{smallmatrix}+1&0&+1\\0&0&0\\0&0&0\end{smallmatrix}\) | \(\begin{smallmatrix}-1&-1&-1\\-1&-1&-1\\0&0&0\end{smallmatrix}\) | \((1,0,1,0,0,0,0,0,0,\;11,11,11,11,11,11,0,0,0)^T\) |
| \(v_5\) | \(\{\mathrm{UL},\mathrm{DR}\}\) | \(\begin{smallmatrix}+1&0&0\\0&0&0\\0&0&+1\end{smallmatrix}\) | \(\begin{smallmatrix}0&-1&-1\\-1&-1&-1\\-1&-1&0\end{smallmatrix}\) | \((1,0,0,0,0,0,0,0,1,\;0,11,11,11,11,11,11,11,0)^T\) |
4.2 从 6 个原型生成 16 种按钮状态
固定拨轮为 UL 。\(4\) 个按钮共有 \(2^4 = 16\) 种按下/弹起组合。我们可以用 \(C\) 和 \(D\) 从 6 个原型推导出全部 16 种:
| 按钮集 | 生成方式 | 按钮集(左边的补集) | 生成方式 |
|---|---|---|---|
| \(\varnothing\) | \(v_0\) | \(\{\mathrm{UL},\mathrm{UR},\mathrm{DL},\mathrm{DR}\}\) | \(C(v_0)\) |
| \(\{\mathrm{UL}\}\) | \(v_1\) | \(\{\mathrm{UR},\mathrm{DL},\mathrm{DR}\}\) | \(C(v_1)\) |
| \(\{\mathrm{UR}\}\) | \(v_2\) | \(\{\mathrm{UL},\mathrm{DL},\mathrm{DR}\}\) | \(C(v_2)\) |
| \(\{\mathrm{DL}\}\) | \(D(v_2)\) | \(\{\mathrm{UL},\mathrm{UR},\mathrm{DR}\}\) | \(C(D(v_2))\) |
| \(\{\mathrm{DR}\}\) | \(v_3\) | \(\{\mathrm{UL},\mathrm{UR},\mathrm{DL}\}\) | \(C(v_3)\) |
| \(\{\mathrm{UL},\mathrm{UR}\}\) | \(v_4\) | \(\{\mathrm{DL},\mathrm{DR}\}\) | \(C(v_4)\) |
| \(\{\mathrm{UL},\mathrm{DL}\}\) | \(D(v_4)\) | \(\{\mathrm{UR},\mathrm{DR}\}\) | \(C(D(v_4))\) |
| \(\{\mathrm{UL},\mathrm{DR}\}\) | \(v_5\) | \(\{\mathrm{UR},\mathrm{DL}\}\) | \(C(v_5)\) |
4.3 用旋转扩展到 4 个拨轮
以上都是固定拨轮 UL 的情况。现在对每个按钮状态 \(S\) 的效果向量应用旋转 \(R\),就得到其他三个角的对应操作:
| 拨轮 | 生成方式 |
|---|---|
| \(\mathrm{UL}\) | \(\mathbf{e}_{S,\mathrm{UL}}\)(直接由上表得到) |
| \(\mathrm{UR}\) | \(\mathbf{e}{S,\mathrm{UR}} = R(\mathbf{e}{R^{-1}(S),\mathrm{UL}})\) |
| \(\mathrm{DR}\) | \(\mathbf{e}{S,\mathrm{DR}} = R^2(\mathbf{e}{R^{-2}(S),\mathrm{UL}})\) |
| \(\mathrm{DL}\) | \(\mathbf{e}{S,\mathrm{DL}} = R^3(\mathbf{e}{R^{-3}(S),\mathrm{UL}})\) |
全部 4 拨轮 × 16 按钮状态 = 64 种操作,全部由 6 个原型生成。
五、验证:实测与预测吻合
5.1 举例验证
由上文已知,当 \(S = \{\mathrm{UR}\}, w = \mathrm{UL}\) 时,产生的变换效果为:
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} +1 \& +1 \& 0 \\\\ +1 \& +1 \& +1 \\\\ +1 \& +1 \& +1 \\end{matrix} \\qquad \\text{反面:}\\; \\begin{matrix} 0 \& 0 \& -1 \\\\ 0 \& 0 \& 0 \\\\ -1 \& 0 \& -1 \\end{matrix} \\end{aligned} \\
对它进行 \(C\) 变换,即可预测得到:
当 \(S = \{\mathrm{UL},\mathrm{DL},\mathrm{DR}\}, w = \mathrm{UL}\) 时,产生的变换效果为:
\\\begin{aligned} \\text{正面:}\\; \\begin{matrix} +1 \& 0 \& 0 \\\\ 0 \& 0 \& 0 \\\\ +1 \& 0 \& +1 \\end{matrix} \\qquad \\text{反面:}\\; \\begin{matrix} 0 \& -1 \& -1 \\\\ -1 \& -1 \& -1 \\\\ -1 \& -1 \& -1 \\end{matrix} \\end{aligned} \\
与实测结果相符,即验证了预测的正确性。
5.2 总而言之
以上三种对称性的正确性不是凭空想象的,它们经过了实际验证。从已有的 6 个实测原型出发,我们可以用 \(C\) 和 \(D\) 推算一些尚未实测的操作效果,然后动手验证。
以下是几个关键的验证:
| 预测 | 对称变换 | 实测结果 |
|---|---|---|
| 所有按钮都按下,转 UL 拨轮 | 对"无按钮按下"做 \(C\):\(C(v_0)\) | 吻合 |
| 只按下 DL 按钮,转 UL 拨轮 | 对"只按 UR"做 \(D\):\(D(v_2)\) | 吻合 |
| 只按 UL+DL,转 UL 拨轮 | 对"只按 UL+UR"做 \(D\):\(D(v_4)\) | 吻合 |
| 只不按 UR(按 UL+DR+DL),转 UL 拨轮 | 对"只按 UR"做 \(C\):\(C(v_2)\) | 吻合 |
四项预测全部正确。
六、结语
本文探究了魔表的三种对称性:
| 对称变换 | 作用 | 数学表达 |
|---|---|---|
| \(R\)(旋转 90°) | 四角循环映射 | 正面顺时针 90°,反面逆时针 90° |
| \(D\)(对角镜像) | 交换 \(\mathrm{UR} \leftrightarrow \mathrm{DL}\) | 正面转置,反面反对角转置 |
| \(C\)(正反互补) | 按钮取反 | \(C(F,B) = H(-B,\,-F)\) |
这三种对称性的核心价值在于:大幅压缩了需要实测的操作数量。
第二篇文章中,我们面对的是 \(64\) 次手工标定的苦差事。现在有了对称性,只需要测 6 个原型操作 ,其余 \(58\) 个全部用 \(R\)、\(C\)、\(D\) 推导出来。
下一篇,我们将基于这 6 个原型和三种对称性,建立一个更精巧的数学模型------不再是手动测出 64 列的大矩阵,而是一个充分利用了魔表内在结构的对称模型。