计算机求解魔方算法.pdf
第 1l卷第3期 计算技术与 自动化 VoI.11 N0.3
199Z年9月 COM PUTNG TECHNOLOGY AND AUToMATl0N Sept. 199Z
计算机求解魔方算法
1一 童里塞 。堕 丁 c~/./-
(国防科技大学)
摘 要 本文借助高庆狮教授提 出的宏变换思想 .给出一个隶解崖方柏算法 .根据此算 {击,计算机可
自动求解崖方 。
关键词 苎查 墼 室窑垫.
1 引言
魔方是由一些小方块联结在一起组成的一个大立方体。太立方体六个面 ,每个面都是由九
个小方格组成的一个平面。我们把小立方块分成三种类型 :一种是位于每一面中心的,称为 “中
t:-块 ,它只露出一个面,一种是位于每个角上的。称为 “角块”,每个角块都露出三个面;还有一
种只露出两个面的小方块 ,称为 “边块”。一个魔方共有六个中心块,八个角块 .十二个边块 。
B
2 基本概念
首先介绍一下魔方的基本变换及其记号。
魔方的基本变换是每个面顺时针转动90。如图1所示 ,一个魔方
的前、后、左、右、上、下各个面分别用A,B,L,R,u,D表示。并以
A,A ,五分别表示A 面顺时针转动90,180,270。。(这时, 相
当于A面逆时针转动90。,亦等于A ),顺便指出,AⅡ表示执行变换
A,n次,类似定义 B ,Lz,Rz,u。,Dz,百,e, ,寸, 。
用 (x,Y,z)毳示魔方26个小立方体的中心其中X,Y,z∈{1,2,
3),如图2所示 。
在变换过程中,有时需要将某些小立体原地翻身或换位翻转。为
此,用 i,j,k表示面向前、右、上 ,i,j, 表示 i,j,k的相反方向。
如图3所示 。
例如 ,i—j,j—k,k—i是将原方块的前面转动到右面 ,右面转
匿2
动到上面,上面转动到前面。
一 个操作串(例如 AuRAB)是一个宏操作。一个有用的宏操作
是宏变换。例如 :DLRuLR是一个宏变换 ,能将 (3,2,1)与(1,2,
1)对换,(3,2,3)与 (1,2,3)对换,其余不变 。
3 求解过程
求解魔方的算法很多,这里我们给 出按层复杂的算法。求解
过程的粗框 图如下 :
圊3
最上层的四边块还原、模块l l
t
最上层的四角块还原、模块2 I
亩
特原来的景上层变为最下层,慎块 3
t
第二层四十边块还原、模块4 f
申
特第三屠四十边块朝上的面变为与
中心块同包、{尊块 5
I
将四