我需要实现一个扫雷游戏的求解器。我已经开始实现基于规则的代理。我已经实现了一些规则。我有一个启发式函数,用于选择当前处理的单元格(包括周围单元格的信息)最匹配的规则。因此,对于每个选择的单元格,它可以决定是否打开、标记或不对周围的8个单元格进行任何操作。我的意思是,目前,代理会接收到一些已揭示的单元格作为输入,并决定如何处理周围的单元格(目前,代理还不知道如何决定处理哪个单元格)。
我的问题是,应该实现什么算法来决定处理哪个单元格?
假设,第一步,代理会揭示一个角落单元格(或根据第一步的某些规则揭示其他单元格)。之后该怎么办?
我明白我需要实现某种搜索。我知道许多搜索算法(广度优先搜索、深度优先搜索、A星算法等),这不是问题,我只是不明白如何在这里使用这些搜索算法。
我需要按照《人工智能:现代方法》这本书的原则来实现它。
回答:
BFS、DFS和A*在这里可能不合适。这些算法在你对世界有完全了解时规划行动路线时很好用。在扫雷游戏中,你没有这样的知识。
相反,我建议尝试使用书中第三部分的一些逻辑推理技术,特别是使用SAT或第十章的技术。这将使你能够根据诸如“以下八个方格中有一个是地雷,以及以下八个方格中有两个是地雷”这样的信息得出结论。在每一步这样做将帮助你确定地雷的位置,或者意识到在继续之前必须进行猜测。
希望这对你有帮助!