以编程方式解决Rubik的立方体

Ara*_*han 5 c algorithm rubiks-cube

我正在尝试开发一个用C解决Rubik立方体的程序.我使用了回溯技术.这是一个非常漫长的过程,需要大量的迭代,所以我无法解决它.

请给我关于如何更有效地解决这个问题的建议 - 例如其他技术或采用回溯本身.在谷歌我找到了许多解决这个问题的捷径,但我不想通过使用快捷方式来解决这个问题.

Too*_*the 7

为什么不使用面向人的解决方案并对此进行编程.

你需要一些模式匹配,但它不会那么难.(除了有解决1000x1000x1000的程序).

基本想法是分阶段工作:

  • 第一层
  • 第二层
  • 第三层

对于每一层,您实现了几种将模式X转换为模式X'的算法.一个阶段的每一步都应该使立方体接近解决.您可以通过为每个模式添加一个值来实现此目的(其中更高的值被赋予更多未解决的多维数据集).您还可以添加难度(例如转数),以便您可以根据每个难度的最佳值增益选择算法(或以最小的转弯达到最佳结果).

这种方法的乐趣在于,如果您愿意,可以添加新算法并测试它们的使用频率.因此,您可以测试每种算法的有用性.

如果您真的想要获得那些极客点,请创建一个单独的语言来描述他们正在解决的算法和模式.

  • 对于较大的立方体,比逐层更好的方法是求解中心然后求解边缘并最终求解得到的3x3x3 (2认同)
  • @AndersonGreen,下次我用迪士尼公主来解决立方体;-). (2认同)