Graph A*算法与博弈
我正在尝试用lisp实现扫雷器解算器。我知道这不是一个罕见的问题,但我没有找到任何文章可以帮助我解决这个问题。开始时,我有一个雷区作为输入,在未覆盖的区域上有数字。算法应该在找到所有地雷后完成。因此,在每一步中,我必须检查哪些字段可以放在我的矿区列表中,并从我的非矿区列表中选择一个字段并打开它。稍后,我将检查是否已完成我的雷区列表,以及是否完成了“是”算法。我将感谢任何帮助。我不要求源代码,但我需要好的想法。我对这种问题没有经验Graph A*算法与博弈,graph,artificial-intelligence,a-star,2d-games,Graph,Artificial Intelligence,A Star,2d Games,我正在尝试用lisp实现扫雷器解算器。我知道这不是一个罕见的问题,但我没有找到任何文章可以帮助我解决这个问题。开始时,我有一个雷区作为输入,在未覆盖的区域上有数字。算法应该在找到所有地雷后完成。因此,在每一步中,我必须检查哪些字段可以放在我的矿区列表中,并从我的非矿区列表中选择一个字段并打开它。稍后,我将检查是否已完成我的雷区列表,以及是否完成了“是”算法。我将感谢任何帮助。我不要求源代码,但我需要好的想法。我对这种问题没有经验 我必须使用*算法。我不需要打开所有未开封的油田…我需要找到所有雷
我必须使用*算法。我不需要打开所有未开封的油田…我需要找到所有雷区的位置。当然,要做到这一点,它必须是最短的路径。当我找到所有雷区的位置时,算法就完成了。所以,再一次,我需要找到所有具有最佳开放矿场数量的矿场。当然,我需要一个启发式算法来帮助选择一个安全的未打开字段。
每次打开后都需要确定安全未打开字段的列表。所以我需要调用main函数,该函数将检查我是否找到了所有挖掘的字段,如果没有,那么所有安全的相邻未打开的字段都需要添加到路径列表中。将选择具有最佳启发式的路径您不需要a*算法;其目的是在图形中找到最短路径(例如地图中两个位置之间的最短路径,或解决难题的最小移动量)。您可能希望使用一种称为回溯的技术
只要有未打开的字段,就选择一个未打开的字段,该字段位于打开的字段旁边,并暂时将其标记为矿山。然后,查看一个未打开的字段,该字段与前一个字段以及打开的字段相邻,并将该字段标记为地雷,如果这与相邻的数字不矛盾,则将其标记为安全字段。继续。最终,您将查看当前区域周围所有未打开的字段,并找到一种可能的方法将字段标记为安全或不安全。但是,这是基于几个猜测,因此现在需要返回到上一个字段,在那里进行猜测,然后进行相反的猜测,然后再次向前移动,以获得另一个可能的标志组合。然后,再往回走,修正你的猜测,等等。这可以通过递归非常灵活地实现。最终,您将拥有一组可能的标志组合。如果可以找到在所有可能的标志组合中都是安全的字段,请打开该字段。否则,请选择一个在尽可能多的旗帜组合中安全的区域。我在大学一年级时就实现了扫雷器解算器,所以我可以给你一些提示。(这不是使用*算法)
我希望我记得正确,我做了一些证明,为什么5x5区域足以检查,但那是近10年前的事了。+1因为我没有征求意见而不是代码。这是家庭作业吗?A*算法是一种图形算法。你有没有想过如何用图形来表示矿区?