魔方吧·中文魔方俱乐部
标题: 魔方编程高手,来看看棱块色向这样定义对编程是否有利 [打印本页]
作者: 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 发表
如果这个只是用来判断魔方是否装错了的话,那么我可以告诉你这个没用,因为有更简单的方法 。这个并不能用于存储魔方的状态,“色向”是针对每一个块的,每个块在每个位置都有两种方向,选取一个参考系就可以表示为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 |