- 最后登录
 - 2023-8-16
 - 在线时间
 - 3007 小时
 - 阅读权限
 - 100
 - 注册时间
 - 2007-12-3
 - 积分
 - 3923
 - 帖子
 - 2556
 - 精华
 - 6
 - UID
 - 15558
 - 性别
 - 保密
 - WCA ID
 - 2008CHEN27
 - 兴趣爱好
 - 理论
  
 
 
 
    
- 积分
 - 3923
 - 帖子
 - 2556
 - 精华
 - 6
 - UID
 - 15558
 - 性别
 - 保密
 - WCA ID
 - 2008CHEN27
 - 兴趣爱好
 - 理论
 
 
 
 
 
 
 | 
在之前一篇帖子中,我根据某篇国外论文对魔方求解的研究,认为CE的最短步数算法是基于BFS思路的常规A*算法。但是昨天花了半个晚上的时间一行行分析了CE的核心代码(可能是前几年的版本)后发现原来所谓的IDA*算法就是纯BFS加减枝,当然大致的思路还是正确的。基于这点发现,在现在看来,其实CE所谓的IDA*算法和A*根本没什么关系,只是常规的减枝罢了,有理由相信很快就能找到一个更优的,基于用空间换时间的思想的算法。 
 
名词解释: 
BFS:广度优先搜索,优先搜索步数短的节点,即先尝试所有步数为1的状态,然后2,然后3等等。 
DFS:深度优先搜索,优先进行下一步转动(就是先一通乱转),当然在搜索魔方的时候根据上一个帖子的说明限定了转动步数上限。 
剪枝:即在搜索的过程中适当的放弃一些不可行的解。(比如已经转了24步了,那这个状态显然没有继续的必要了) 
 
另注:关于对称性的研究,我所看的CE代码里面并没有处理搜索时碰到的对称性,我认为如果加上这块,程序的效率会提高48倍左右,当然具体还在思考中。 
同时提出一个很久远的问题:有没有一个合适的状态表示方法,使得诸如RUR'与F'U'F这类对称的状态有些相同表示 |   
 
  
 |