试试下面这样的24个态是否互不相同:
[java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CU U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CU2 U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CU' U R B L F U' F' L' B' R'[/param]
[/java3]
[java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CR U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CR CU U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CR CU2 U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CR CU' U R B L F U' F' L' B' R'[/param]
[/java3]
[java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF CU U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF CU2 U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF CU' U R B L F U' F' L' B' R'[/param]
[/java3]
[java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF2 U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF2 CU U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF2 CU2 U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF2 CU' U R B L F U' F' L' B' R'[/param]
[/java3]
[java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF' U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF' CU U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF' CU2 U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF' CU' U R B L F U' F' L' B' R'[/param]
[/java3]
[java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CR' U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CR' CU U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CR' CU2 U R B L F U' F' L' B' R'[/param]
[/java3][java3=150,180]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CR' CU' U R B L F U' F' L' B' R'[/param]
[/java3]
看来按照定义得到24个态之后,检查它们是否互不相同这一工作很要紧,比如,4楼最后一个公式 RBR2U'MF'U2MFU'R2B'R',当魔方初态改变取向后,其中四号角周围三棱轮换的另两个态CR CU RBR2U'MF'U2MFU'R2B'R' 和CF' CU' RBR2U'MF'U2MFU'R2B'R' ,居然三者是同态!所以公式RBR2U'MF'U2MFU'R2B'R' 就没有24个同构,对吧?能否看作每三个同态简并之后,24个态就简并为8个同构了?
[java3=150,270]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]R B R2 U' MF' U2 MF U' R2 B' R'[/param]
[/java3]
[java3=150,270]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CR CU R B R2 U' MF' U2 MF U' R2 B' R' CU' CR'[/param]
[/java3]
[java3=150,270]
[param=scrptLanguage]SupersetENG[/param]
[param=scrpt]CF' CU' R B R2 U' MF' U2 MF U' R2 B' R' CU CF[/param]
[/java3]
大致的解释就是,我们可以定义4种“基”对称变换("basic" symmetries):
S_URF3, a 120 degree turn of the cube around an axis through the URF-corner and DBL-corner,
S_F2, a 180 degree turn of the cube around an axis through the F-center and B-center,
S_U4, a 90 degree turn of the cube around an axis through the U-center and the D-center
S_LR2, a reflection at the RL-slice plane.
则所有的对称变换可以表示成
(S_URF3)x1 * (S_F2)x2 * (S_U4)x3 * (S_LR2)x4with x1 from 0..2, x2 from 0..1, x3 from 0..3 and x4 from 0..1.
这样就一共定义了48个变换,此处不妨记为S_0, S_1...S_47
那么某个变换A的对称变换们为
B_i = S_i^-1 A S_i
这样对于某个状态A,就定义了48个不同的状态B_i,它们就是我们说的A的48同构,或者同态(我不知道这两个名词是怎么来的,也不想争论到底用哪个名词,总之我们找到了48个变换)
最后,存在某些变换A,使得B_i = B_j。也就是说并不是每个变换都可以找到48个同构变换,但事实上确实只有少数状态存在少于48个变换,具体这些状态他那个网站里都有。
是的,你说的没错,这就是我给出的那个网页中提到的sym-coordinate。它的做法是:For each equivalence class we store the smallest coordinate as the representant of this class in an integer array
另外通过那个网站我大致知道,事实上利用对称并不能直接减小搜索量,但可以直接减小剪枝表(pruning table)的大小,换句话说,用同样的内存可以做更大的剪枝表,提高搜索效率。