二阶魔方状态转移图与应用 2010.4.15更新
首先建立了所有二阶魔方状态与集合{0,1,...,3674159}的一一对应从而实现了状态转移图的线性存储,达到快速访问的目的。采用BFS,计算所有节点的距离(最少步还原的步数)。
状态转移图有很多用途,这里只实现了两种:
计算各距离下的的状态数(函数ana)最少步还原(函数solve)
时间关系,程序还有许多不足。
有错误请指出,谢谢。
http://bbs.mf8-china.com/images/attachicons/zip.gif Archive.zip (36.39 KB)
/**************************************************/
2010.4.15更新MiniCube.zip
代码进行了优化,占用内存减少。
第一次运行时将距离表写入磁盘,以后运行非常快。
添加180°转算两步的求解。
多重解,每个状态求出所有最少步解。
http://bbs.mf8-china.com/images/attachicons/zip.gif MiniCube.zip (9.28 KB)
[ 本帖最后由 yq_118 于 2010-4-15 09:34 编辑 ] 占楼备用...... 那个,180度算两步的其实只要改一行,原来是尝试18种转动,现在把那行改成尝试12种90度转动即可。。。另外其实我寒假做了和楼主同样的事情,可以参考我那个二阶求解程序。。。 原帖由 铯_猪哥恐鸣 于 2010-4-11 10:07 发表 http://bbs.mf8-china.com/images/common/back.gif那个,180度算两步的其实只要改一行,原来是尝试18种转动,现在把那行改成尝试12种90度转动即可。。。另外其实我寒假做了和楼主同样的事情,可以参考我那个二阶求解程序。。。 改一行不行,改几行还可以。
可以把图写入磁盘,以后就会快很多了。
可惜还缺一个GUI。
期待用循环变换的理论写的程序,不知道效率上有多大提高。 。。。你都搜索了所有状态了,显然就和循环变换扯不上关系了,那是用于因为状态数太多无法全部储存的时候做得剪枝算法。。。 看来二阶魔方这种简单的东西没必要用“循环变换”,但要证明“循环变换”是正确的总要给点东西出来啊。
回复 6# 的帖子
版主回复过了,老程序还不能调试,以后再说~其实我是觉得这个定义挺好的,也不存在是正确,错误之类的。
只是它更像一种方法或思路,有些贴把之吹得过了(尤其是早期的某些贴子里)~
不过魔方就是拿来把玩的,每人有自己的新思路就很好。
看来楼主对 开解正六面体二阶魔方程序 有一定的研究,加精支持!
希望推出功能更强大的后续版本!
支持一下,很好的程序啊! 你知道用了多少内存吗?
粗略看了一下,初始化完成后144632k。;P
大概内存泄露了?还是本来就要这么多?
已经很不错了,加油啊。
页:
[1]
2