yq_118 发表于 2010-4-11 03:12:43

二阶魔方状态转移图与应用 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 编辑 ]

yq_118 发表于 2010-4-11 03:15:24

占楼备用......

铯_猪哥恐鸣 发表于 2010-4-11 10:07:50

那个,180度算两步的其实只要改一行,原来是尝试18种转动,现在把那行改成尝试12种90度转动即可。。。另外其实我寒假做了和楼主同样的事情,可以参考我那个二阶求解程序。。。

yq_118 发表于 2010-4-11 10:29:11

原帖由 铯_猪哥恐鸣 于 2010-4-11 10:07 发表 http://bbs.mf8-china.com/images/common/back.gif那个,180度算两步的其实只要改一行,原来是尝试18种转动,现在把那行改成尝试12种90度转动即可。。。另外其实我寒假做了和楼主同样的事情,可以参考我那个二阶求解程序。。。 改一行不行,改几行还可以。
可以把图写入磁盘,以后就会快很多了。
可惜还缺一个GUI。

期待用循环变换的理论写的程序,不知道效率上有多大提高。

铯_猪哥恐鸣 发表于 2010-4-11 10:44:28

。。。你都搜索了所有状态了,显然就和循环变换扯不上关系了,那是用于因为状态数太多无法全部储存的时候做得剪枝算法。。。

yq_118 发表于 2010-4-11 11:00:28

看来二阶魔方这种简单的东西没必要用“循环变换”,但要证明“循环变换”是正确的总要给点东西出来啊。

superflip 发表于 2010-4-11 17:50:31

回复 6# 的帖子

版主回复过了,老程序还不能调试,以后再说~

其实我是觉得这个定义挺好的,也不存在是正确,错误之类的。  
只是它更像一种方法或思路,有些贴把之吹得过了(尤其是早期的某些贴子里)~

不过魔方就是拿来把玩的,每人有自己的新思路就很好。

ggglgq 发表于 2010-4-13 00:38:47

  
  
    看来楼主对 开解正六面体二阶魔方程序 有一定的研究,加精支持!
  
    希望推出功能更强大的后续版本!
  
  
  

aubell 发表于 2010-4-14 17:54:54

支持一下,很好的程序啊!

aubell 发表于 2010-4-14 19:09:16

你知道用了多少内存吗?
粗略看了一下,初始化完成后144632k。;P
大概内存泄露了?还是本来就要这么多?

已经很不错了,加油啊。
页: [1] 2
查看完整版本: 二阶魔方状态转移图与应用 2010.4.15更新