邱志红 发表于 2005-9-21 21:07:46

[原创]一式解万方

<P align=center><FONT size=+4>一式解万方</FONT></P>
<P align=center>作者:邱志红</P>
<P align=right>-------- N 阶魔方的公式解</P><br>  为了得出 N 阶魔方的公式解法,我花了很多心思( 还谈不上心血 )。我是学数学的,于是我就想方设法动用了很多数学工具。为了公式的完美,我又对转动的描述法等作了多次修改。现在以飨读者。
<br>
<P>  首先还是说一下我的方法的优点吧。</P>
<P>  1.它完全可以解 2 阶或以上的立方体魔方。当然不包含联体的魔方。</P>
<P>  2.它不但可以解 N 解魔方的表层,还可以解魔方的内层,从而完全复原魔方。</P>
<P>  3.中心块问题也在该方法的解决范围之内。还有相应的面块问题的解决。</P>
<P>  4.操作可运算,能得到一个操作从不同方位的描述。方便了不同习惯的玩家。</P>
<P>  5.简单易学,容易理解。操作简单有很强的规律性。</P>
<P>  6.变化多样,有待进一步研究和开发。是学习和研究魔方的一手上好的资料。</P>
<P>  7.当然最诱人的是,该方法只使用一个公式( 包括一些必要的变换等 )。</P>
<P>  8.描述法及相关变换对长方体型的魔方也完全适用。</P>
<P align=center><FONT size=+2>目录</FONT></P>
<P>   <FONT color=#ff0000>一、坐标体系</FONT></P>
<P>   <FONT color=#0000ff>二、右手法则</FONT></P>
<P>   <FONT color=#ff0000>三、转动的描述</FONT></P>
<P>   <FONT color=#0000ff>四、操作序列的运算</FONT></P>
<P>   <FONT color=#ff0000>五、操作序列的运算的意义</FONT></P>
<P>   <FONT color=#0000ff>六、旋转及旋转变换</FONT></P>
<P>   <FONT color=#ff0000>七、相似及相似变换</FONT></P>
<P>   <FONT color=#0000ff>八、至关重要的操作</FONT></P>
<P>   <FONT color=#ff0000>九、魔方小块的分类</FONT></P>
<P>   <FONT color=#0000ff>十、N 阶魔方的复原</FONT></P>
<P align=center><FONT color=#ff0000 size=+2>坐标体系</FONT></P>
<P>  N 阶魔方是一个空间的立方体,为了方便研究,我引入了数学里面的坐标系的概念。但不是直接引用常规的笛卡儿直角坐标系。而是我因地制宜而建立的一套新的直角坐标体系。</P>
<P>  它的起点分别在立方体的 6 个面的面心。6 个轴的方向都指向立方体的中心,然后终于各自对面的面心。如下图:( 应该是终于各自对面的面心的,不容易画就没画,见谅 )</P>
<P><IMG src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/001.gif"></P>
<P>  图中的 6 个轴指的方向和一般的笛卡儿直角坐标系是一致的。还是数学里面的方向指向。特别地一般的坐标系是三个坐标轴,每个又分别分为正负两个半轴。这里的坐标系不同,是 6 个轴 ( 全轴非半轴 )。6 个轴指的方向都是各自的正方向,没有负方向。图中 -x 方向不能说是 x 的负方向,只能说是 -x 的正方向。以后说 -x 方向就是指的 -x 的正方向,不在重复了。这样就有 6 个正方向了。</P>
<P>  就这么多了。下面来介绍我关于转动的描述。</P>
<P>  本节完。</P>
[此贴子已经被作者于2005-10-13 10:43:59编辑过]

邱志红 发表于 2005-9-21 22:17:23

<FONT color=#ff0000 size=+2><FONT size=4>
<P  align=center>右手法则<p></p></P></FONT>
<P  align=left><br><FONT color=#000000>  这里插入一节,讲一讲右手法则:右手标架是指伸出右手的大拇指,食指和中指,三者是三垂直的,就象一个坐标架一样。而且令三者分别指代 x,y,z 的正方向,则刚好与笛卡儿直角坐标系是一致的。所以右手标架可以很容易的确定 x,y,z 三个正方向之间的关系,也很形象,便于记忆。如下图: <p></p></FONT></P>
<P align=center></FONT>
<br><IMG src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/006.gif"></P>
<P>  </P>
<P  align=left>各位可以拿出右手来比划比划一下,很容易理解和记忆的。<p></p></P>
<P  align=left>  右手螺旋法则:右手四指握紧,大拇指朝上。然后大拇指指向某个正方向,那么四指弯曲的方向就是该正方向对应的旋转的正方向。如图:<p></p></P>
<P><IMG src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/008.gif"></P>
<P>  </P>
<P  align=left>发现旋转的正方向就是平常所谓的逆时针方向。这样很容易产生混淆。建议:为了学习我的方法就必须该掉习惯,使用右手螺旋法则而不去使用顺逆时针的法则。<p></p></P>
<P  align=left>  本节完。<p></p></P>

[此贴子已经被作者于2006-3-27 12:17:45编辑过]

邱志红 发表于 2005-9-21 22:18:09

<P align=center><FONT color=#ff0000 size=+2>三、转动的描述</FONT></P>
<P>  垂直于 x 方向的有 n 个层。按照其方向,分别称之为 X<SUB>1</SUB>,X<SUB>2</SUB>,1,X<SUB>3</SUB>…… X<SUB>n</SUB>,。再看看 -x 方向。垂直于 -x 方向也有 n 个层。按照其方向。分别称之为 -X<SUB>1</SUB>,-X<SUB>2</SUB>,-X<SUB>3</SUB> …… -X<SUB>n</SUB>、可以发现同一个层有两种表示法、这不是很奇怪的事情。就象 1 可以写为 1 或 -(-1) 一样,是可以理解的。同一个层 X<SUB>a</SUB> 和 -X<SUB>b</SUB> 满足 a+b=n+1. 注意:它们两者的意义是不完全相同的,虽然表示的是同一个层。同理 y,-y,z,-z 方向也如此。</P>
<P>  上段中的 n 与标题中的 N 的意义是一样的,一个方便讨论,一个是做标题的需要,更醒目些。所以不要误解。后面对 n 与 N 是不加区分的。特此说明。</P>
<P>  现在开始讲难理解的部分。有了上一节作铺垫,应该好理解一些了。如上图垂直于 x 方向的 n 个层,如果按右手螺旋法则正方向旋转 n×90 度则记为 X<SUB>a</SUB><SUP>n</SUP>。它是 4 周期的,一般也只取 1,2,3 就可以了。为了记录方便。</P>
<P>    X<SUB>a</SUB><SUP>1</SUP>就将上标 1 省去,简记为X<SUB>a</SUB>。</P>
<P>    X<SUB>a</SUB><SUP>2</SUP>,不变。你要记为X<SUB>a</SUB><SUP>-2</SUP>我也没办法。</P>
<P>    X<SUB>a</SUB><SUP>3</SUP>根据周期性记为 X<SUB>a</SUB><SUP>-1</SUP>,也是省去上标中的 1. 简记为X<SUB>a</SUB><SUP>-</SUP>。</P>
<P>  同样 -x 方向也是一样的。此时的正方向为 -x 方向,与上面的刚好相反,旋转的正方向也相反。如上图垂直于 -x 方向的 n 个层,如果按右手螺旋法则正方向旋转 n × 90 度则记为 -X<SUB>a</SUB><SUP>n</SUP>。上标的处理同上。现在你就会发现同一个层X<SUB>a</SUB>和-X<SUB>b</SUB>满足 a+b=n+1. 它们两者的意义是不完全相同的。如果将它们理解为一个转动过程时就可以看到这一点。如下图:</P>
<P>  我是以面代层的。为了演示的方便,用的是 y 与 -y 方向。发现两者都是描述某一个层的转动,但两者描述的旋转方向是相反的。原因是因为两者转轴的正方向是相反的。两者互为逆操作。于是某一个层转动就有两种描述。例如:X<SUB>a</SUB><SUP>p</SUP>可以描述为-X<SUB>n+1-a</SUB><SUP>-p</SUP>。</P>
<P align=center><IMG src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/002.gif"></P>
<P>  一般的U<SUB>a</SUB><SUP>p</SUP>=-U<SUB>b</SUB><SUP>q</SUP>。满足 a+b=n+1 且 p+q=4t. 其中 U ∈ { X,Y,Z },t ∈ Z.</P>
<P>  多个转动操作就构成一个操作序列。如X<SUB>5</SUB><SUP>2</SUP>-Z<SUB>2</SUB><SUP>-</SUP>X<SUB>1</SUB>Y<SUB>3</SUB><SUP>2</SUP>。</P>
<P>  一个转动有两种描述法,可能大家会觉得很烦琐,但后来会发现这样做是很有必要的,在处理很多问题的时候显得很灵活。更重要的是可以使公式既简洁又系统,还方便了运算。</P>
<P>  下面要讲的东西是前无古人的。就是操作序列的数学运算。也正我引用 X,Y,Z 系统来描述魔方转动的原因。</P>
<P>  本节完。</P>
[此贴子已经被cube_master于2005-9-23 22:19:07编辑过]

邱志红 发表于 2005-9-21 22:18:36

<P align=center><FONT color=#ff0000 size=+2>四、操作序列的运算</FONT></P>
<P>  这里有空间解析几何的知识:右手标架和外积。外积用“ 叉乘 ”:×。内积用“点乘”:·。这里只讲外积。两个矢量 a,b.a × b=c. c 矢量同时垂直 a,b. 且 a,b,c 构成右手系即按右手标架的顺序排列。与 b × a=d 是不同的。d 矢量同时垂直 a,b. 且 b,a,d 构成右手系即按右手标架的顺序排列 .d=-c. 所以外积是满足反交换的。即 a × b=-b × a. 外积是严格讲顺序的。</P>
<P>  由于 X,Y,Z 构成右手系 ( 注意 :X,Y,Z 的顺序不是随意的 .Y,X,Z 就不构成右手系 ), 那么自然有 X×Y=Z, 还可以轮换即 Y×Z=X,Z×X=Y. 这里把 X,Y,Z 都默认为单位矢量,方便了运算。</P>
<P>  按照外积的反交换律 ,Y × X 等我就不多说了。而 X×(-Z)=-X×Z. 计算的时候可以不管前面的“ - ”。于是 X×(-Z)=-X×Z=-(-Y)=Y. 当然还有 X × X=0,Y × Y=0,Z × Z=0. 这就是 X,Y,Z,-X,-Y,-Z 它们之间的“叉乘”关系。</P>
<P>  上面讲的是理论上的,还要兼顾实际。X×X=0,Y×Y=0,Z×Z=0 在实际运用中就有问题,于是这里特别规定 U×(±U)=U.U ∈{X,Y,Z,-X,-Y,-Z}。特别注意:<FONT color=#ff0000>U 是含符号的。</FONT></P>
<P>  上面讲的东西马上就可以应用到操作序列里面。如X<SUB>5</SUB><SUP>2</SUP>-Z<SUB>2</SUB><SUP>-</SUP>X<SUB>1</SUB>Y<SUB>3</SUB><SUP>2</SUP> 。</P>
<P>  那么(X<SUB>5</SUB><SUP>2</SUP>-Z<SUB>2</SUB><SUP>-</SUP>X<SUB>1</SUB>Y<SUB>3</SUB><SUP>2</SUP>)×Y=Z<SUB>5</SUB><SUP>2</SUP>X<SUB>2</SUB><SUP>-</SUP>Z<SUB>1</SUB>Y<SUB>3</SUB><SUP>2</SUP>。是另外的一个操作序列了。运算的时候上标和下标不参与,只是转轴进行运算。可以多次运算,如 (X<SUB>5</SUB><SUP>2</SUP>-Z<SUB>2</SUB>- X<SUB>1</SUB>Y<SUB>3</SUB><SUP>2</SUP>)×Y×X<SUB>2</SUB>。乘的时候严格按顺序来。前面式子中有×X<SUB>2</SUB>。就是连续叉乘两次,即×X×X. 还有叉乘三次的如×Z<SUB>3</SUB>。其实算来和×(-Z)是一样的。这里不证明了。后面由几何意义可以直观明了地看出来。</P>
<P>  下面就来看看其几何意义 ( 也比较难理解 ). 只看一次操作就可以了。如图-Y<SUB>b</SUB>和-Y<SUB>b</SUB>×Z=-X<SUB>b</SUB>的关系。图中没有画 Z 轴和 -Z 轴。还是以面代层 .b 表示某个方向的第 b 层。</P>
<P>  第一和第二图分别代表实际的转动,暂看不出什么。来看第三个图。其实和第二个图意思是一样的,只是方位不同。再看一,三两个图的关系。发现可以看成是转动的位置没变,只是整个坐标系包括 Z 轴和 -Z 轴在内以 Z 方向为轴正转 90 度。这就是× Z 的意义之所在。但实际操作时总还是将坐标系固定。你可能要说是魔方在整体转动,其实魔方也没有动,可以假想为它在动而已。那什么东西动了呢 ? 是看不见的“操作”在动,是某个方法在变化,是属于软件的范畴,所以看不见。看不见但照样可以认识它,通过它造成的影响来认识它。所谓风吹草动,观草动而知风吹,说的就是这个道理。</P>
<P align=center><IMG src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/009.jpg"></P>
<P>  举一个实际的例子可能大家理解得快一点。就说两个相邻的角块的原地自转 1/3 的问题。</P>
<P>  特别声明:没有特别指出时,后面出现的配图及讨论都是相对魔方的原始态 ( 复原态 ) 而言的。</P>
<P align=center><IMG src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/012.gif"></P>
<P>  大家用的方法都不一样,所以我也不好写具体步骤了。就假设作成第一个图中的状态用的是一系列操作 A 吧。这是习惯最后一层在底面完成的人的做法 ( 各位很不幸,我就是这种习惯 ). 而所谓的大部分人都习惯最后一层在顶面完成。如果教的人 ( 我 ) 是用的是左图中的习惯,教的是操作 A, 而你习惯右图中的习惯,该怎么办 ?</P>
<P>  其实好办,用 A×(-X) 就行了,步数是一样多,没有增加步数。再看 A 与 A×(-X), 坐标系是转动的参照,是铁定不会动的。而魔方整体也没动,两次都是红面心朝前,蓝面心朝右,黄面心朝上,一目了然。就是操作动了,导致效果动了。操作 A 叉乘 -X, 就导致操作的效果以 -X 方向为轴轴逆转 90 度。不是正转 90 度。这很容易弄错(我有时候也被弄糊涂了), 要小心。好好理解一下这时候的对应关系吧。操作的效果是反对应的。</P>
<P>  本节完。</P>
[此贴子已经被cube_master于2005-9-23 22:39:04编辑过]

邱志红 发表于 2005-9-21 22:18:55

<p align="center"><font color="#FF0000" size="+2">操作序列运算的意义</font></p>
<br>  上面一节已经隐含地讲了一些意义了。操作序列的运算方便了不同习惯的玩家,使玩家能很容易地把他人的方法转化为符合自己习惯的方法,而且转化方便易行。前提是转动的描述法都使用我提出的转动描述法。即我现在提出的 X,Y,Z 描述系统。即使使用我以前提出的 X,Y,Z 描述系统也是不行的。</p>
<p>  现在盛行的描述法用的是 L( 左 )R( 右 )B( 后 )F( 前 )D( 下 )U( 上 ) 系统。它在三阶魔方转动的描述还算差强人意。一到三阶以上魔方的描述就不行了,版本多而杂。动用了坐标系而不用 XYZ, 简直就一 “四不象”。对于中间的各层的转动描述更是乱而且烂,老是分情况描述,象搞特殊化一样。当然更不可能满足不同习惯的玩家。居然还称之为 “ 魔方术语 ” 充内行。是不是觉得别的描述法都是旁门左道,不够专业,只有该方法才是正统。</p>
<p>  我的描述法的好处大家都有目共睹。不搞特殊化 :2 - n 阶都一样描述,奇数阶和偶数阶也不用分开讨论 ; 转层从 1 - n, 对于奇数阶的正中间层也不单独命名。可运算 :X,Y,Z,-X,-Y,-Z 不但起了区分的作用,而且内部有巧妙的叉乘关系,实现了操作序列之间的运算。便于研究和学习。引用右手法则容易理解和判断,直观形象。还是开发新方法的有力工具。</p>
<p>  所以我认为魔方描述系统的改进势在必行。应该屏弃现行的 L( 左 )R( 右 )B( 后 )F( 前 )D( 下 )U( 上 ) 系统。改用我现在提出的 X,Y,Z 系统。</p>
<p>  再举一个例子吧,还是讲 两个相邻的角块的原地自转 1/3 的问题。如图 ( 内外翻的问题 ).</p>
<p align="center"><img src="UploadFile\2005-9\003.gif"></p>
<p>  老规矩,按我的习惯来。还是假设作成左图中状态用的是一系列操作 A. 那么怎么由 A 得到右图所需的操作序列。当然 A -1 是可以的,但恐怕许多人不习惯逆操作。还有别的方法吗 ? 要用正操作,而且步骤要一样多 ,A 的共轭操作 <img src="UploadFile\2005-9\010.gif">也可以使用。方法是有的,而且不至一种,我这里只说一种,其余的就留给读者吧,这是深入理解操作序列的运算及其原理和作用的好机会,还是深入理解“动与不动”和锻炼思维灵活性的好材料,千万不要错过。</p>
<p>  我提供的方法为 :A×Y<sub>2</sub>×X.</p>
<p>  讲这些是不是有点离题 ? 不会,这只是一个例子而已。是必要的熟练和锻炼。否则后面的讲解无法进行或者都只学到一些死方法。方法总是别人的,不能转化为自己的,几天就又都还给我了。我想要大家学到的是方法的方法,即创造方法的方法,而非方法本身。</p>
<p>  把上面的变换过程称为操作序列的运算有点以偏概全。操作序列的运算不光是这些。所以我就定义以上变换为同构变换。下面就具体来看看同构变换。</p>
<p>  为了方便,操作序列也简称为操作。所以注意一个操作不要误解为就是一步,而应该是一个操作序列,当然包含只有一步的操作序列再内。</p>
<p>  本节完。</p>
[此贴子已经被cube_master于2005-9-21 23:13:37编辑过]

邱志红 发表于 2005-9-21 22:19:13

<P align=center><FONT color=#ff0000 size=+2>旋转及旋转变换</FONT></P><br>  定义 :n 阶魔方的两个操作 A 和 B, 如果有 B=A×U<SUB>1</SUB>×U<SUB>2</SUB>×……×U<SUB>m</SUB>。就说操作 B由操作A旋转出. 记作 A ≈ B. 该变换就称为 旋转变换。其中 U t ∈{ X,Y,Z,-X,-Y,-Z } ,1 ≤ t ≤ m.m 表示变换的次数。
<P>  上面的 m次变换,可看成是作了一个总的变换,简记为 B=A×V. 即× V=×U<SUB>1</SUB>×U<SUB>2</SUB>×……×U<SUB>m</SUB>。上面的式子只是形式上的等式,仅表一种等同关系而已。如果省去第一个“×”写成等式 V= U 1 × U 2 ×……× U m就错了。因为叉积不满足结合律,即 A×B×C≠A×(B×C).</P>
<P>  旋转变换是 n 阶魔方操作之间的一种关系,这种关系具有下面的三个性质:</P>
<P>  1. 反身性: A ≈ A.</P>
<P>  这是因为 A=A × I,I 是循环变换。</P>
<P>  2. 对称性:如果 A ≈ B, 那么 B ≈ A.</P>
<P>  如果 A ≈ B, 那么有 V 使 B=A×V. 令× W=(×V)<SUP>-1</SUP>,就有 A=A×V(×V)<SUP>-1</SUP>=B×V<SUP>-1</SUP>=B×W.</P>
<P>  所以 B ≈ A.</P>
<P>  3. 传递性:如果 A ≈ B, B ≈ C, 那么 A ≈ C.</P>
<P>  已知有 V<SUB>1</SUB>,V<SUP>2</SUB> 使 B=A×V<SUB>1</SUB>,C=B×V<SUB>2</SUB>。令×V3=×V<SUB>1</SUB>×V<SUB>2</SUB>。就有 C=A×V<SUB>1</SUB>×V<SUB>2</SUB>=A×V<SUB>3</SUB>。</P>
<P>  所以 A ≈ C.</P>
<P>  上面的 V,V<SUB>1</SUB>,V<SUB>2</SUB>,V<SUB>3</SUB> 都不一定是一步的。如果×V 是正变换,且 ×V=×U<SUB>1</SUB>×U<SUB>2</SUB>×……×U<SUB>n</SUB>。那么逆变换 (×V)<SUP>-1</SUP>=×(-U<SUB>m</SUB>)×(-U<SUB>m-1</SUB>)×……×(-U<SUB>1</SUB>). 看到括号里面都是带负号的,其实和“逆”是一回事,由几何意义就可以得到。“×”是与转动对应的。比如×Z<SUP>3</SUP>=×Z<SUP>-1</SUP>=×(-Z), 几何意义就是以 Z 方向为轴正转 3 次等同于以 Z 方向为轴逆转 1 次,还等同于以 -Z 方向为轴正转 1 次。这应该很好理解吧。还有× X × (-X)= × (-X 2 )= × I. 是个循环变换。道理也一样。</P>
<P>  反正旋转变换是 n 阶魔方操作之间的一种变换关系。相当于操作的旋转,达到操作效果的旋转,但不改变效果。可连续变换,每次变换,操作的效果都与叉乘对应的旋转相反。比如操作 A × Z × X 2 就是使 A 的操作效果先以 Z 方向为轴逆转 90 度,然后再以 X 方向为轴逆转 180 度 ( 当然与正转 180 度效果一样 ).</P>
<P>  旋转并不改变一个操作内部各步之间的相对关系,即它们之间是相对不动的。只是它们整体转动了。现在应该能理解 “ 什么在动,什么没动了吧 ”.</P>
<P>  下面要讲的操作序列的另外一种关系--相似。</P>
<P>  本节完。</P></SUP>
[此贴子已经被作者于2005-10-13 10:53:06编辑过]

邱志红 发表于 2005-9-21 22:19:44

<p align="center"> <font color="#FF0000" size="+2">相似及相似变换</font></p>
<br>  这里的相似不是引用几何里面的相似,而是引用高等代数里面矩阵的相似。数域 P 上的两个 n 阶矩阵 A 和 B, 如果在数域 P 上存在 n 阶矩阵 X, 使得 B=X -1 AX. 就说 A 相似于 B. 记作 A ~ B.</p>
<p>  类似地我定义 :n 阶魔方的两个操作 A 和 B, 如果在 n 阶魔方中存在操作 X, 使得 B=X<sup>-1</sup>AX. 就说操作 A 相似于操作 B. 记作 A ~ B.</p>
<p>相似是 n 阶魔方操作之间的一种关系,这种关系具有下面的三个性质:</p>
<p>  1. 反身性: A ~ A.</p>
<p>  这是因为 A=E<sup>-1</sup>AE.</p>
<p>  2. 对称性:如果 A ~ B, 那么 B ~ A.</p>
<p>  如果 A ~ B, 那么有 X 使 B=X<sup>-1</sup>AX. 令 Y=X<sup>-1</sup>,就有 A=XBX<sup>-1</sup>=Y<sup>-1</sup>BY. 所以 B ~ A.</p>
<p>  3. 传递性:如果 A ~ B, B ~ C, 那么 A ~ C.</p>
<p>  已知有 X,Y 使 B=X<sup>-1</sup>AX, C=Y<sup>-1</sup>BY. 令 Z=XY, 就有 C=Y<sup>-1</sup>X<sup>-1</sup>AXY=Z<sup>-1</sup>AZ. 因之 A ~ C.</p>
<p>  上面的三点完全是从高等代数课本上面照抄下来的,只字未改。看来两者的性质的确很相似。解释一下,上面的 E 是循环操作,即该操作不改变魔方的状态。还有上面的 X,Y,Z 不是指的前面具体的转动操作,而是一个随意的抽象操作。具体的操作至少有下标如 X 1。而这里的 X 是没有下标的,自然两者就区别开了。</p>
<p>  定义了操作的相似有什么用呢 ? 其实大家总在用,只是没有抽象出相似这样一个概念出来而已。举个例子大家就明白了。还是举 角块原地自转 1/3 的问题作例子吧。如图:</p>
<p align="center"><img src="UploadFile\2005-9\004.gif"></p>
<p>  为了方便观察,我就在顶面来讨论这个问题。还是假设 作成左图中状态用的是操作 A. 如何由 A 得到右图所需的操作。即如何由邻角块原地 自转 1/3 的操作得到面对角块 原地 自转 1/3 的操作。答案是 -X<sub>1</sub>A-X<sub>1</sub><sup>-</sup>(X<sub>3</sub><sup>-</sup>AX<sub>3</sub>). 括号里面的操作实际就是括号外面的操作,只不过看起来更象一个相似操作而已。利用相似还可以得到任何两个角块角块 原地 自转 1/3 的操作。</p>
<p>  原始操作只影响 邻角块两块,那么可以通过一定的操作用别的角块来代替某一个角块的位置,然后再利用 原始操作改变这新的两块,最后通过逆操作还回去。于是就可以影响到任何的两个角块。这恐怕就是大家的想法吧。棱块等的问题也可以同样处理。</p>
<p>  上面说到“ 看起来更象一个相似操作 ”这样的话。其实<font color="#FF0000">相似不是形式上的</font>,只要满足 B=X<sup>-1</sup>AX 就说 A ~ B. 不一定要看起来象。但一定要可以写成该形式,比如 A ~ A( 反身性 ), 还可以理解为 A=EA=(A<sup>-1</sup>A )A=A<sup>-1</sup>(A)A. A ~ A 就与 A ~ X<sup>-1</sup>AX 形式不大一样。</p>
<p>  还有一点大家可能会误解,就是相似变换一定会增加步骤吗 ? 反身性就不谈了,说一般的情况。上面的例子就象是个误导一样。搞得大家都形成了 “ 先添一些步骤,后加上其逆步骤 ” 的思维定势。反过来想相似变换还可以减少步骤。比如 B= X<sup>-1</sup>AX. B 比 A 多两步。做变换 XBX<sup>-1</sup>,就发现 XBX<sup>-1</sup> 其实就等于 A. 不就减少了两步了吗 ? 这可能大家想得到。</p>
<p>  但不添不减照样可以进行相似变换,你可以想象得到吗 ? 一般地,令操作 A=A<sub>1</sub>A<sub>2</sub>.A'=A<sub>2</sub>A<sub>1</sub>。那么 A ~ A'。这是因为 A'=A<sub>2</sub>A<sub>1</sub>=A<sub>1</sub><sup>-1</sup>A<sub>1</sub>A<sub>2</sub>A<sub>1</sub>= A<sub>1</sub><sup>-1</sup>(A<sub>1</sub>A<sub>2</sub>)A<sub>1</sub>=A<sub>1</sub><sup>-1</sup>AA<sub>1</sub>。</p>
<p>  A<sub>1</sub>,A<sub>2</sub>都是操作。也就是:都不一定是一步 .A ~ A' 也就是 A<sub>1</sub>A<sub>2</sub> ~ A<sub>2</sub>A<sub>1</sub>。看起来与 A ~ X<sup>-1</sup>AX 形式完全不同,但却是相似。现在理解了相似不是形式上的了吧。</p>
<p>  A<sub>1</sub>,A<sub>2</sub> ~ A<sub>2</sub>A<sub>1</sub> 是个很有意思的式子。A<sub>2</sub>A<sub>1</sub> 其实就是将 A<sub>1</sub>A<sub>2</sub> 的前若干步 A<sub>1</sub> 移到最后做。一般地,把一个操作 ( 两步或以上 ) 的前几步移至最后,构成另一个操作。这两个操作是相似的。写具体一点就是一个操作 a<sub>1</sub>a<sub>2</sub> … a<sub>t</sub>a<sub>t+1</sub> … a<sub>n-1</sub>a<sub>n</sub> 与另一个操作 a<sub>t+1</sub> … a<sub>n-1</sub>a<sub>n</sub>a<sub>1</sub>a<sub>2</sub> … a<sub>t</sub> 是相似的。这里的 a<sub>1</sub>,a<sub>2</sub>等都是一步一步的。发现这样的相似关系只是步骤的移位得到的。再一次深化了“相似不是形式上的”这样一句话。也应该可以破除“作相似变换一定要添加或减少步骤”的这样的一个思维定势。我称这种特殊的相似为“内禀相似”。意思是该相似就象是操作本身的禀性一样,不需要外部的影响,只要内部变换一下就行了。是内在的属性。</p>
<p>  内禀相似的作用很奇怪,大家可能难以理解,举个例子就是:两个邻角块原地 自转 1/3 需要 X 步 ( 使用的操作为 A), 那么两个面对角块 原地 自转 1/3 需要多少步 ( 使用的操作为 ??)? 估计很多人的答案是:需要 X+2 步 ( 使用的操作为 -X<sub>1</sub>A-X<sub>1</sub><sup>-</sup>). 这也是前面给的答案。而由 内禀相似得到的答案是:只需要 X 步,需要使用的操作视操作 A 的具体情况而定。</p>
<p>  再来分析一下内禀相似,其实它是很占便宜的。看 A'=A<sub>1</sub><sup>-1</sup>AA<sub>1</sub> 就明白了,假如将 A 看成主体,其实 A' 也相当于是在 A 的基础上前后各添加几步.虽然只能是 A 前几步的逆操作,但也能起到一定的变换作用.这样看很能揭示其本质:内禀相似还是在原操作前后各添加步骤,但前面添加的几步又与原操作的前几步完全抵消.这样上段中的问题就好理解多了,也是完全可能的.说它很占便宜是因为抵消的操作是不记入操作序列中的,而且实际转动的时候也是不去做抵消的操作的,自然步数看起来也没有变化.</p>
<p>  相似极易理解,因为它对 LRBFDU 描述系统或其他的描述系统也适用.几乎所有玩魔方的人都能理解和运用.这与同构就不同了,同构只对 X,Y,Z 系统适用,而且还难理解.</p>
<p>  关于相似就这么多了,总体来说:相似变换会改变操作的效果,而且是一种簇内变换,不影响外簇.这样很多不同的问题就可以转化为一个问题,反过来可以由一个簇内操作衍生出多个簇内操作.从而某一簇魔方小块就只要一个簇内操作就可以解决.也是为什么可以“一式解万方”的原因.下面就介绍一个重要的操作,也就是万能公式对应的操作.</p>
<p>  本节完。</p>
[此贴子已经被cube_master于2005-9-22 0:15:01编辑过]

邱志红 发表于 2005-9-21 22:20:09

<P align=center><FONT color=#ff0000 size=+2>至关重要的操作</FONT></P><br> 与其说是一个操作,不如说是一组操作.它扮演着举足轻重的角色.它就是
<br>
<P align=center>Y<SUB>p</SUB>Z<SUB>q</SUB><SUP>-</SUP>-Y<SUB>r</SUB><SUP>-</SUP>Z<SUB>q</SUB>Y<SUB>p</SUB><SUP>-</SUP>Z<SUB>q</SUB><SUP>-</SUP>-Y<SUB>r</SUB>Z<SUB>q</SUB></P>
<P>  上面操作中1 ≤ p,q,r ≤ n. 看到 p,q,r 取不同值,就分别代表不同的操作.该组操作的范围覆盖到角块,棱块,面块及内部各块,也就是所有的小块,N阶魔方的n×n×n个小块.这也是它万能的一个重要原因.</P>
<P>  它可以用一个平面图简单的描述出来,这也是它的一个优越的地方.如图:</P>
<P align=center><IMG src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/007.gif">  </P>
<P>  图中是以面代层的,是以正前面的那个面来看的,涉及到三个层,细箭头指明三个层的方位,粗箭头指明转向,而数字则代表转动的顺序.画得直观形象一点就是下图,其实没什么必要,但还是画出来比较好.相当添加了个后衬,显得有立体感一些而已.</P>
<P align=center><IMG src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/013.jpg">  </P>
<P>  当然图只是起辅助作用,只反映某种情况. p,q,r 取不同值时,就不可能都画出来.图中 p+r &lt; n+1. 还有 p+r &gt; n+1 和特殊的 p+r = n+1 两种情况没有画出来。</P>
<P>  上面的操作很容易就可以熟练掌握,但写起操作起来就显得很烦琐。其实上面的操作可以由 p,q,r 的取值完全确定。因为公式的骨架就是如图所反映出来的样子,是不会改变的。所以可以写为一个函数 H(p,q,r). 即</P>
<P align=center>  H(p,q,r)=<FONT color=#ff0000>Y<SUB>p</SUB></FONT><FONT color=#336600>Z<SUB>q</SUB><SUP>-</SUP><FONT color=#0000ff>-Y<SUB>r</SUB><SUP>-</SUP></FONT>Z<SUB>q</SUB><FONT color=#ff0000>Y<SUB>p</SUB><SUP>-</SUP></FONT>Z<SUB>q</SUB><SUP>-</SUP><FONT color=#0000ff>-Y<SUB>r</SUB></FONT>Z<SUB>q</SUB></FONT></P>
<P>  三种颜色的字符分别指代三个层的转动,并互相区分,更重要的是区分上标与负号。</P>
<P>  将函数命名为函数 H, 是因为转动的三个层摆成 “H” 形。而且该操作转动的前三步的顺序也和 “H” 的笔顺一致。更甚者图中靠左和靠右的两个层开始转动时是由上至下转动,与 “H” 的左右两“竖”也是完全吻合的。与 “H” 唯一的不同是,该操作横向的层开始转动是由右至左的</P>
<P>  这也是该方法的一大优点,玩家只要想到 “H”, 就能很块地知道如何操作了。因为形象所以容易记忆和学习。将所有的操作归结为一个函数 H, 也免去了记忆海量多的公式的痛苦。</P>
<P>  这八下就是该方法的核心,我称该方法为“八转法”,上面的平面图称之为“八转图”(听起来象八阵图,和八阵图一样,它也是奥妙无穷)。它的奥秘在于它不是某一个图,也不是某一类图,八转图的变化是很多样的。下图就是 p+r &gt; n+1 的时候得到的情况,还有 p+r = n+1 的情况, 这个是最容易漏掉的,因为看图的时候总是以为是三个不同的层在转动。还有一点就是它的应用特别少(好象我在 n 阶魔方的复原的时候只用过一次),应用的时候还极容易把人搞糊涂,很多时候那个重合的层该不该转都不清楚。简直可以说是 八转图中的另类。</P>
<P align=center><IMG src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/015.gif"><IMG src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/016.gif"></P>
<P align=left>  其实八转图的奥秘还没完。还有就是各自对应的对称图,我这里就不浪费空间了。</P>
<P align=left>  另外,可以发现,八转法作的是一个簇内变换,因为三个转层转动的角度总的都为零,都是先转出去,最后又转回来。而相似变换也是簇内变换,因为前后添加的步骤是互逆的,那几个转层的转动角度也都是为零的。而旋转变换只改变操作施行的方位,不改操作内部之间的构架。还是一个簇内变换。所以总的来说,我的方法及变换所作的都是簇内变换。那样扰动总消除不掉,所以那些消除扰动的转 90 度的操作是必不可少的。各位不要完全单纯地使用我的方法及变换,还需要知道一点基本的扰动常识。所以这个单另转 90 度的问题不是我方法的问题,而是扰动常识懂多少的问题。</P>
<P>  最后,可能很多人对八转的“八”表示疑虑。转的是八下吗?其实这就是对“一转”的定义的问题。一般的定义是这样的。一转:三阶魔方的一个表层转动而达到一个新的状态的过程。也就是说魔方的一个层转动 90<SUP>0</SUP>,180<SUP>0</SUP>,270<SUP>0</SUP> 都算是一转。但这也是在三阶魔方对表层的六个层来说的,也适用于二阶,而三阶中间层的转动则认为是由相对的两个表层同向转动而得到的,相当于是相对运动,这样做的目的是为了简化描述,因为涉及到的层少啊。但这种方法明显具有时代的局限性,因为发明该描述法的时候只有三阶魔方,讨论最多的当然就是它。但不久就有四阶魔方及 n 阶魔方的概念了,甚至能造出四阶魔方了。该方法就逐渐显露出了极大的不足和致命的缺陷。就是高阶魔方的不同之间层转动如何描述,更重要的是那些层的转动的次数是怎么计算的。它们转动 90 度算是一下还是两下?关于这些问题一般的方法就难以回答。</P>
<P>  鉴于以上问题,我定义,一转: n 阶魔方的某一个层( 3n 个层之一)转动(转动 90<SUP>0</SUP>,180<SUP>0</SUP>,270<SUP>0</SUP>)而达到一个新状态的过程。这里我就没有去区分表层和中间层了。所以八转法转的就是八下。大家要站在长远的高度去思考和定义东西。要不,就如俗话说的“人无远虑,必有近忧”。</P>
<P>  本节完。</P>
[此贴子已经被作者于2005-10-13 10:57:07编辑过]

邱志红 发表于 2005-9-21 22:20:25

<p align="center"><font color="#FF0000" size="+2">魔方小块的分类</font></p>
<br>  在讲 n 阶魔方复原前,还顺便说一下魔方小块的分类,也许和现在常见的分类方法不大一样。但魔方小块的分类大抵是按照性质的不同而分的,也有按照位置的不同来分的。不同的人认识到的性质一样吗?当然由于个人知识水平,认识水平的不同而不同。</p>
<p align="center"><img src="UploadFile\2005-9\005.gif"></p>
<p>  上图是彭伟为了描述扰动性质而进行的分类。下面就讲一讲我的分类,我分类的依据是 H 函数的临界条件。就是 p , q , r 取值不同的时候,性质发生突变时的条件。</p>
<p>  从图中可以看出,我的分类方法是很简单的,奇数阶魔方仅五类而已。即角块,中棱块,侧棱块,面心块和面块。如果是偶数阶的魔方分类更简单,少了中棱块和面心块。仅最基本的角块,面块和侧棱块而已。</p>
<p>  图中的颜色只是用于区分小块的类别,非魔方的真实颜色。文本框也加上颜色,这样容易与图中的颜色对应起来,又有折线将文本框与小块联系起来。读者更容易意识小块是如何分类。为什么将面心块从面块里面独立出来呢?按理说面心块也是面块啊。原因是它相对一般的面块而言性质发生了突变,根本原因是:它与立方体的中心是联系的,而一般的面块则不然。</p>
<p>  下面要讲的复原方法就是按照此分类来依次进行的。</p>
<p align="center"><img src="UploadFile\2005-9\011.jpg"></p>
<p>  本节完。</p>
[此贴子已经被cube_master于2005-9-21 22:36:13编辑过]

邱志红 发表于 2005-9-21 22:20:48

<P align=center><FONT color=#ff0000 size=+2>N 阶魔方的复原</FONT></P><br>  讲到这里,本文已经接近尾声了。你是不是觉得好象才刚开始啊?其实它的确已经快完了。讲了 H 函数,大家只需要分别将 p,q,r 分别取遍 1-n 就可以了。<br><br>
<P>  还是我抛砖引玉,提供一些答案给各位做参考吧。既已分类就按照分类来吧。</P>
<P>  这里就有一个问题,就是 p,q,r 的值如何选取,也即 p,q,r 的值与各类小块之间的关系。其实各类小块都有各自的特征,角块的特征是三个表层的交集。而各个表层从不同的方向看时都可以认为是第一层。同样八个角块从不同的方向看时三个空间坐标都可以认为是 1 ,当然也可以认为是 n 。这样角块的特征值就可以笼统记为(1,n),(1,n),(1,n)。</P>
<P>  括号里面表示或者的关系。而且三个特征值顺序不做要求。为了方便一般就只将小的那一个作为特征值。那么角块的特征值可以简单地认为是 1,1,1 (不论是几阶的都是这样)。以后只要不单独提出来,就默认特征值是指的小的那一个,特此说明。</P>
<P>  而棱块是两个面的交集,发现棱块特征值会出现两个 1 ,还有一个非 1 。同样面块只在某一个面内,面块特征值会出现一个 1 ,还有两个非 1 。特殊地面心块的特征值是 1,(n+1)/2, (n+1)/2 。</P>
<P>  如此推理魔方内部的小块的特征值就都非 1 了。</P>
<P align=center><img src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/014.gif"></P>
<P>  上图就是一个一般的小块,看看图,对于特征值 你也许会好理解一些了。六个 O 就是 N 阶魔方六个表面所在的位置,六个面就不画了,以免产生不必要的干扰。然后从 X 和 -X 两个方向来数小块的位置,就是看两个距离那个短,就取那个短的,并把数读出来。其他的方向也是同样的道理。得到的三个较小值就称为该小块的特征值。</P>
<P>  上面就是由各类小块的位置来确定其特征值,而其实特征值就是 p,q,r 取值的依据。反过来 p,q,r 分别取某组特征值时,由此产生的操作就是针对该特征值所对应的一簇小块。如函数 H ( 1,1,1 )。它的效果是使魔方底面的某三个角位置互换并且三个角还要原地翻转。具体的你自己用 Puzzle 。 2.05 试验一下就知道了,我就不画图了。</P>
<P>  总的来说,小块都是一簇一簇的,属于一簇的小块有如下几个特点:三个特征值是一样的;它们的位置可以互相替代;可以只使用一个公式复原(包括必要的变换),而且公式及变换以后的公式作的都是簇内变换。</P>
<P>  我们称不做任何变换的公式 H ( p,q,r )为原始公式,而经旋转和相似变换以后的公式,我们称之为应用公式。当然原始公式也是可以直接应用的。</P>
<P>   1. 关于角块我只提供几个式子:这里简记 H ( 1,1,1 )为 H.仅用在下面三个式子</P>
<P>    H      (以三阶的举例)      </P>
<P>原始的公式,主要是用来换角(三个)的位置。两个角块互换的问题可以转化为三角互换的问题来解决,原因留给读者吧。</P>
<P>    HX<SUB>1-</SUB>[ <img src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/017.gif">× X]X<SUB>1</SUB>     它的作用是使底面两个对角各自在原地翻转 1/3.</P>
<P>    -X<SUB>1</SUB>HX<SUB>1-</SUB>[ <img src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/017.gif">× X]X<SUB>1-</SUB>X<SUB>1-</SUB>  它的作用变为使底面两个邻角各自在原地翻转 1/3.</P>
<P>   2. 关于棱块我也只提供一个式子,已经足够了 ( 作变换是必要的 ) :</P>
<P>   H(1,q,1)或 H(1,1,r)或 H(p,1,1)三个最基本的公式,注意:2≤p,q,r≤n-1我最喜欢用 H(1,q,1)。作用是使三个特征值一样的三个棱块之间互换。</P>
<P>   特别的中棱块(限奇数阶):</P>
<P>   Y<SUB>1-</SUB>X<SUB>1-</SUB>Y<SUB>1</SUB>[ <img src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/017.gif">( 1,1,<img src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/018.gif">) × X]Y<SUB>1-</SUB>X<SUB>1</SUB>Y<SUB>1</SUB>  是我自己作变换得到的,仅供参考。作用是使底面三个中棱块只位置三交换但不翻转。</P>
<P>   X<SUB>1</SUB>H(1,<img src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/018.gif">,1)X<SUB>1</SUB>           作用是两个中棱块翻转,并且位置三交换。</P>
<P>   3. 关于面块的式子。</P>
      <P><applet code="RevengePlayer.class" codebase=4 width="300" height="300">
        <param name="scrptLanguage" value="SupersetENG">
        <param name="scrpt" value="ML D' MR' D ML' D' MR D ">
        </applet></P>
<P>                     (以四阶的举例)</P>
<P> H(p,1,r)是一个三交换。(2≤p,r≤n-1且n≥4)在纯色里面很容易误认为是两交换。作相似变换是必要的。</P>
<P>   -Z<SUB>p-</SUB>-Y<SUB>1</SUB><SUP>2</SUP>X<SUB>r-</SUB>H(p,1,r)X<SUB>r-</SUB>Y<SUB>1</SUB><SUP>2</SUP>-Z<SUB>p       </SUB>对上式作了一次相似变换,作用是使同层的三个面块三交换,在纯色里面是无意义的操作。(2≤p,r≤n-1且n≥4)</P>
<P>   4. 关于面心块的式子(限奇数阶).</P>
<P>   H(1,<img src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/018.gif">,<img src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/018.gif">)作用是两个相邻的面心块各自在原地转动 90 度。</P>
<P>   5. 关于中心块的式子 ( 限奇数阶 ).</P>
<P>           (以三阶的举例)</P>
<P>   H(<img src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/018.gif">,<img src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/018.gif">,<img src="http://bbs.mf8-china.com/data/attachment/forum/dvbbs/2005-9/018.gif">) 作用是使中心块翻转,由于中心块和各阶的面心块是关联的,导致所有的面心块也一起移位。</P>
<P>  N 阶魔方的表面就这么多就可以了,再次声明,以上的应用公式仅作参考,不用死记。说明白一点,我的复原方法本质上其实是一种构造法:<FONT color=#ff0000>先确定某一簇小块的特征值,然后将特征值代入 H 函数里。得到原始公式,作一个试验观察其对该簇小块产生的效果,然后利用<FONT color=#000000 size=5>旋转</FONT>变换和相似变换得到自己理想的效果。即为应用公式。最后该应用公式就可以直接应用到魔方的复原中了。</FONT>所以,大家只要知道如何准确判断某一簇小块的特征值,灵活运用旋转变换和相似变换就能创造出适合自己的一套方法。该方法满足了不同习惯的玩家的需求。</P>
<P><STRONG><FONT color=#ff0000 size=+3>完 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</FONT></STRONG></P>
[此贴子已经被作者于2005-11-28 13:02:33编辑过]
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: [原创]一式解万方