魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
查看: 3147896|回复: 63
打印 上一主题 下一主题

【原创】东方说:列出2阶全部态只需要几十MB! [复制链接]

银魔

【東方】

Rank: 7Rank: 7Rank: 7

积分
3076
帖子
1699
精华
5
UID
13085
性别
WCA ID
2007FUBO01
兴趣爱好
其它

八年元老

跳转到指定楼层
1#
发表于 2009-11-5 17:06:45 |只看该作者 |倒序浏览
考虑这些的起因是想列出二阶全部的态
那就必然会用到计算机
用程序计算的话肯定要给二阶的状态编码
包括状态编码和转动编码
这样不但方便计算、储存,而且便于校验重复态和统计数据

二阶没有中心和棱,只有8个角
而且每个角都是唯一的
所以只要捏住一个角,比如BLD,通过RUF三个面的转动就可以达到任何状态
并且不会有遗漏的态
因此,只需要给7个角编码就可以了

又因为是通过固定一个角,转动其他角来实现状态转换的
所以其他7个角中,只要确定6个角的位置和方向,最后一个角肯定也是确定的
于是,在我的这套系统里
只需要给6个角编码就可以唯一表示二阶的某个态了

初步想法是用123456编码位置,然后再编码颜色
后来想到了魔方的配色问题
只需要给颜色编码(白=1,黄=2,3。。。6),按某一顺序(顺时针or逆时针)的颜色表示角块
就可以唯一确定角块的位置了,同时方向也自然通过颜色表示了!

又是因为配色的关系,只需要确定顺时针(或逆时针)的两个颜色
就可以知道第三个颜色了!
举例:某角块顺时针是“黄绿x”那x肯定是红色

1~6的二进制分别是:001、010、011、100、101、110
那么表示二阶一个角就是一个六位的二进制数(两个颜色)
刚才说了表示二阶某个太只需要确定6个角
那就是36Bit,也就是4.5Byte(字节)

就算它5字节吧
那1kb可以表示二阶的200个态
1mb可以表示200000多个态
二阶总共400多万个状态,就算他500万,
也不过是25Mb

(楼下更新:如何用程序列出二阶的全部状态表)

银魔

【東方】

Rank: 7Rank: 7Rank: 7

积分
3076
帖子
1699
精华
5
UID
13085
性别
WCA ID
2007FUBO01
兴趣爱好
其它

八年元老

2#
发表于 2009-11-5 17:07:19 |只看该作者
接下来说说如何用计算机程序实现“列举出二阶魔方的全部状态”
状态编码已经说过了
现在介绍一下我的思路,关于“如何实现转动编码”

我的状态转换系统里只有RUF三个面的9种转动:
R、U、F、R'、U'、F'、R2、U2、F2

刚才说了每个状态是用6个角的颜色表示,每个角用2个颜色
但是在计算过程中每个角还是需要用3个颜色表示的,这样便于推导转动后的编码

========================================

【举例】转动R的编码转换:
R的转动实际上就是右边四个角块进行了位置轮换
用我的编码方式来说,就是RUF的三个颜色编码,变成了RUB的颜色编码,并且转换了一下顺序
其他3个角块同样
只需要简单的语句就可以给9种转动进行编码转换定义了

========================================

计算状态转换完成之后,进行重复状态校验
这步很容易,
首先去掉每个角块每个颜色的第三位编码,用转换后状态编码去校对已经存在的状态编码
如有重复,就删除此状态,进入下一步骤
如果没有重复,就进行储存

储存的时候可以给列表分类:
0步态=还原态
1步态=(状态编码。。。。)(状态数量=9)
2步态=(状态编码。。。。)(状态数量=??)
3步态=。。。
。。。。
以此类推

直到进行到了n步态
在计算n+1步态的时候,发现经过9种转动的结果都是重复的态
那么n就是二阶魔方的最远步数
n步态对应的几种状态,就是二阶的最远态
最远态的数量自然也就出来了

列出二阶全部态可以得到以下精确结果:
二阶最远步数是多少?
最远态有几种?分别是什么情况?(直接根据编码就能复制出来)
二阶每个步态有多少种?分别是什么?
当然,二阶总共有多少种状态也被准确的列出来了!

[ 本帖最后由 haohmaru 于 2009-11-5 17:25 编辑 ]

使用道具 举报

银魔

【東方】

Rank: 7Rank: 7Rank: 7

积分
3076
帖子
1699
精华
5
UID
13085
性别
WCA ID
2007FUBO01
兴趣爱好
其它

八年元老

3#
发表于 2009-11-5 17:08:14 |只看该作者
给楼下的理论达人们留个地儿。。。。。

使用道具 举报

透魔

u,小写,但必须叫u大哥。

Rank: 6Rank: 6

积分
6966
帖子
7272
精华
0
UID
45516
性别
保密
居住地
乌克兰

爱心大使 八年元老

4#
发表于 2009-11-5 17:21:46 |只看该作者

第一句就错了

原帖由 haohmaru 于 2009-11-5 17:06 发表
考虑这些的起因是想列出二阶全部的态
那就必然会用到计算机


其实手写也可以
浓硫酸下憋气最小步双脚杂耍扔八个九阶五魔方盲拧谁敢来太原挑战?

使用道具 举报

银魔

小欣然的爸爸

Rank: 7Rank: 7Rank: 7

积分
37843
帖子
34374
精华
15
UID
16477
性别
保密

论坛建设奖 爱心大使 八年元老

5#
发表于 2009-11-5 17:51:44 |只看该作者
占楼仔细学习一下,理论问题以学习为主
天津1群11471969,2群5834223
3群62462688,4群62462702
5群70735234,6群33712046
7群12240584,8群29198783
9群62974165,欢迎加入!

使用道具 举报

银魔

宇宙起源

Rank: 7Rank: 7Rank: 7

积分
3197
帖子
1034
精华
12
UID
564
性别

魔方理论探索者 魔方破解达人 论坛建设奖 六年元老

6#
发表于 2009-11-5 18:43:05 |只看该作者
原帖由 ursace 于 2009-11-5 17:21 发表


其实手写也可以

这句话来头可就大了。。
The Answer to the Ultimate Question of Life, the Universe, and Everything 

使用道具 举报

Rank: 2

积分
318
帖子
317
精华
0
UID
95902
性别
保密
7#
发表于 2009-11-5 18:49:57 |只看该作者
占个前排好学习达人们的理论
努力练习才是王道!!!

使用道具 举报

Rank: 6Rank: 6

积分
5170
帖子
3675
精华
3
UID
1237976
性别

爱心大使

8#
发表于 2009-11-5 19:06:50 |只看该作者
这有点深奥,数学问题呀

使用道具 举报

Rank: 3Rank: 3

积分
663
帖子
544
精华
0
UID
35262
性别
9#
发表于 2009-11-5 19:25:45 |只看该作者
考慮二階魔方共有3674160個狀態,
假如要完整儲存整個魔方狀態,
1個狀態就需要 8個byte
而二階魔方的所有狀態共佔用(3 674 160 x 8byte)=29 393 280byte = 28.03mb(取至小數點後兩個位)

當然,要簡化它的話也不是沒有方法,
簡單的說就是利用魔方的狀態有限制,就像二階不能單單一隻角翻色

使用道具 举报

Rank: 5Rank: 5

积分
4839
帖子
2794
精华
2
UID
77065
性别
居住地
潮州市

六年元老

10#
发表于 2009-11-5 19:46:05 |只看该作者
努力学习,需要时间领会
无忧,无愁,无念,无伤,无哀,无怨……         
    悠然处之

http://i.youku.com/rakacn

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|魔方吧·中文魔方俱乐部

GMT+8, 2024-11-25 15:11

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部