我需要实现Minesweeper解算器。我已经开始实现基于规则的代理。 我已经实施了一些规则。我有一个启发式函数,用于为当前单元格(有关周围单元格的信息)选择最佳匹配规则。因此,对于每个选定的细胞,它可以决定8个环境细胞打开它们,标记它们或什么都不做。我的意思是。此时,代理人将一些显示的细胞作为输入,并决定如何处理周围细胞(目前,代理人不知道,如何决定要治疗哪个细胞)。
我的问题是,用什么算法来决定要处理哪个细胞?
假设,对于第一步,代理人将显示一个角落单元格(或其他一些,根据第一步的某些规则)。之后该怎么办?
我知道我需要实现某种搜索。我知道很多搜索算法(BFS,DFS,A-STAR等),这不是问题,我只是不明白我怎么能在这里使用这些搜索。
我需要在人工智能原则中实施它:一种现代方法。
答案 0 :(得分:8)
BFS,DFS和A *可能不适合这里。如果您在完全了解世界的情况下尝试制定行动方案,那么这些算法就很好。在扫雷中,你没有这样的知识。
相反,我建议尝试使用本书第三部分中的一些逻辑推理技术,特别是使用SAT或第10章中的技术。这将让您得出关于地雷使用的事实的结论,例如&# 34;以下八个方格中的一个是地雷,以下八个方格中的两个正好是一个地雷。"在每个步骤中执行此操作将帮助您确定地雷的位置,或者意识到您必须在继续之前猜测。
希望这有帮助!
答案 1 :(得分:0)
我移植了这个(有点帮助)。以下是工作链接:http://robertleeplummerjr.github.io/smartSweepers.js/。这是项目:https://github.com/robertleeplummerjr/smartSweepers.js
玩得开心!