8

我需要实现扫雷求解器。我已经开始实施基于规则的代理。我已经执行了一些规则。我有一个启发式函数,用于为正在处理的当前单元格(包含有关周围单元格的信息)选择最佳匹配规则。因此,对于每个选定的单元格,它可以决定 8 个周围的单元格打开它们、标记它们或什么都不做。我是说。目前,代理获取一些显示的单元格作为输入,并决定如何处理周围的单元格(目前,代理不知道如何决定要处理哪个单元格)。

我的问题是,要实施什么算法来决定要治疗哪个细胞?

假设,对于第一步,代理将显示一个角落单元(或其他一些,根据第一步的某些规则)。之后该怎么办?

我知道我需要实现某种搜索。我知道很多搜索算法(BFS、DFS、A-STAR 等),这不是问题,我只是不明白如何在这里使用这些搜索。

我需要在人工智能原则中实施它:一种现代方法。

4

2 回答 2

8

BFS、DFS 和 A* 在这里可能不合适。如果您在完全了解世界的情况下尝试计划行动方案,那么这些算法非常有用。在扫雷中,你没有这样的知识。

相反,我建议尝试使用本书第三部分中的一些逻辑推理技术,特别是使用 SAT 或第 10 章中的技术。这将让你得出关于矿山在哪里使用诸如“以下之一”之类的事实的结论八个方格是地雷,接下来的八个方格中正好有两个方格是地雷。” 在每一步都这样做将帮助您确定地雷的位置,或者意识到您必须在继续之前猜测。

希望这可以帮助!

于 2012-07-06T21:09:14.770 回答
0

我移植了这个(有一点帮助)。这是它的工作链接:http ://robertleeplummerjr.github.io/smartSweepers.js/ 。这里是项目:https ://github.com/robertleeplummerjr/smartSweepers.js

玩得开心!

于 2015-01-02T21:01:51.167 回答