如何解决解决难题的算法,可将棋子移到退出位置
我正在寻找一些建议,建议使用什么好的算法来解决带有Javascript的附加图像上的难题,最好是在算法已记录下来并且可能包含JS示例的情况下。
白色棋子可以一次,四个方向移动到灰色斑点中(如果适合) 当较大的白色棋子到达红色退出点时,游戏结束。
这只是为了好玩。
我正在用Javascript制作它,我将使用p5.js来显示它。 我不是在寻找实际的代码解决方案,这是一个有趣的个人练习。
我过去曾尝试过,但是没有用,我记得它花了很多时间来计算出口路径,但几分钟后却找不到。
所示的拼图是一个非常基本的版本,可以理解这个主意,但是每次绘制的板子都会越来越复杂,例如就像在较大的木板上放很多不同大小的白色块。
我知道我可以尝试 breadth-first-search 算法,尽管如此,我不知道如果董事会规模扩大,它是否仍然适合,例如5x7而不是3x3,我不知道如何估算计算机可以找到最短出口路径的排列数量。
通过BFS,我了解到,从给定的董事会状态来看,我需要探索所有可能的分支,每个分支是一个不同的分支,这可能导致数百万个组合,其中每个组合将探讨如果发生什么情况,给定的对象将移至此处而不是此处。
感谢您的时间和耐心:)
解决方法
根据http://groups.csail.mit.edu/mac/users/bob/sliding-blocks.pdf,滑动难题通常可以在NP完全问题的世界中占据一席之地,这些问题通常比较麻烦且计算量大(如果可以解决)。这说明了为什么您甚至都很难尝试计算路径。
通常没有通用的方法来解决此类问题,因为每个问题都需要特定的量身定制的解决方案。
在您的特定情况下,尽管我建议尝试一种幼稚的路径查找方法,即首先尝试使部件尽可能接近,然后再进行一次移动,然后尝试将部件推离潜在路径“。 / p>
我希望这可以为您指明正确的方向:-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。