文章说: “10.最短步数算法 1. 在当前魔方状态上分别执行12n个动作后,分别获得12n个魔方状态 2. 对12n个状态分别计算所有簇相对于簇终态的簇最短步数及每个状态的所有簇最短步数之和 3. 取一个簇最短步数之和最小的状态作为当前状态,并记录其动作 4. 回到第一步,直到当前状态是魔方目标状态为止。 5. 所有记录下来的动作,即是魔方始/未二态的最短步数” 以3阶为例,为求态A和态N之间的最少步数, 1、对态A分别做UU'RR'……12个动作,得态B1、B2、B3……B12。 2、计算B1-H(子魔方,以下类同)和N-H之间的最少步数k1, 计算B1-M和N-M之间的最少步数k2, 计算B1-A和N-A之间的最少步数k3, K1=k1+k2+k3 。 类似地,由B2得K2,由B3的K3,……由B12得K12 。 3、K1~K12中选最小的一个(有多个的话,任取其一?),它对应的B当作新的初态,比如,选得B1。 4、对(比如)B1分别做UU'RR'……12个动作,……(同上循环)。 我的问题:对(比如)B1应该做U'RR'……11个动作,原因以前说过了。否则万一回到了态A,还是如此这般计算的话,岂不是一开始便可以由A-H、A-M、A-A得3个k?可能我理解错了,那么错的原因是否为:这3个k仅仅是3个步数值,并无具体什么样的一步一步动作;此外这3个k不一定相等,即3个子魔方有各自的k数,因此无法求得整个魔方的最少步数。即使3个k值一样,它们的具体动作串不一定一样或者每一k各自对应于多种路线,这三大把路线要另外“协调”,选出共同的,才可作为整个魔方的最短路线。这样的话,对(比如)B1还是要做12个动作,而且还是要多次循环,不能一上来就计算态A的3个子魔方和态N的3个子魔方之间的3个k值。对吗? ------------------------------------- 此外,文章说:“子魔方的最短步数/最远状态完全制约魔方最短步数/最远状态 ” 这“制约”的具体内容一定较复杂吧?否则听哪个子魔方的?所有子魔方都会施加影响,一定有某种“协议”吧?还有,子魔方的动作就是整魔方的动作(奇阶的H子魔方虽整个架子不动,但其中心块的就地旋转就是整魔方的表层转动),故为何不是“魔方最短步数/最远状态完全制约子魔方的最短步数/最远状态”? |