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


其中m,n,p,q,t∈{1,4}∪{2,5}∪{3,6};且m,n,t三者不在同一颜色组;p,q两者不在同一颜色组。


具体证明请看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 发表 http://bbs.mf8-china.com/images/common/back.gif
如果这个只是用来判断魔方是否装错了的话,那么我可以告诉你这个没用,因为有更简单的方法 。这个并不能用于存储魔方的状态,“色向”是针对每一个块的,每个块在每个位置都有两种方向,选取一个参考系就可以表示为0 ...

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

yjfelix 发表于 2010-5-23 21:28:04

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

原来的方法对于存储是简单,但是新定义能将位置和方向一起处理,有没有用处呢,是不是一种新的算法呢,希望指点

oyyq99999 发表于 2010-5-25 17:10:04

问题是,你这个既有位置信息,又有色向信息,但是没有一个是确定的,你还需要别的数据来完整的表示所有的棱块状态。
传统的色向表示法表示的色向信息是确定的,也需要别的(位置)数据来完整表示所有的棱块状态,色向和位置分离,很清晰。你这种表示法的优点体现在哪里呢?
页: [1]
查看完整版本: 魔方编程高手,来看看棱块色向这样定义对编程是否有利