魔方吧·中文魔方俱乐部

标题: 魔方编程高手,来看看棱块色向这样定义对编程是否有利 [打印本页]

作者: yjfelix    时间: 2010-5-21 21:46:55     标题: 魔方编程高手,来看看棱块色向这样定义对编程是否有利

我提出了三阶魔方棱块色向的新定义
棱块色向=该棱块复原所需的最少转动次数
如果某棱块的一面与颜色为p的心块相邻,另一面与颜色为q的心块相邻,称棱块的当前穴为(pq).
如果这个棱块一面的颜色为m,另一面颜色为n,记为棱块(mn).
那么一个任意棱块(mn),位置和方向任意,共有24种情况,通过实际操作找到其复原所需最少转动次数,列于下表,即是该棱块当前的色向值,记为S(pq to mn).



        任意棱块复原所需最少转动次数(*表示不可能出现的情况)

S(pq to mn)


p = m


p =n


p =t


p =m


p = n


p =t


q = n


0


*


1


2


*


1


q = n


2


*


3


4


*


3


q =t


1


2


*


3


2


*


q = t


1


2


*


3


2


*


q = m


*


3


2


*


3


2


q = m


*


3


2


*


3


2




其中mnpqt{14}{25}{36};且mnt三者不在同一颜色组;pq两者不在同一颜色组。


具体证明请看http://bbs.mf8-china.com/viewthread.php?tid=53583&extra=&page=1



[ 本帖最后由 yjfelix 于 2010-5-21 21:51 编辑 ]
作者: yq_118    时间: 2010-5-21 22:19:48

如果这个只是用来判断魔方是否装错了的话,那么我可以告诉你这个没用,因为有更简单的方法 。这个并不能用于存储魔方的状态,“色向”是针对每一个块的,每个块在每个位置都有两种方向,选取一个参考系就可以表示为0,1。
这个有局限性,不能用于角块。

或许这个定义还有其它用途
作者: 小明的马甲    时间: 2010-5-22 01:44:55

定义既然都验证过,应该是正确的。然后就看这个定义的状态表示有什么好处了。我先说一下原来的色相表示方法的好处,对于棱块,每一块要么是0,要么是1,用二进制的一位就可以表示出来。整个魔方的棱块色相用二进制表示也只需12位,外加奇偶校验,只要11位即可表达。按楼主的想法,储存方案就变得很复杂了。。。
作者: yjfelix    时间: 2010-5-23 21:25:48

原帖由 yq_118 于 2010-5-21 22:19 发表
如果这个只是用来判断魔方是否装错了的话,那么我可以告诉你这个没用,因为有更简单的方法 。这个并不能用于存储魔方的状态,“色向”是针对每一个块的,每个块在每个位置都有两种方向,选取一个参考系就可以表示为0 ...


原来的色向只有0或1两种方向,但没有包含块的位置信息呢?也许我的定义不叫色向,叫位向更准确,既有位置又有方向
另外,我的定义出发点不是为了存储魔方状态,是为了在没有块标记,没有复位,没有固定面的情况下求块色向
你觉得有用吗
作者: yjfelix    时间: 2010-5-23 21:28:04

原帖由 小明的马甲 于 2010-5-22 01:44 发表
定义既然都验证过,应该是正确的。然后就看这个定义的状态表示有什么好处了。我先说一下原来的色相表示方法的好处,对于棱块,每一块要么是0,要么是1,用二进制的一位就可以表示出来。整个魔方的棱块色相用二进制表 ...


原来的方法对于存储是简单,但是新定义能将位置和方向一起处理,有没有用处呢,是不是一种新的算法呢,希望指点
作者: oyyq99999    时间: 2010-5-25 17:10:04

问题是,你这个既有位置信息,又有色向信息,但是没有一个是确定的,你还需要别的数据来完整的表示所有的棱块状态。
传统的色向表示法表示的色向信息是确定的,也需要别的(位置)数据来完整表示所有的棱块状态,色向和位置分离,很清晰。你这种表示法的优点体现在哪里呢?




欢迎光临 魔方吧·中文魔方俱乐部 (http://bbs.mf8-china.com/) Powered by Discuz! X2