有一个相对简单的Java算法来解决魔方,效率也很重要但次要考虑因素。
有一个相对简单的Java算法来解决魔方,效率也很重要但次要考虑因素。
随机进行操作,直到获得正确的解决方案。这是最简单但效率最低的算法。
我找到的最简单的非平凡算法是:
http://www.chessandpoker.com/rubiks-cube-solution.html
这看起来编码起来不太难。Yannick M.的回答中提到的链接也很好,但是“交叉”步骤的解决方案对我来说似乎有点更加复杂。
有许多开源的求解器实现,您可能想要查看一下。这里有一个Python实现。这个Java小程序也包括一个求解器,并且源代码可用。还有一个Javascript求解器,同样有可下载的源代码。
Anthony Gatlin的回答提出了关于Prolog非常适合这项任务的重要观点。这里有一篇详细的文章,介绍如何编写自己的Prolog求解器。它使用的启发式方法特别有趣。
建议查看:http://peter.stillhq.com/jasmine/rubikscubesolution.html
该网页提供了一个图形化算法,用于解决3x3x3魔方。
我理解你的问题是关于Java的,但实际上,像Prolog这样的语言更适合解决魔方问题。不过我猜这可能是为了一个课程,你可能没有选择工具的余地。
供您参考,您可以查看这个Java实现。--> 使用两阶段算法解决魔方。我已经尝试过这段代码,它也可以正常工作。