最容易为Rubik的立方体编码算法?

在Java中用于解码Rubik多维数据集的代码是一种相对简单的算法。 效率也很重要,但是次要考虑因素。

我发现的最简单的非平凡算法是这样的:

http://www.chessandpoker.com/rubiks-cube-solution.html

编码看起来并不太难。 Yannick M.的答案中提到的链接看起来也很好,但是“ 十字架 ”步骤的解决方案对我来说可能有点复杂。

您可能希望了解一些开源求解器实现。 这是一个Python实现 。 此Java小程序还包含一个解算器,并且源代码可用。 还有一个Javascript解算器 ,也有可下载的源代码。

安东尼加特林的答案对于Prolog在这项任务中的合适性提出了一个很好的观点。 这是一篇关于如何编写自己的Prolog求解器的详细文章。 它使用的启发式特别有趣。

执行随机操作,直到获得正确的解决方案。 最简单的算法和效率最低的算法。

可能想看看: http : //peter.stillhq.com/jasmine/rubikscubesolution.html

具有解决3x3x3魔方的算法的图形表示

我理解你的问题与Java有关,但从实际角度来看,像Prolog这样的语言更适合像解决魔方的问题。 我认为这可能是一个课程,你可能没有工具选择的余地。

你可以通过BFS(广度优先搜索)来做到这一点。 我认为实现并不那么难(它是图中类别下最简单的算法之一)。 通过使用名为queue的数据结构,你真正要做的就是构建一个BFS树,并找到从给定条件到所需条件的所谓最短路径。 这种算法的缺点是它不够有效(没有任何修改,即使求解2x2x2立方体所需的时间约为5分钟)。 但你总能找到一些提高速度的技巧。

说实话,这是麻省理工学院“ 算法导论 ”课程的作业之一。 这是家庭作业的链接: http : //ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/assignments/MIT6_006F11_ps6.pdf 。 他们有一些库可以帮助您可视化它并帮助您避免不必要的努力。

供您参考,您当然可以看看这个java实现。 – > 使用两阶段算法来解决rubik的立方体 。 并尝试过此代码,它也可以运行。