【发布时间】:2018-07-07 00:15:42
【问题描述】:
问题:
在不到 5 秒的时间内(在普通计算机上)计算出随机 24 (5x5) sliding puzzle 的最优解。
我的尝试:
使用带有曼哈顿距离/线性冲突的IDA* 算法作为启发式算法,如here 所述,我的Java 实现可以在不到2 秒的时间内解决一个4x4 (15) 难题。
在 5x5 (24) 拼图上运行相同的实现会在 5 分钟后生成解决方案的路径。
我在想我可以减少搜索空间,从而减少执行时间,首先解决顶行和左列,然后继续解决剩余的 4x4 框。事实证明,这很困难,因为我想不出/设计一个启发式方法可以让 IDA* 及时解决顶部和左侧部分。
【问题讨论】:
-
在很少有人使用 Java 开发的优化世界中,C++ 是更好的选择
-
看过模式数据库吗?
-
@FrankS101 我刚试过模式数据库,而且..他们找到最佳解决方案的速度也很慢
标签: algorithm graph-algorithm heuristics