最容易为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的立方体 。 并尝试过此代码,它也可以运行。
- 尝试打开URL时,为什么会出现403错误
- java.sql.sqlnontransientconnectionexception:java.net.connectException:在端口上连接到服务器localhost时出错
- 如何指定随机数的范围?
- 比较相同值和相同键集的两个哈希映射?
- 给定WSDL文件,通过Internet使用Web服务的步骤是什么?
- 使用response.sendRedirect方法在java中发送Post请求
- 在Tomcat中,java.lang.LinkageError:从引导类加载器加载JAXB 2.1 API
- 如何在hibernate中使用union执行查询?
- JAXB java.util.Map绑定