为了学校的作业,我得为高峰时间的比赛做一个解决方案。如果你不熟悉高峰时间…检查此链接:http://www.puzzles.com/products/rushhour.htm
对于这个解算器,我必须使用A*搜索算法,我在网上看了一下,我想我很理解这个算法是如何工作的只是我不知道如何在解算器中实现它。也不知道我该如何为汽车建立电网有人能给我一些提示/帮助吗?
不是一个完整的解决方案。。
最佳答案
为了表示汽车的网格,我只需要使用一个矩形的单元格数组,其中每个单元格都用一个整数标记——0表示“空”,并且每辆车都有一个特定的数字,因此网格中的不同汽车将显示为具有相同数字的连续单元格。
此时,您应该能够编写一个函数来返回给定网格中所有可能的“移动”,其中“移动”是从一个网格状态到另一个网格状态的转换——您可能不需要对移动进行更好的表示。
要实现一个*,您需要一个天真的启发式方法来确定一个移动看起来有多好,这样您就知道应该首先尝试哪些移动。我最初会建议,任何移动目标车靠近目标或使空间靠近目标车前部的移动都可能是更好的候选移动正如Will A在评论中所说,除非你正在解决一个1000x1000高峰时段的问题,否则这可能不是什么大问题。
这就是我能想到的所有棘手的部分。